# random farben



## RulerofDarkness (14. November 2005)

Habne frage ich hab drei textboxen undwill sie mit einer leichten funktion färben.  Also nach zufallszahlenprinzip.

Select Case zahl
Case 1
Textbox1.BackColor = RGB(0, 0, 255)
Case 2
Textbox1.BackColor = RGB(0, 255, 0)
Case 3
Textbox1.BackColor = RGB(255, 0, 0)
Case 4
Textbox1.BackColor = RGB(0, 255, 255)
Case 5
Textbox1.BackColor = RGB(255, 0, 255)
Case 6
Textbox1.BackColor = RGB(255, 255, 0)
Case 7
Textbox1.BackColor = RGB(255, 255, 255)
End Select


dashab ich bis jetzt und ich will das nicht einzeln für jede textbox schreiben danke!
Mit einer Schleife am besten aber dafür müsste sich die textbox1 jedesmal erhöhen.  HILFE :'(


----------



## calvin65 (14. November 2005)

Hallo Ruler,

wenn ich Dich richtig verstanden habe hast du mehrere Textboxen und möchtest denen jeweils dieselbe Farbe zuweisen.
Du könntest zum Beispiel ein Array(?) mit Textboxen erstellen. Dazu musst du nur den Index jeweils setzen und dir merken wieviele Textboxen du hast (anzahlTextboxen)
Also so nach dem Motto, Textbox(i).
Und dann je Farbe:

```
Case 1
   For i=0 to anzahlTextboxen
   Textbox(i).BackColor = RGB(0, 0, 255)
Case 2 
   ...
```

Mfg Calvin


----------



## RulerofDarkness (15. November 2005)

gibt er denn dann alle textboxen verschieden an?

kannst du mir mal zeigen wie das aussehen würde?


----------



## RulerofDarkness (15. November 2005)

ne sry hast mich falsch verstanden wollte verschiedene farben


----------



## Shakie (15. November 2005)

Wenn es dir nicht wichtig ist, dass bei einer bestimmten "Zahl" nicht die Farbe herauskommt, die du angegeben hast, dann könntest du es so machen:

(Bei dir kommt die Farbe Blau bei der Zahl 1, bei mir kommt sie bei 4. Die anderen Farben sind auch vertauscht)


```
Dim Rot As Integer
Dim Blau As Integer
Dim Grün As Integer
If ((Zahl And 1) = 1) Then Rot = 255
If ((Zahl And 2) = 2) Then Grün = 255
If ((Zahl And 4) = 4) Then Blau = 255
 
Textbox1.BackColor = RGB(Rot, Grün, Blau)
```
Damit du diesen Code verstehst musst du allerdings wissen, wie Zahlen im Binärsystem aussehen und wie der Computer Variablen damit im Arbeitsspeicher speichert. Wenn du weißt wie das so ist, dann kann ich dir auch gerne erklären, wie der Code hier funktioniert.


----------



## RulerofDarkness (16. November 2005)

Ich weiß nicht ob ihr vielleicht meine Frage falsch verstanden habt aber ich will das alle drei textboxn färben  und will nicht jedesmal eine neue case anweißung benutzen. Also so etwas in der art:
for i = 1 to (textboxanzahl)
select case farbe
case farbe = 1 
textbox(i).interior.colorindex= farbe.............   




oder so in der art


----------



## mage (16. November 2005)

Schreib dir eine Funktion die als Parameter eine Zufahlszahl bekommt und dir eine Farbe zurück gibt.


----------



## Shakie (16. November 2005)

Also, du willst EINE zufällige Farbe und DREI Textboxen sollen alle diese GLEICHE Farbe bekommen? Da könntest du

mein Codebeispiel erweitern:


```
Textbox1.BackColor = RGB(Rot, Grün, Blau)
Textbox2.BackColor = RGB(Rot, Grün, Blau)
Textbox3.BackColor = RGB(Rot, Grün, Blau)
```

bei deinem Code einfach eine Variable für die Farbe verwenden und diese dann den Textboxen zuweisen:


```
Dim lFarbe As Long
Select Case zahl
Case 1
lFarbe  = RGB(0, 0, 255)
Case 2
lFarbe  = RGB(0, 255, 0)
Case 3
lFarbe  = RGB(255, 0, 0)
Case 4
lFarbe  = RGB(0, 255, 255)
Case 5
lFarbe  = RGB(255, 0, 255)
Case 6
lFarbe  = RGB(255, 255, 0)
Case 7
lFarbe  = RGB(255, 255, 255)
End Select

Textbox1.BackColor = lFarbe
Textbox2.BackColor = lFarbe
Textbox3.BackColor = lFarbe
```
Benutzt du VB oder VB.Net? Sind deine Textboxen zu einem Array zusammengefasst?


----------



## RulerofDarkness (16. November 2005)

wir sind schon kurz vor dem ziel ^^

ich will das so wie du das gemacht hast und das alle textboxen verschiedene farben bekommen. Und nein ein array hab ich nicht gemacht. Ich benutze VBA und bin noch nicht so der beste xD


----------



## Shakie (16. November 2005)

Dann mach doch einfach eine Funktion, die eine zufällige Farbe ermittelt. Und dann rufst du die Funktion dreimal auf und gibst das Ergebnis jeweils an die Hintergrundfarbe der entsprechenden Textbox. So wie es mage vorgeschlagen hat!


----------

