Blinklicht mit VB

Hallo!

Ich wollte mit einem Timer (oder auch mehreren) eine blinkenden Kreis realisieren! (Kreis soll von Grün auf Rot und immer so weiter hin und her schalten)

Aber ich bekomme es irgendwie nicht hin und auch bei der Suche „Blinklicht mit VB“ mit Google war nicht besonders ergibig! :frowning:

Bild:

http://img377.imageshack.us/img377/8886/blinklichtvb…

Könnte mir einer von euch einen guten Link emphelen oder mir mit dem Quelltext auf die Sprünge helfen?

Verwendetes Programm: Microsoft Visual Basic 6.0
Danke im voraus!

Hallo,

ich habe mal ein einfaches Beispiel gebaut, bei dem die Form im Sekundentakt rot, gelb und blau wird. Verstehst Du den Code, wenn nein, was ist unklar?

Gruß Rainer

Option Explicit

Private Sub Form\_Load()
 Timer1.Interval = 1000
 Timer1.Enabled = True
End Sub

Private Sub Timer1\_Timer()
 Static n As Integer
 n = n + 1
 If n \> 2 Then n = 0
 Select Case n
 Case 0
 Me.BackColor = vbRed
 Case 1
 Me.BackColor = vbYellow
 Case 2
 Me.BackColor = vbGreen
 End Select
End Sub

Hallo Bernd.

Hiermit sollte es funktionieren:

Private Sub Form\_Load()
 Shape1.FillStyle = 0
 Shape1.FillColor = vbGreen
 Timer1.Interval = 1000
 Timer1.Enabled = True
End Sub

Private Sub Timer1\_Timer()
Shape1.FillColor = Shape1.FillColor \* -1 + (vbGreen + vbRed)
End Sub

Kannst Du ja 'mal ausprobieren.

VG
Carsten

OT Form mit ihrem Namen aufrufen
Hallo Rainer,

Angenommen du hast eine Form die z.B. „Form2“ heißt.

Der normale Aufruf wäre dann Form2.show.

Was setzt du für die ??? ein damit Form2 angezeigt wird?

Private Sub Form_Load()
Dim strName
strName = „Form2“
???
Unload Form1
End Sub

Ich weiß seit gestern wie das geht und dabei stand daß das viele Vbaler das nicht wissen,jetzt wollte ich halt mal wissen ob du oder Alex da fitter seid *smile*

Gruß
Reinhard

Hallo Rainer,

Hallo Reinhard,

ich darf doch auch, oder? *ggg*

Angenommen du hast eine Form die z.B. „Form2“ heißt.

Naja normal sollte man Formen schon einen anstaendigen Namen geben :wink:

Der normale Aufruf wäre dann Form2.show.

Jein. Je nachdem ob sie modal oder nicht modal aufgerufen werden soll :wink:

Was setzt du für die ??? ein damit Form2 angezeigt wird?

Private Sub Form_Load()
Dim strName
strName = „Form2“
???
Unload Form1
End Sub

Ok, ich probiere mich mal. Aber mit nen 1 Zeiler bekomme ich das net. Ich brauche dazu schon zwei :s

Private Sub Form\_Load
Dim strName as string
Dim oForm as Form
strName="Form2"
set oForm = vb.forms.add(strname) ' 1 Zeile
oform.show '2 Zeile 
End sub

Ist ungetestet sollte aber klappen.
Welche Variante hast du denn?

Ich weiß seit gestern wie das geht und dabei stand daß das
viele Vbaler das nicht wissen,jetzt wollte ich halt mal wissen
ob du oder Alex da fitter seid *smile*

Naja scheinbar ein wenig schon, denn so kompliziert ist das net :wink:

MfG Alex

Hallo Reinhard,

Was setzt du für die ??? ein damit Form2 angezeigt wird?

mit Hilfe Deiner Variablen?

Nein, da bekomme ich jetzt aus dem Kopf nicht zusammen. :smile:

Gruß Rainer

Hallo Alex,

ich darf doch auch, oder? *ggg*

Mist, vergaß ich zu erwähnen, du darfst natürlich nicht.
Mit dir macht sowas keinen Spass, du weißt das einfach :frowning:

-)))

Ja, ich stiess auch auf die .Add-Variante, wäreich nie darauf gekommen *weiß*

Gruß
Reinhard

Hallo!

Danke für eure/ihre Hilfe, ich werde alle Lösungsansätze ausprobieren und Bericht erstatten!

Nochmals vielen dank für die schnelle und kompetente Hilfe!!! :smile:

Hallo!

Das Programm funktioniert einwandfrei!!! :smile:

Zu meinem Glück fehlt mir jetzt nur noch das Verständnis dieser einen und auch gleichzeitig wichtigsten Programmzeile.

Shape1.FillColor = Shape1.FillColor * -1 + (vbGreen + vbRed)

Könnte(st)(n) Sie/du diese Programmzeile genauer erklären?

Danke im voraus!!!

Zu meinem Glück fehlt mir jetzt nur noch das Verständnis
dieser einen und auch gleichzeitig wichtigsten Programmzeile.

Shape1.FillColor = Shape1.FillColor * -1 + (vbGreen + vbRed)

Könnte(st)(n) Sie/du diese Programmzeile genauer erklären?

Hi Bernd,

ich hab das jetzt nur überflogen.
Hinter vbred und vbgreen verbergen sich zahlenwerte.
Nehmen wir mal an vbred wäre 4711 und vbgreen 4811.
Und dieses Shape1 hat die Fillcolor 4711 oder 4811, ist egal.

dann entspricht

Shape1.FillColor = Shape1.FillColor * -1 + (vbGreen + vbRed)

diesem:

Shape1.FillColor = 4711 * -1 + 47111 + 4811

oder andersrum

Shape1.FillColor = 4811 * -1 + 47111 + 4811

rechne das durch, Ergenis ist immer das andere, also 4711 wird zu 4811 und umgedreht.

Gruß
Reinhard

Hallo Bernd.

Das Programm funktioniert einwandfrei!!! :smile:

Zu meinem Glück fehlt mir jetzt nur noch das Verständnis
dieser einen und auch gleichzeitig wichtigsten Programmzeile.

Shape1.FillColor = Shape1.FillColor * -1 + (vbGreen + vbRed)

Könnte(st)(n) Sie/du diese Programmzeile genauer erklären?

Danke im voraus!!!

Naja, die Erklärung hat Reinhard Dir ja schon gegeben.
Irgendwann war ich mal genervt davon die gleiche Funktionalität immer mit einer If-Then-Abfrage zu machen und dann bin ich auf die Idee mit dieser Berechnung gekommen. Ich bin ein Genie :smile:

(An dieser Stelle noch vielen Dank für die moralische Steicheleinheit)

VG
Carsten

Hallo!

Danke für die hilfreiche Erklärung!

-)