Forum
Tipps
News
Menu-Icon

VB6 - Labels gleichzeitig blinken lassen

Hallo
Kann mir jemand bei folgendem Problem helfen!!!
Habe 6 ankommende Signale mit 1 und 0
die mit einem Timer abgefragt werden
Diese Signale sind programmiert mit
If Mid(Zustand,1,1,) = 1 Then
      If lbl.1.Backcolor = VBRed Then
         lbl.1.Backcolor = VBWhite
Else    
         lbl.1.Backcolor = VBRed
Dies geschieht mit allen 6 Labels
If Mid(Zustand,2,1,) = "1" Then  u.s.w.
Wenn alle oder mehrer Labels mit 1 aktiviert sind müssen alle immer gleichzeitig blinken,
wie realisiere ich gleichzeitiges blinken

Gruß Tino


Antworten zu VB6 - Labels gleichzeitig blinken lassen:

Was meinst mit Blinken, und wie lang solln die blinken , wann solln sie aufhörn?

Oder meinst du nur die Farbe von Rot auf weis ändern?

Ansonsten wennst ne schleife nimmst isses sicher leichter

For x= 1 to Len(Zustand)
  if mid(Zustand,x,1)=1 then
    If lbl.1.Backcolor = VBRed Then
        lbl.1.Backcolor = VBWhite
    else
        lbl.1.backcolor=Vbred
    endif
  endif
next x

Gruß

Mit blinken meine ich die Farbe wechseln und dies soll in einem Takt funktionieren, die Labels sind nebeneinander angeordnet und es soll nicht das eine von rot nach weiß wechseln wenn das 2 z.B in diesem Augenblick von weiß nach rot wechselt,
Labels müssen so lange blinken wie 1 Bit anliegt, wenn es auf 0 null wechselt geht das Label in den Hintergrund
Danke für den ersten Vorschlag, werd es mal probieren

Gruß Tino

Versteh ich jetzt immer noch ned ganz...

Also wird der Zustand garned angezeigt mit den farben sondern es sollen nur alle Blinken wenn alle den Zustand 1 haben oder wenn X-werte den Zustand 1 haben?

Wen ja probier mal so:

Form-Deklaration:

Dim farbe as string
Dim blink as boolean

farbe="vbred"
blink=false

'Controls:
'Timer1
'Timer2
'lbl1-lbl6

1.timer:
For x= 1 to Len(Zustand)
  if mid(Zustand,x,1)=1 then
    zaehler=zaehler+1
  endif
next x

if zaehler > Xwert then
  blink=true
else
  blink=false
endif

2.timer:
if blink then
  if farbe="vbwhite" then
    farbe="vbred"
  else
    farbe="vbwhite"
  endif

  For x= 1 to Len(Zustand)
    Temp_ctl_name = "lbl" & x
    form_name.controls(temp_ctl_name).Backcolor = farbe
  next x
endif

So sollten die Labels solang die Farbe wechseln(blinken) bis x-zustände < xwert(alle oder mehrere)


Gruß

« Letzte Änderung: 09.03.04, 23:35:40 von Nighty »

Die 6 Labels werden mit 6 verschiedenen Signale angesteuert jeweils mit 1 und 0, jedes Label hat sein eigenes Signal,
die Signale werden mit einem Timer abgefragt, mit
If Mid(Zustand,X,1) werden die 6 Signale definiert,
 
wenn z.B.jetzt Signal 1 und 2 jeweils eine "1" ausgeben sollen Label1 und Label2 anfangen zu blinken (Farbe wechseln), und dieses blinken soll gleichzeitig geschehen u.s.w.
Versuch es mal mit deinen angaben!!
Danke
Gruß Tino

Hi
habe die Angaben probiert funzt nicht ganz
hier mal ein Auszug aus dem Programm,
SchalterZustand wird über Winsock gesendet als UDP-Protokol und ist in 6 Signale definiert, die Abfrage geschieht über den Timer
Wenn Schalterzustand nun für Signal 1 eine"1" bringt geht lblVenoeser in den Vordergrund und wechselt die farbe, Schalterzustand Signal 2 eine"1" wird lblArterieller aktiviert

Private Sub tmrAbfrageServer_Timer()
Dim UDPData As String
UDPData = "Abfrage"
UDPClient.SendData UDPData

End Sub

Private Sub UDPClient_DataArrival(ByVal bytesTotal As Long)
Dim SchalterZustand As String
UDPClient.GetData SchalterZustand

If Mid(SchalterZustand, 1, 1) = "1" Then
        lblVenoeser.BackStyle = 1
        If lblVenoeser.BackColor = vbRed Then
        lblVenoeser.BackColor = vbWhite
    Else
        lblVenoeser.BackColor = vbRed
    End If

Else
        lblVenoeser.BackStyle = 0
       
End If

    If Mid(SchalterZustand, 2, 1) = "1" Then
        lblArterieller.BackStyle = 1
        If lblArterieller.BackColor = vbRed Then
           lblArterieller.BackColor = vbWhite

Else
    lblArterieller.BackColor = vbRed
   
End If
       
Else
        lblArterieller.BackStyle = 0
End If

u.s.w.

Aso jetzt isses schon klarer..bin jetzt nach dem gegangen:

Zitat
Wenn alle oder mehrer Labels mit 1 aktiviert sind müssen alle immer gleichzeitig blinken,

na dann probier so:

Form-Deklaration:

Dim farbe as string
Dim blink as boolean
dim blink_array() as byte

redim blink_array(0)

farbe="vbred"
blink=false



1.timer:
i=0
For x= 1 to Len(Zustand)
  if mid(Zustand,x,1)=1 then
    i=i+1
    if ubound(blinkarray)< i then redim preserve blinkarray(i)
     blinkarray(i)=x
  endif
next x

'im blinkarray stehen alle zustände mit 1 also 3|5|6 zb

if ubound(blinkarray)>0 then
  blink=true
else
  blink=false
endif

2.timer:
if blink then
  if farbe="vbwhite" then
    farbe="vbred"
  else
    farbe="vbwhite"
  endif

  For x= 1 to ubound(blinkarray) 'jetzt 3
    Temp_ctl_name = "lbl" & blinkarray(x) '= lbl3|lbl5|lbl6
    form_name.controls(temp_ctl_name).Backcolor = farbe
  next x
endif

Gruß
« Letzte Änderung: 11.03.04, 00:12:46 von Nighty »

Gute
Programm müßte eigentlich laufen hab aber noch ein
oder zwei Verständnisprbleme!
ReDim blin_array(0)
farbe="VBRed" und blink=false
müssen in Form_Load kommen da
in Deklaration nicht akzeptiert werden
timer1 ist eigentlich klar nur bei blink_array(i)=x
bleibt x stehen oder kommt auch entsprechendes Signal rein?
timer2 komme ich mit Zeile 2 nicht ganz zurecht
Temp_ctl_name? "lbl"& blink_array(x) mit x ist Signal gemieint?

Danke für die Hilfe

Gruß Tino

So habs jetzt doch mal getestet und das mit dem array brauchts garned...

So läufts jetzt mal..

Option Explicit
Dim farbe
Dim blink As Boolean
Dim Zustand As String


Private Sub Form_Load()
farbe = vbRed
blink = False
Timer1.Interval = 1000
Timer2.Interval = 100
Timer1.Enabled = True
Timer2.Enabled = True
End Sub

Private Sub Timer1_Timer()

Zustand_lesen()

If InStr(1, Zustand, "1") > 0 Then
  blink = True
Else
  blink = False
End If

End Sub

Private Sub Timer2_Timer()
Dim x As Integer, temp_ctl_name

If blink Then
  If farbe = vbWhite Then
    farbe = vbRed
  Else
    farbe = vbWhite
  End If
 
  For x = 1 To Len(Zustand)
    temp_ctl_name = "label" & x
    If Mid(Zustand, x, 1) = 1 Then
      Me.Controls(temp_ctl_name).BackColor = farbe
    Else
      Me.Controls(temp_ctl_name).BackColor = &H8000000F
    End If
  Next x
End If
End Sub

-------------

Deine Fragen sind ja in dem Fall fast alle hinfällig ausser du willst es trotzdem noch wissen musst halt bescheid sagen

Variablen belegen musste im Form_Load ..jupp

Gruß

Gute

Hattest recht, die Frage hätte sich erübrigt
wenn ich richtig gelessen hätte, waren nur Schreib.-
und Denkfehler.
Programm funktioniert perfekt!!!!!!!!!

Vielen Dank für die Hilfe

Gruß


« Headerdateien unter Suse /Kdevelopregistry mti VB6 lesen? »
 

Schnelle Hilfe: Hier nach ähnlichen Fragen und passenden Tipps suchen!

Fremdwörter? Erklärungen im Lexikon!
Infrarot
Als Infrarot bezeichnet man einen drahtlosen Datentransfer über infrarotes Licht, kurz IrDA (Infrared Data Association). IrDA-Schnittstellen sind verbreitet in Noteb...

Formatieren
  Das Formatieren einer Festplatte, HDD oder SSD bereitet das Laufwerk auf neue Daten vor. Dazu werden sämtliche alten Daten gelöscht, damit die...

Taktfrequenz
Die Taktfrequenz, oft einfach als Takt, Taktrate oder Taktsignal bezeichnet, bezeichnet die Geschwindigkeit, mit der ein Prozessor oder ein anderes digitales Bauteil arbe...