Benutzer-Werkzeuge

Webseiten-Werkzeuge


k20:k20.10:start

20.10 Watcher

Diese Klasse stellt eine Eigenschaft sowie mehrere Ereignisse zur Verfügung. Sie implementiert ein Objekt, das eine übergebene Komponente beobachten kann und löst einige Ereignisse aus, wenn etwas mit dem beobachteten Objekt passiert. Die Kenntnis der ausgelösten Ereignisse ist nützlich, wenn eine Komponente oder ein Container bewegt, verändert, angezeigt oder ausgeblendet wird.

Minisini sagte zum Thema 'Watcher', dass die Klasse Watcher weit vor dem Observer (→ Kapitel 20.18 Observer) entwickelt wurde und letzterer deshalb vorzuziehen ist. Er betonte, dass ein Watcher-Objekt für ein Form-Objekt nonsens wäre, weil eine Form bereits Show()-, Hide()-, Move()- und Resize()-Events hat, weil sie eben für Fenster nützlich sind, für Buttons beispielsweise eher nicht. So verfügt zum Beispiel ein TrayIcon bereits in der Liste seiner Eigenschaften über ein Hide()- und Show()-Event und ein Watcher-Objekt ist deshalb verzichtbar.

20.10.1 Eigenschaft

Die Klasse Watcher besitzt nur eine Eigenschaft. Die Eigenschaft Watcher.Control vom Typ Control gibt mit Watcher.Control.Name den Namen der beobachteten Komponente zurück.

20.10.2 Ereignisse

Die Klasse Watcher verfügt über vier Ereignisse, deren Beschreibung Sie in der nächsten Tabelle finden:

EreignisBeschreibung
HideDas Ereignis wird ausgelöst, wenn die beobachtete Komponente verborgen wird.
MoveDas Ereignis wird ausgelöst, wenn die beobachtete Komponente bewegt wird.
ResizeDas Ereignis wird ausgelöst, wenn die beobachtete Komponente ihre Größe ändert.
ShowDas Ereignis wird ausgelöst, wenn die beobachtete Komponente angezeigt wird.

Tabelle 20.10.2.1 : Events der Klasse Watcher

20.10.3 Projekt

Das Projekt zeigt die Verwendung der vier Ereignisse und der Eigenschaft der Klasse Watcher und hat mehr historischen Wert, denn für reale Projekte würden Sie auf die Klasse Observer zurückgreifen.

' Gambas class file
 
Private wWatcherObject1 As Watcher
Private iBusy As Integer
Private sControlName As String
 
Public Sub Form_Open()
  FMain.Center
  FMain.Resizable = True
  wWatcherObject1 = New Watcher(FMain) As "wWatcher"
  sControlName = "'" & wWatcherObject1.Control.Name & "'"  
End ' Form_Open()
 
Public Sub wWatcher_Show()  
  Message.Info("Das Hauptfenster " & sControlName & " wird angezeigt!")
  Stop Event
End ' wWatcher_Show()  
 
Public Sub wWatcher_Hide()  
  Message.Info("Das Hauptfenster " & sControlName & " wurde versteckt!"))
  Stop Event
End ' wWatcher_Hide()  
 
Public Sub wWatcher_Resize()  
  Inc iBusy
    If iBusy = 1 Then Message.Info("Das Hauptfenster " & sControlName & " hat seine Größe verändert!")
  Dec iBusy
  Stop Event
End ' wWatcher_Resize()  
 
Public Sub wWatcher_Move()
  Inc iBusy
    If iBusy = 1 Then Message.Info("Das Hauptfenster " & sControlName & " hat seine Position geändert!")
  Dec iBusy
  Stop Event  
End ' wWatcher_Move()  
 
Public Sub btnFormMove_Click()
  FMain.X = FMain.X + 100
End ' btnFormMove_Click()
 
Public Sub btnFormResize_Click()
  FMain.H += 50
  FMain.W += (1.333 * 50)
End ' btnFormResize_Click()
 
Public Sub btnFormMin_Click()
  If FMain.Visible Then FMain.Minimized = True
End ' btnFormMin_Click()
 
Public Sub btnFormMax_Click()
  FMain.Maximized = True
End ' btnFormMax_Click()
 
Public Sub btnClose_Click()  
  FMain.Close
End ' btnClose_Click()  

Bild1

Abbildung 20.10.3.1: Projekt Demonstration Watcher

Hinweise:

  • Auch wenn die Form-Komponente bereits in seiner Klassen-Definition über die Show()-, Hide()-, Move()- und Resize()-Events verfügt, war die Form-Komponente ideal für die Demonstration des Einsatzes der Klasse Watcher.
  • Sie können das Programmfenster auch manuell über die Anfasser an den Seiten und in den Ecken vergrößern oder das Programmfenster verschieben, weil jedes Event mit der Anzeige einer MessageBox quittiert wird.
  • Jede angezeigte MessageBox muss geschlossen werden, bevor Sie weiterarbeiten können.
  • Verschieben Sie das Programmfenster oder verändern Sie die Größe des Programmfensters auch über die 4 Button oder mit den drei Button in der Fensterzeile oder mit einem eleganten Doppel-Klick in die Fensterzeile.

Das vollständige Projekt Watcher finden Sie im Download-Bereich.

Download

Die Website verwendet zwei temporäre Session-Cookies. Diese technisch notwendigen Cookies werden gelöscht, wenn der Web-Browser geschlossen wird! Informationen zu Cookies erhalten Sie in der Datenschutzerklärung.
k20/k20.10/start.txt · Zuletzt geändert: 20.06.2016 (Externe Bearbeitung)

Seiten-Werkzeuge