void DialogOeffnen(){Dialog meinDialog;DialogField dCtrl1, dCtrl2;;meinDialog = new Dialog("Neuer Dialog", this);// Feld Kundennummer hinzufügendCtrl1 = meinDialog.addField(Typeid(CustAccount));// Feld Name hinzüfgendCtrl2 = meinDialog.addField(typeid(Name));// Dialog ausführenmeinDialog.run();}
meinDialog.doInit();meinDialog.formRun().controlMethodOverload(true);meinDialog.formRun().controlMethodOverloadObject(this);
Die Methode "doInit" ist notwendig um FormRun im Dialog zu initialiseren, wird dieses versäumt kommt es zum Laufzeitfehler.
Alle wichtigen Dinge sind nun getan, bis auf die Definition der Methode für das Feld "Kundennummer". Leider kann man den Namen des Feldes bei DialogField nicht manipulieren und muss hier mit den automatisch generierten Controlnamen leben. Da dieses aber immer nach dem gleichen Schema passiert ist das nicht wirklich tragisch. Bei Feldern wird der Name immer wie folgt aussehen
public boolean fld1_1_modified(){FormStringControl c = dialog.formrun().controlCallingMethod(); // Die FormControl, von der der Aufruf erfolgtboolean ret;;ret = c.modified(); // Super() der aktuellen FormControl aufrufen ->modifieddControl2.value(CustTable::find(dControl1.value()).Name);dControl2.enabled(false);return ret;}
Subscribe in a reader