Freigeben über


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?
THISFORMSET.frm1.cmd1.Caption = 'OK'
Ereignis- oder Methodencode eines beliebigen Steuerelements in einem Formular oder Formularsatz mit Ausnahme von frm1.
THISFORM.cmd1.Caption = 'OK'
Ereignis- oder Methodencode eines beliebigen Steuerelements mit Ausnahme von cmd1 in demselben Formular, in dem cmd1 enthalten ist.
THIS.Caption = 'OK'
Im Ereignis- oder Methodencode des Steuerelements, dessen Beschriftung geändert werden soll.
THIS.Parent.BackColor = RGB(192,0,0)
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