Zum Hauptinhalt springen

WinAdd

obj -> WinAdd(handle1[, int2[, handle3]]) : int

Ausführbar von Clients mit grafischer Oberfläche Ausführbar vom Server Ausführbar von der DLL-Schnittstelle mit grafischer Erweiterung Ausführbar von der Web-Schnittstelle Ausführbar vom Druckprozessor Ausführbar von der ODBC-Schnittstelle Ausführbar vom SOA-Service mit grafischer Erweiterung

Oberflächenobjekt in ein anderes Oberflächenobjekt laden

Details

Der Befehl fügt dem angegebenen Elternobjekt (obj) das Oberflächenobjekt (handle1) hinzu. Bei dem Oberflächenobjekt muss es sich um einen MdiFrame oder um ein mit WinCreate () angelegtes Objekt handeln. Das Objekt (handle1) kann bereits weitere mit WinCreate () und WinAdd() untergeordnete Oberflächenobjekte enthalten.

Ist das Objekt (handle1) ein MdiFrame , kann über den optionalen Parameter (int2) mit der Konstanten _WinAddHidden angegeben werden, dass das MdiFrame -Objekt unsichtbar geladen werden soll. In diesem Fall muss das MdiFrame -Objekt später mit dem Befehl WinUpdate () mit dem Parameter _WinUpdOn gezeichnet werden. Mit den Optionen _WinDialogMaximized bzw. _WinDialogMinimized kann der MdiFrame maximiert oder minimiert werden.

Sind dem MDI-Fenster über die Eigenschaft DbRecBuf eigene Feldpuffer zugeordnet worden, stehen diese nach diesem Befehl zur Verfügung und können initialisiert werden.

Wurde das Oberflächenobjekt (handle1) mit WinCreate () erstellt, kann das nachfolgende Objekt im Argument (handle3) angegeben und somit die Objektreihenfolge definiert werden.

info

Das Objekt (handle1) darf zuvor nicht bereits mit WinAdd () zu einem anderen Objekt hinzugefügt werden, außer es wurde anschließend mit WinRemove () wieder entfernt.

Bei dem Oberflächenobjekt (handle1) kann es sich nicht um ein Frame -, AppFrame - oder TrayFrame -Objekt handeln. Um diese zu starten, muss, auch für dynamisch erstellte, weiterhin der Befehl WinDialogRun () verwendet werden.

Wird das Elternobjekt (obj) bereits angezeigt, erfolgt auch die Darstellung des hinzugefügten Oberflächenobjektes (handle1) direkt nach der Ausführung des Befehls.

Als Resultat kann der Fehlerwert _ErrType zurückgegeben werden, wenn das hinzuzufügende Objekt (handle1) nicht in das Elternobjekt (obj) eingefügt werden kann. Das Resultat ist _ErrExists, wenn das hinzuzufügende Objekt (handle1) bereits einem Objekt hinzugefügt wurde. Konnte ein MdiFrame nicht zu einem AppFrame hinzugefügt werden, ist das Resultat _ErrOutOfMemory. Das Resultat ist _ErrUnavailable, wenn eine Spalte vor einer bestehenden Spalte eingefügt wird und die Liste bereits Inhalt besitzt. Ist kein Fehler aufgetreten, wird _ErrOk zurückgegeben.

Hinweise für Spalten -Objekte

Dynamische Spalten-Objekte können auch einer nicht dynamisch erstellten DataList oder RecList hinzugefügt werden. Diese darf auch bereits nicht dynamisch erstellte Spalten enthalten.

Ein Spalten-Objekt besitzt eine Anzeigeposition und eine Indexposition. Die Anzeigeposition definiert, wo die Spalte innerhalb der Liste angezeigt wird und kann sich z. B. durch Benutzerinteraktionen mit der Spalte (z. B. Verschieben der Spalte durch den Anwender) ändern. Die Anzeigeposition kann durch die Eigenschaft ClmOrder gesetzt oder auch abgefragt werden.

Die Indexposition definiert, welche Position die Zelle im Datensatz (Zeile) besitzt. Diese Position wird den Befehlen WinLstCellSet () und WinLstCellGet () übergeben, wenn die Daten einer Zelle gesetzt oder abgefragt werden sollen. Die Indexposition kann mit dem Befehl WinInfo () und der Option _WinItem ermittelt werden. Bei WinAdd() unter Angabe einer nachfolgenden Spalte erhält die neu hinzugefügte Spalte die die Indexposition der nachfolgenden Spalte. Die Anzeigeposition wird über die Eigenschaft ClmOrder definiert.

info

Die Angabe eines nachfolgenden Spalten-Objektes ist nicht zulässig, wenn die Liste bereits einen Inhalt besitzt (Rückgabewert _ErrUnavailable ). Es können jedoch Spalten am Ende eingefügt werden ( WinAdd () ohne nachfolgendes Objekt).

Nachdem ein Spalten-Objekt einer DataList hinzugefügt wurde, hat diese zunächst keinen Inhalt. Mit dem Befehl WinLstCellSet () kann der Spalteninhalt entsprechend des durch ClmType definierten Spalten-Typs gesetzt werden. Der Befehl WinLstCellGet () liefert den Wert false, wenn die Zelle der Spalte noch keinen Inhalt besitzt.

Hinweise für GroupColumn -Objekte

Dynamische GroupColumn -Objekte können auch einem nicht dynamisch erstellten RecView - oder einem nicht dynamisch erstellten, übergeordneten GroupColumn -Objekt hinzugefügt werden.

Ein GroupColumn -Objekt besitzt eine Anzeige- und eine Indexposition. Die Anzeigeposition definiert, wo das GroupColumn -Objekt im RecView bzw. im übergeordneten GroupColumn -Objekt angezeigt wird. Die Anzeigeposition kann durch die Eigenschaft VisibleOrder gesetzt und abgefragt werden.

Die Indexposition definiert eine eindeutige fortlaufende Nummer für die Eigenschaft SelectorItem bzw. SelectorSubItem.

Die Angabe eines nachfolgenden GroupColumn -Objektes ist nicht zulässig, wenn das RecView bereits einen Inhalt besitzt. Es können jedoch GroupColumn -Objekte am Ende eingefügt werden (WinAdd() ohne nachfolgendes Objekt).

Wird das RecView -Objekt angezeigt, während WinAdd() für ein GroupColumn -Objekt durchgeführt wird, dann hat dies zur Folge, das das Ereignis EvtLstGroupInit aufgerufen wird.

Hinweise zum PopupList -Objekt

Das Objekt kann den Eingabeobjekten ( Edit , IntEdit , ...) hinzugefügt werden. Dem PopupList -Objekt kann wiederum ein DataListPopup , RecListPopup - oder StoListPopup -Objekt hinzugefügt werden.

Einem GroupColumn -Objekt kann ein weiteres GroupColumn -Objekt untergeordnet werden. Dies ist jedoch nur zulässig, wenn das übergeordnete Objekt nicht bereits einem GroupColumn -Objekt untergeordnet ist und das unterzuordnende GroupColumn -Objekt seinerseits keine untergeordneten GroupColumn -Objekte enthält.

Beispiele:

// MDI-Frame 'Addresses' laden 
tMdiFrame # WinOpen('Addresses');

// Wenn hinzufügen des MDI-Fensters zu Applikationsfenster erfolgreich
if (tAppFrame->WinAdd(tMdiFrame, _WinAddHidden) = _ErrOk)
{
// Initialisierung der Feldpuffer
RecBufClear(ADR.D.Addresses);
}

// NotebookPage zu einem Notebook-Objekt hinzufügen
tNbp # WinCreate(_WinTypeNotebookPage, 'nbpView', 'Anzeige');
if ($nbkCommon->WinAdd(tNbp, 0, $nbpEdit) != _ErrOk)
tNbp->WinDestroy();

Mögliche Laufzeitfehler:

  • _ErrHdlInvalid: Elternobjekt (obj) oder hinzuzufügendes Oberflächenobjekt (handle1) ungültig oder das Oberflächenobjekt (handle1) ist nicht dynamisch erstellt worden.
  • _ErrMemExhausted: Fenstererstellung ist fehlgeschlagen.
  • _ErrIllegalOp: Das nachfolgende Objekt (handle3) ist angegeben, jedoch kein Oberflächenobjekt oder kein Kindobjekt von dem angegebenen Elternobjekt (obj). Das hinzuzufügende Objekt (handle1) ist ein Frame , MdiFrame oder AppFrame und ein nachfolgendes Objekt (handle3) ist angegeben.