Freigeben über


Verwalten mehrerer Instanzen eines Formulars

Mehrere Instanzen einer Klassendefinition können gleichzeitig aktiv sein. Sie können z. B. ein Bestellformular entwerfen und in Ihrer Anwendung mehrere Bestellungen gleichzeitig geöffnet haben. Jede Bestellung verwendet dieselbe Formulardefinition, wird aber einzeln angezeigt und beabeitet.

Wenn Sie mehrere Instanzen eines Formulars geöffnet haben, sollten Sie unbedingt die folgenden Punkte beachten:

  • Erstellen Sie im startenden Formular eine Arrayeigenschaft, in der die Objektvariablen der jeweiligen Instanzen des Formulars gespeichert werden. Wenn Sie nicht von vornherein wissen, wie viele Instanzen des Formulars gestartet werden, sollten Sie die Instanzenvariablen in einem Array verwalten.
  • Wenn das Formular mehrere Instanzen haben soll, stellen Sie die DataSession-Eigenschaft auf 2 - Private Data Session ein. Bei einer privaten Datensitzung werden für jede Instanz des Formulars separate Arbeitsbereiche zur Verfügung gestellt, so dass die ausgewählten Tabellen und Datensatzzeiger-Positionen voneinander unabhängig sind.

Der folgende Beispielcode zeigt, wie mehrere Instanzen eines Formulars erstellt werden. Der vorliegende Beispielcode ist nicht optimiert, sondern soll nur das Konzept verdeutlichen.

Das folgende Formular startet mehrere Instanzen:

Einstellung der Eigenschaften bei "Launch.scx"

Objekt Eigenschaft Einstellung
frmLaunch aForms[1]
" "

Ereigniscode für "Launch.scx"

Objekt Ereignis Code
cmdQuit Click
RELEASE THISFORM
cmdLaunch Click
nInstance = ALEN(THISFORM.aForms)
DO FORM Multi ;
  NAME THISFORM.aForms[nInstance] ;
  LINKED
DIMENSION ;
  THISFORM.aForms[nInstance + 1]

Dieses Beispiel können Sie weiterentwickeln, so dass das Array von Formularobjekten so verwaltet wird, dass leere Arrayelemente nach dem Schließen eines Formulars wiederverwendet und neue Formulare geöffnet werden können. Das Array muss dadurch nicht jedes Mal neu dimensioniert und die Anzahl der Elemente um 1 erhöht werden.

Das Formular, das mehrere Instanzen haben kann, ist Multi.scx. Die Datenumgebung für dieses Formular enthält die Tabelle Employee.

Mehrere Instanzen von "Multi.scx"

Einstellung der Eigenschaften bei "Multi.scx"

Objekt Eigenschaft Einstellung
txtFirstname ControlSource
Employee.first_name
txtLastName ControlSource
Employee.last_name
frmMulti DataSession 2 - Private Data Session

Wenn Sie im Startformular Formular starten wählen, wird eine Instanz des Multi-Formulars erstellt. Wenn Sie das Startformular schließen, wird das Eigenschaftsarray aForms freigegeben, und alle Instanzen von Multi werden gelöscht.

Visual FoxPro bietet einige Funktionen und Eigenschaften zum Verwalten mehrerer Instanzen von Objekten. Weitere Informationen finden Sie unter AINSTANCE( )-Funktion, AUSED( )-Funktion und DataSessionID-Eigenschaft.

Siehe auch

Speichern eines Formulars als HTML-Datei | Festlegen der Entwurfsfläche für ein Formular | Erstellen von Formularen | Erstellen von Formularen mit lokalen und Remotedaten | DataSession-Eigenschaft