05.04.1 Stammdatenprogramme (PDV111, AUF411, ...)
Erkennungsmerkmale
Der hier beschriebene Typ von Registerdialogen ist an folgenden Merkmalen zu identifizieren:
-
Im CGW ist ein ..._APPLFRAME Dialog vorhanden.
-
Es existiert im CGW kein Dialog, der einen Platzhalter (Container) für die angezeigten Register enthält.
Verwendete Technik
Das Erzeugen des Hauptdialogs mit allen Registern ist fest programmiert und nicht abhängig von Angaben im CGW. Die angezeigten Register sowie deren Reihenfolge lässt sich über den Eintrag "Frames" in der SibDef-Sektion [MegGeneral] des APPLFRAME-Dialogs und den Eintrag "Frames" in der zum jeweiligen Stammdatenprogramm gehörigen Sektion der Datei SIBPPS.INI bestimmen.
Die Register werden aus dem Inhalt der Dialoge im CGW mit den GritIDs aus "Programm+_+laufende Nummer" erzeugt, z.B. PDV111_5.
Das in den einzelnen Dialogen enthaltene Schaltflächen-Template ( z.B. MEG_PB oder MEG_PB_FIRST) und eine evtl. enthaltene Hinweiszeile wird bei der Erzeugung der Register gelöscht. Zur Laufzeit werden die angezeigten Schaltflächen immer aus dem Template MEG_PB_ONEWINDOW geladen. Bei Nutzung von Menü FENSTER werden die Schaltflächen allerdings benötigt.
Die Reitertexte der einzelnen Register werden aus den Titeln der jeweils für die Register verwendeten Dialoge gebildet, wobei nur der Text nach dem ersten Komma verwendet wird, z.B. wird aus "Teilestamm, &Lager" der Reitertext "Lager" erzeugt.
Register anpassen (ReplaceCGW)
Um eine komplettes Register zu ersetzen (z.B. für individuelle Felder, neue Anordnung, etc.), muss der Dialog, aus dem das betroffene Register erzeugt wird, ersetzt werden. Die Replace-Angabe dazu lautet beispielsweise:
[REPLACECGW]
PDV111,PDV111_2=IND111,PDV111_2
Durch eine Änderung des Dialogtitels kann auch der Reitertext des Registers geändert werden.
Einträge in SDF-Dateien
Beim Einsatz von SDF-Dateien zur Anpassung vorhandener Dialogelemente ist zu beachten, dass als DialogID immer die ID des am Bildschirm sichtbaren (Haupt-)Dialogs zu verwenden ist. Über die infra-Systemübersicht (F5-Taste) lässt sich die DialogID dieses Dialogs einfach herausfinden (im Allgemeinen immer CGW-Name_1, also z.B.: PDV111_1).
Um beispielsweise eine Range-Angabe für das Feld «Lebensdauer ab» im Dialog PDV111_2 zu ändern, muss in der Datei PDV111.SDF folgendes hinterlegt werden:
[PDV111_1#PDV111_2_D104F18#GuiEdit]
Range=”>RelativeDateLong(InfraDateLong(),+1)”
Tipps zur IMA-Programmierung
Um mit einer IMA-Datei direkt auf ein Register zugreifen zu können, muss die GritID, die zur Laufzeit für ein Register gebildet wird, bekannt sein. Sie wird immer aus
Name des Ursprungs-CGWs+#+DialogID des Dialogs, aus dem das Register erzeugt wurde
gebildet, z.B. PDV111#PDV111_9.
Siehe auch POPUP_041_AP.IMA oder folgendes Beispiel. Die IMA-Datei wechselt im Teilestamm (PDV111) auf Register "Indiv." und schreibt "Test" in das erste Anwenderfeld:
|
GwCore dialog = NULL;
|
// Variable für Zeiger auf Dialog
|
|
GwCore register = NULL;
|
// Variable für Zeiger auf Register
|
|
GwCore feld = NULL;
|
// Variable für Zeiger auf Feld
|
|
dialog = infra_wait_frame("PDV111","PDV111_1",5,1);
|
// PDV111 Dialog finden
|
|
if ( !dialog )
|
// wenn nicht gefunden,…
|
|
return 0;
|
// IMA beenden
|
|
|
|
|
register = infra_find_child(dialog,"PDV111","PDV111#PDV111_9");
|
// Register “Indiv.” finden
|
|
if ( !register )
|
// wenn nicht gefunden,…
|
|
return 0;
|
// IMA beenden
|
|
|
|
|
activate_control(register);
|
// auf Register wechseln
|
|
|
|
|
feld = infra_wait_child(register,"PDV111","PDV111_9_47",5,1);
|
// 1.Anwend.feld im Register finden
|
|
if ( !feld )
|
// wenn nicht gefunden,...
|
|
return 0;
|
// IMA beenden
|
|
|
|
|
infra_set_text(feld,"Test");
|
// “Test” in Feld schreiben
|