| 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 |
| |
| . |
| |