Ampel

CodeModul, KlassenModul
Herkömmliche Realisierung mit Codemodul Benutzen eines Klassenmoduls
   ' Referenzierung des Objekts.
Private ampel As CAmpel
Private Sub Form_Load() Private Sub Form_Load()
 ' Breite und Höhe des Formulars.  ' Breite und Höhe des Formulars.
 Me.Width = 1300  Me.Width = 1300
 Me.Height = 3100  Me.Height = 3100
 ' Durchgehendes Füllmuster.   ' Instanzierung des Objekts.
 Me.FillStyle = vbSolid  Set ampel = New CAmpel
 ' Zu Beginn Ampel auf Rot.  ' Zu Beginn Ampel auf Rot.
 z = 0  Call ampel.initAmpel(Me, 0, 0)
 ' Los geht's.  ' Los geht's.
 Call Timer1_Timer  Timer1.Interval = 1
End Sub End Sub
Private Sub Timer1_Timer() Private Sub Timer1_Timer()
  ' Zeiten der Ampelphasen.   ' Zeiten der Ampelphasen.
 Call changeState(2000, 1500, 1000)  Call ampel.changeState(Timer1, 2000, 1500, 1000)
End Sub End Sub
Private Sub Form_Click() Private Sub Form_Click()
 Unload Me  Unload Me
End Sub End Sub
  Private Sub Form_Unload(Cancel As Integer)
 Set ampel = Nothing
End Sub
Codemodul Klassenmodul CAmpel
Option Explicit Option Explicit
Const xp = 0, yp = 0    ' Position linke obere Ecke (in Twips). Private xp%, yp%, z%
Public z%                    ' Zustandsvariable für die Farbe. Private frm As Form
  Public Sub initAmpel(f As Form, x%, y%)
 Set frm = f
 frm.FillStyle = vbSolid
 xp = x: yp = y
End Sub
Public Sub changeState(tRot%, tGelb%, tGrün%) Public Sub changeState(tim As Timer, tRot%, tGelb%, tGrün%)
 '  Ändert Ampelzustand.  '  Ändert Ampelzustand.
 '  Als Parameter werden Schaltzeiten der drei Phasen übergeben.  '  Als Parameter werden Schaltzeiten der drei Phasen übergeben.
Select Case z Select Case z
Case 0: drawAmpel vbRed, vbButtonFace, vbButtonFace Case 0: drawAmpel vbRed, vbButtonFace, vbButtonFace
             frmAmpel.Timer1.Interval = tRot               tim.Interval = tRot
Case 1: drawAmpel vbButtonFace, vbYellow, vbButtonFace Case 1: drawAmpel vbButtonFace, vbYellow, vbButtonFace
             frmAmpel.Timer1.Interval = tGelb               tim.Interval = tGelb
Case 2: drawAmpel vbButtonFace, vbButtonFace, vbGreen Case 2: drawAmpel vbButtonFace, vbButtonFace, vbGreen
             frmAmpel.Timer1.Interval = tGrün               tim.Interval = tGrün
End Select End Select
 z = z + 1  z = z + 1
 If z = 3 Then z = 0  If z = 3 Then z = 0
End Sub End Sub
 ' Zeichnet Ampel.  ' Zeichnet Ampel.
Private Sub drawAmpel(fO&, fM&, fU&) Private Sub drawAmpel(fO&, fM&, fU&)
 ' Als Parameter werden die Farben der drei Lampen übergeben.  ' Als Parameter werden die Farben der drei Lampen übergeben.
 ' Ampelkasten.  ' Ampelkasten.
 frmAmpel.Line (xp, yp)-(xp + 800, yp + 1800), vbBlack, BF  frm.Line (xp, yp)-(xp + 800, yp + 1800), vbBlack, BF
  ' Füllfarbe obere Lampe.   ' Füllfarbe obere Lampe.
 frmAmpel.FillColor = fO  frm.FillColor = fO
 frmAmpel.Circle (xp + 40, yp + 30), 25  frm.Circle (xp + 40, yp + 30), 25
  ' ... mittlere Lampe.   ' ... mittlere Lampe.
 frmAmpel.FillColor = fM  frm.FillColor = fM
 frmAmpel.Circle (xp + 40, yp + 90), 25  frm.Circle (xp + 40, yp + 90), 25
  ' ... untere Lampe.   ' ... untere Lampe.
 frmAmpel.FillColor = fU  frm.FillColor = fU
 frmAmpel.Circle (xp + 40, yp + 150), 25  frm.Circle (xp + 40, yp + 150), 25
End Sub End Sub
.

 Ranking-Hits zurück Sitemap
Designed by www.wbrnet.info