' Include-Datei mit Konstantendefinitionen für Property-, Event-,
' Method- und ControlType-Bezeichner.
'$INCLUDE: 'CUSTINCL.BI'
' Schaltet die Explicit-Option ein, um die Deklaration aller Variablen
' vor dem Einsatz zu erzwingen. Anmerkung: Dies ist eine wahlfreie
' Fehlerbeseitigungstechnik.
OPTION EXPLICIT
' Deklariert Callback-Routinen zum Aufrufen von Methoden und Ereignissen
' und zum Festlegen und Holen von Eigenschaften. Die von diesen
' Callback-Routinen übernommenen Variablennummern und Argumenttypen
' hängen von der aufgerufenen Methode bzw. dem aufgerufenen Ereignis ab.
DECLARE SUB InvokeEvent
DECLARE SUB InvokeMethod
DECLARE SUB GetProperty
DECLARE SUB SetProperty
' Deklariert Callback-Routinen zur Ermittlung des umgebenden Objekts
' eines Steuerelements. Diese Callback-Routine liefert einen
' Steuerelementbezeichner für das umgebende Objekt.
DECLARE FUNCTION GetContainer (BYVAL CID AS INTEGER) AS INTEGER
' Deklariert Callback-Routine zum Festlegen der Steuerelementattribute
' (Zugriffstaste, Verfügbarkeit für Fokus, Fähigkeit zum Auffangen von
' Richtungstasten und Textcursorposition.) Vollständige Informationen
' zur Verwendung dieser Callback-Routine finden Sie im Abschnitt über
' benutzerdefinierte Steuerelemente in der LIESMICH.TXT-Datei.
DECLARE SUB SetAttribute (BYVAL CID AS INTEGER, BYVAL AID AS INTEGER, BYVAL Value AS INTEGER)
' Deklariert eindeutige Callback-Routinen für jeden Eigenschaftsdatentyp zum
' Festlegen und zur Ermittlung von Eigenschaftswerten, indem die die Callback-
' Routinen GetProperty und SetProperty, die jeden Datentyp übernehmen
' können, als Parallelbezeichnungen verwendet werden. Dies sorgt für die
' Typprüfung während der Prozeduraufrufe.
DECLARE SUB GetIntProperty ALIAS "GETPROPERTY" (Value AS INTEGER, BYVAL CID AS INTEGER, BYVAL PID AS INTEGER)
DECLARE SUB GetStringProperty ALIAS "GETPROPERTY" (Value AS STRING, BYVAL CID AS INTEGER, BYVAL PID AS INTEGER)
DECLARE SUB GetLongProperty ALIAS "GETPROPERTY" (Value AS LONG, BYVAL CID AS INTEGER, BYVAL PID AS INTEGER)
DECLARE SUB SetIntProperty ALIAS "SETPROPERTY" (BYVAL value AS INTEGER, BYVAL CID AS INTEGER, BYVAL PID AS INTEGER)
DECLARE SUB SetStringProperty ALIAS "SETPROPERTY" (Value AS STRING, BYVAL CID AS INTEGER, BYVAL PID AS INTEGER)
DECLARE SUB SetLongProperty ALIAS "SETPROPERTY" (BYVAL value AS LONG, BYVAL CID AS INTEGER, BYVAL PID AS INTEGER)
' Deklariert eindeutige Callback-Routinen zum Aufrufen jedes
' Benutzerereignisses, indem die Callback-Routine InvokeEvent, deren
' Variablenargumentanzahl und Datentyp vom aufgerufenen Ereignis abhängt,
' als Parallelbezeichnung verwendet wird. Dies sorgt für Typprüfung
' während der Prozeduraufrufe.
DECLARE SUB InvokeChangeEvent ALIAS "INVOKEEVENT" (BYVAL CID AS INTEGER, BYVAL EID AS INTEGER)
DECLARE SUB InvokeClickEvent ALIAS "INVOKEEVENT" (BYVAL CID AS INTEGER, BYVAL EID AS INTEGER)
DECLARE SUB InvokeCustomEvent ALIAS "INVOKEEVENT" (EventType AS INTEGER, BYVAL CID AS INTEGER, BYVAL EID AS INTEGER)
DECLARE SUB InvokeDblClickEvent ALIAS "INVOKEEVENT" (BYVAL CID AS INTEGER, BYVAL EID AS INTEGER)
DECLARE SUB InvokeDragDropEvent ALIAS "INVOKEEVENT" (BYVAL SourceCID AS INTEGER, X AS SINGLE, Y AS SINGLE, BYVAL CID AS INTEGER, BYVAL EID AS INTEGER)
DECLARE SUB InvokeDragOverEvent ALIAS "INVOKEEVENT" (BYVAL SourceCID AS INTEGER, X AS SINGLE, Y AS SINGLE, State AS INTEGER, BYVAL CID AS INTEGER, BYVAL EID AS INTEGER)
DECLARE SUB InvokeDropDownEvent ALIAS "INVOKEEVENT" (BYVAL CID AS INTEGER, BYVAL EID AS INTEGER)
DECLARE SUB InvokeGotFocusEvent ALIAS "INVOKEEVENT" (BYVAL CID AS INTEGER, BYVAL EID AS INTEGER)
DECLARE SUB InvokeKeyDownEvent ALIAS "INVOKEEVENT" (KeyCode AS INTEGER, Shift AS INTEGER, BYVAL CID AS INTEGER, BYVAL EID AS INTEGER)
DECLARE SUB InvokeKeyPressEvent ALIAS "INVOKEEVENT" (KeyAscii AS INTEGER, BYVAL CID AS INTEGER, BYVAL EID AS INTEGER)
DECLARE SUB InvokeKeyUpEvent ALIAS "INVOKEEVENT" (KeyCode AS INTEGER, Shift AS INTEGER, BYVAL CID AS INTEGER, BYVAL EID AS INTEGER)
DECLARE SUB InvokeLoadEvent ALIAS "INVOKEEVENT" (BYVAL CID AS INTEGER, BYVAL EID AS INTEGER)
DECLARE SUB InvokeLostFocusEvent ALIAS "INVOKEEVENT" (BYVAL CID AS INTEGER, BYVAL EID AS INTEGER)
DECLARE SUB InvokeMouseDownEvent ALIAS "INVOKEEVENT" (Button AS INTEGER, Shift AS INTEGER, X AS SINGLE, Y AS SINGLE, BYVAL CID AS INTEGER, BYVAL EID AS INTEGER)
DECLARE SUB InvokeMouseMoveEvent ALIAS "INVOKEEVENT" (Button AS INTEGER, Shift AS INTEGER, X AS SINGLE, Y AS SINGLE, BYVAL CID AS INTEGER, BYVAL EID AS INTEGER)
DECLARE SUB InvokeMouseUpEvent ALIAS "INVOKEEVENT" (Button AS INTEGER, Shift AS INTEGER, X AS SINGLE, Y AS SINGLE, BYVAL CID AS INTEGER, BYVAL EID AS INTEGER)
DECLARE SUB InvokePaintEvent ALIAS "INVOKEEVENT" (BYVAL CID AS INTEGER, BYVAL EID AS INTEGER)
DECLARE SUB InvokePathChangeEvent ALIAS "INVOKEEVENT" (BYVAL CID AS INTEGER, BYVAL EID AS INTEGER)
DECLARE SUB InvokePatternChangeEvent ALIAS "INVOKEEVENT" (BYVAL CID AS INTEGER, BYVAL EID AS INTEGER)
DECLARE SUB InvokeResizeEvent ALIAS "INVOKEEVENT" (BYVAL CID AS INTEGER, BYVAL EID AS INTEGER)
DECLARE SUB InvokeTimerEvent ALIAS "INVOKEEVENT" (BYVAL CID AS INTEGER, BYVAL EID AS INTEGER)
DECLARE SUB InvokeUnloadEvent ALIAS "INVOKEEVENT" (Cancel AS INTEGER, BYVAL CID AS INTEGER, BYVAL EID AS INTEGER)
' Deklariert eindeutige Callback-Routinen zum Aufrufen jeder Methode für
' benutzerdefinierte Steuerelemente, indem die Callback-Routine
' InvokeMethod, deren Variablenargumentanzahl und Datentyp von der
' aufgerufenen Methode abhängen, als Parallelbezeichnung verwendet
' wird. Dies sorgt für Typprüfung während der Prozeduraufrufe.
DECLARE SUB InvokePrintMethod ALIAS "INVOKEMETHOD" (BYVAL CurrX AS INTEGER, BYVAL CurrY AS INTEGER, BYVAL FColor AS INTEGER, BYVAL BColor AS INTEGER, Text AS STRING, BYVAL NumArgs AS INTEGER, BYVAL CID AS INTEGER, BYVAL MthID AS INTEGER)
DECLARE SUB InvokePrintFormMethod ALIAS "INVOKEMETHOD" (BYVAL NumArgs AS INTEGER, BYVAL CID AS INTEGER, BYVAL MthID AS INTEGER)
DECLARE SUB InvokeCLSMethod ALIAS "INVOKEMETHOD" (BYVAL NumArgs AS INTEGER, BYVAL CID AS INTEGER, BYVAL MthID AS INTEGER)
DECLARE SUB InvokeHideMethod ALIAS "INVOKEMETHOD" (BYVAL NumArgs AS INTEGER, BYVAL CID AS INTEGER, BYVAL MthID AS INTEGER)
DECLARE SUB InvokeShowMethod ALIAS "INVOKEMETHOD" (BYVAL Modal AS INTEGER, BYVAL NumArgs AS INTEGER, BYVAL CID AS INTEGER, BYVAL MthID AS INTEGER)
DECLARE SUB InvokeRefreshMethod ALIAS "INVOKEMETHOD" (BYVAL NumArgs AS INTEGER, BYVAL CID AS INTEGER, BYVAL MthID AS INTEGER)
DECLARE SUB InvokeMoveMethod ALIAS "INVOKEMETHOD" (BYVAL mLeft AS INTEGER, BYVAL mTop AS INTEGER, BYVAL mWidth AS INTEGER, BYVAL mHeight AS INTEGER, BYVAL NumArgs AS INTEGER, BYVAL CID AS INTEGER, BYVAL MthID AS INTEGER)
DECLARE SUB InvokeSetFocusMethod ALIAS "INVOKEMETHOD" (BYVAL NumArgs AS INTEGER, BYVAL CID AS INTEGER, BYVAL MthID AS INTEGER)
DECLARE SUB InvokeDragMethod ALIAS "INVOKEMETHOD" (BYVAL Action AS INTEGER, BYVAL NumArgs AS INTEGER, BYVAL CID AS INTEGER, BYVAL MthID AS INTEGER)
'Weckzeit wird modulübergreifend
'global als dynamische Zeichenkette verwaltet, daher ist für
'alle Instanzen der Uhr nur eine einheitliche Weckzeit
'verwaltbar
Dim Shared AlarmZeit As String
FUNCTION Uhr_CClick(Ctrl as Control, ByVal ControlId as Integer) AS INTEGER
Dim Zeit As String
Dim Titel As String
Dim Meldung As String
Titel = "Alarmzeit"
Meldung = "Geben Sie die Zeit im Format [HH:MM] an, zu der "
Meldung = Meldung + "Sie an einen bestimmten Termin "
Meldung = Meldung + "erinnert werden wollen!"
If AlarmZeit ="" Then
'Alarmzeit setzen
AlarmZeit = InputBox$(Meldung, Titel, "00:00")
Else
'Sofern bereits eingegeben, Alarmzeit als
'Vorgabezeichenkette übernehmen
AlarmZeit = InputBox$(Meldung, Titel, AlarmZeit)
End If
'(vgl. Auswertung in Timer-Ereignisprozedur)
Uhr_CClick = 0
END FUNCTION
FUNCTION Uhr_CDblClick(Ctrl as Control, ByVal ControlId as Integer) AS INTEGER
'Weckzeit löschen
Dim Antwort As Integer
Dim Meldung As String
Dim Titel As String
Dim CrLf As String * 2
If AlarmZeit<>"" Then
'nur ausführen, wenn Alarmzeit bereits definiert wurde
CrLf = Chr$(13)+Chr$(10)
Titel = "Alarmzeit"
Meldung = "Wollen Sie die aktuell festgelegte Alarmzeit "+ CrLf
Meldung = Meldung +"["+AlarmZeit+"] löschen?"
'Sicherheitsabfrage
Antwort = MsgBox(Meldung, 4, Titel)
'Löschen wurde quittiert!
If Antwort = 6 Then
'Alarmzeit löschen
AlarmZeit = ""
End If
End If
Uhr_CDblClick = 0
END FUNCTION
FUNCTION Uhr_CTimer(Ctrl as Control, ByVal ControlId as Integer) AS INTEGER
Dim I As Integer
DIM J As Integer
Dim CrLf As String * 2
CrLf =Chr$(13)+Chr$(10)
'Ausgabebereich löschen
Ctrl.Cls
'Zeit ausgeben
If AlarmZeit = "" Then
Ctrl.Print Time$
Else
'falls Weckzeit definiert, Zeitausgabe mit Stern
'in zweite Zeile die Weckzeit ausgeben
'(diese wird nur sichtbar, falls das Steuerelement