Festlegen von Eigenschaften zur Laufzeit
Unter Verwendung des Objektmodells in Visual FoxPro lassen sich die Eigenschaften zur Laufzeit sehr gut steuern.
Verweisen auf Objekte in der Objekthierarchie
Möchten Sie ein Objekt bearbeiten, dann müssen Sie es in Bezug zur Containerhierarchie identifizieren. Auf der höchsten Ebene der Containerhierarchie (Formularsatz oder Formular) müssen Sie auf die Objektvariable verweisen. Sofern Sie nicht die NAME-Klausel des DO FORM-Befehls verwenden, stimmt der Name der Objektvariablen mit dem Namen der SCX-Datei überein.
Eigenschaften können durch Verweisen auf die Objektvariable, das Steuerelement und die Eigenschaft geändert werden. Diese werden durch Punkte (.) getrennt:
objectvariable.[form.]control.property = SettingObjectvariable
In der folgenden Liste werden die Eigenschaften oder Schlüsselwörter aufgeführt, die das Verweisen auf ein Objekt in der Objekthierarchie erleichtern:
Eigenschaft oder Schlüsselwort | Verweis (Reference) |
---|---|
ActiveControl | Das Steuerelement in dem derzeit aktiven Formular, das gerade den Fokus besitzt |
ActiveForm | Das derzeit aktive Formular |
ActivePage | Die aktive Seite des derzeit aktiven Formulars |
Parent | Der unmittelbare Container des Objekts |
THIS | Das Objekt oder eine Prozedur bzw. Ein Ereignis des Objekts |
THISFORM | Das Formular, das das Objekt enthält |
THISFORMSET | Der Formularsatz, der das Objekt enthält |
Wenn Sie z. B. die Beschriftung einer Befehlsschaltfläche ändern möchten, die sich im Formular frmCust
befindet, wobei dieses wiederum im Formularsatz Custview.scx enthalten ist, können Sie in einem Programm oder im Befehlsfenster den folgenden Befehl verwenden:
CustView.frmCust.cmdButton1.Caption = "Edit"
Mit Hilfe der Schlüsselwörter THIS, THISFORM und THISFORMSET können Sie auf Objekte in einem Formular verweisen. Wenn Sie z. B. die Beschriftung einer Befehlsschaltfläche ändern möchten, sobald auf die Schaltfläche geklickt wurde, dann fügen Sie folgenden Befehl in den Code für das Click-Ereignis der Befehlsschaltfläche ein:
THIS.Caption = "Edit"
Die folgende Tabelle enthält Beispiele dazu, wie die Objekteigenschaften über THISFORMSET, THISFORM, THIS und Parent festgelegt werden können.
Befehl | Wo muss der Befehl eingefügt werden? |
---|---|
|
Ereignis- oder Methodencode eines beliebigen Steuerelements in einem Formular oder Formularsatz mit Ausnahme von frm1 . |
|
Ereignis- oder Methodencode eines beliebigen Steuerelements mit Ausnahme von cmd1 in demselben Formular, in dem cmd1 enthalten ist. |
|
Im Ereignis- oder Methodencode des Steuerelements, dessen Beschriftung geändert werden soll. |
|
Im Ereignis- oder Methodencode eines Steuerelements in einem Formular. Der Befehl ändert die Hintergrundfarbe des Formulars in dunkelrot. |
Festlegen von Eigenschaften zur Laufzeit mit Hilfe von Ausdrücken
Sie können Eigenschaften zur Laufzeit auch unter Verwendung von Ausdrücken oder Funktionen einstellen.
So legen Sie Eigenschaften zur Laufzeit auf Ausdrücke fest
Weisen Sie der Eigenschaft einen Ausdruck zu.
- Oder -
Weisen Sie der Eigenschaft das Ergebnis einer benutzerdefinierten Funktion zu.
Sie können z. B. die Beschriftung einer Schaltfläche je nach dem Wert einer Variablen entweder auf Bearbeiten oder auf Speichern einstellen. Deklarieren Sie die Variable im aufrufenden Programm für Ihr Formular:
PUBLIC glEditing glEditing = .F.
Verwenden Sie danach in der Caption-Einstellung einen IIF-Ausdruck:
frsSet1.frmForm1.cmdButton1.Caption = ; IIF(glEditing = .F., "Edit", "Save")
Sie können die Größe einer Schaltfläche festlegen und die Beschriftung über Ausdrücke setzen, die Felder aus einer Tabelle enthalten:
* set button width to length of 'Call ' + first and last names
frmForm1.cmdButton1.Width = 5 + ;
LEN(ALLTRIM(employee.first_name + " " + employee.last_name))
* set button caption to 'Call ' + first and last names
frmForm1.cmdButton1.Caption = "Call " + ;
ALLTRIM(employee.first_name + " " + employee.last_name)
Sie können die Beschriftung auch mit einer benutzerdefinierten Funktion festlegen:
frsSet1.frmForm1.cmdButton1.Caption = setcaption()
Einstellen mehrerer Eigenschaften
Es können auch mehrere Eigenschaften gleichzeitig eingestellt werden.
So setzen Sie mehrere Eigenschaften
Verwenden Sie hierzu die WITH ... ENDWITH-Struktur.
Möchten Sie z. B. mehrere Eigenschaften einer Spalte innerhalb eines Datenrasters in einem Formular einstellen, können Sie die folgende Anweisung in den jeweiligen Ereignis- oder Methodencode des Formulars einfügen:
WITH THISFORM.grdGrid1.grcColumn1 .Width = 5 .Resizable = .F. .ForeColor = RGB(0,0,0) .BackColor = RGB(255,255,255) .SelectOnEntry = .T. ENDWITH
Aufrufen von Methoden zur Laufzeit
Zum Aufrufen von Methoden eines Objekts wird die folgende Syntax verwendet:
Parent.Object.Method
Nach dem Erstellen eines Objekts können Sie die Methoden dieses Objekts von jedem beliebigen Ausgangspunkt in Ihrer Anwendung aufrufen. Die folgenden Befehle rufen die Methoden zum Anzeigen des Formulars sowie zum Festlegen des Fokus auf eine Befehlsschaltfläche auf:
* form set saved in MYF_SET.SCX
myf_set.frmForm1.Show
myf_set.frmForm1.cmdButton1.SetFocus
Um ein Formular auszublenden, verwenden Sie den folgenden Befehl:
myf_set.frmForm1.Hide
Reagieren auf Ereignisse
Der von Ihnen in einer Ereignisprozedur angegebene Code wird ausgeführt, wenn das Ereignis stattfindet. Beispielsweise wird der von Ihnen in die Prozedur zum Click-Ereignis einer Befehlsschaltfläche eingefügte Code ausgeführt, sobald der Benutzer auf die Befehlsschaltfläche geklickt hat.
Wenn der Prozedurcode für ein Ereignis aufgerufen wird, bewirkt dies noch keine Auslösung des Ereignisses. Über die folgende Anweisung wird z. B. der in frmPhoneLog
enthaltene Code für das Activate-Ereignis ausgeführt, das Formular selbst jedoch nicht aktiviert:
frmPhoneLog.Activate
Bei Aufrufen der Show-Methode wird das Formular angezeigt und aktiviert. Hierbei wird der Code für das Activate-Ereignis ausgeführt:
frmPhoneLog.Show
Siehe auch
Ausführen eines Formulars | Beispiel für das Bearbeiten von Objekten | Erstellen von Formularen | Ausblenden eines Formulars | Übergeben von Parametern an ein Formular | Speichern eines Formulars als HTML-Datei