OBS/Makros und Scripting/Anwendungsbereiche/Benutzerfelder
Zur Navigation springen
Zur Suche springen
Grundlagen
Zu bestimmten Eingabemasken in OBS können Sie über benutzerdefinierten Feldern zusätzliche Eingabefelder hinzufügen. Dabei handelt es sich um dynamisch zu Laufzeit der Eingabemasken (bei Erstellung) generierte Komponenten, welche nicht wie normale Komponenten angesteuert werden können.
Im Folgenden Beispiel sehen Sie eine Artikelmaske mit mehreren benutzerdefinierten Feldern und einem sehr statisches Makro zum ansteuern der Felder und erstellen eines Langtextes für den Artikel bei Neuanlage.
Maske
zu beachten hierbei ist die dynamische Erstellung und die interne Benennung der Komponenten:
- Jede erstellte Komponente wird fortlaufend nummeriert (Beginnend bei 000) und bekommt je nach Typ einen entsprechenden Präfix
Typ | Präfix | Klasse |
---|---|---|
Eingabefeld | TabEd_ | TMaskEdit |
Checkbox | cb_ | TxCheckBox |
Auswahlliste | cl_ | TCombiListe |
TabellenGrid | sg_ | TxADVStringGrid |
- und Kann mit FindComponent angesteuert werden
TMaskEdit(oPage.FindComponent('TabEd_008')).Text //Ansteuerung des Eingabefeldes "Material"
Die Komponenten sind auf einem ebenfalls dynamisch erzeugten Reiter zu finden. Dieser muss wie folgt ermittelt werden, um die Komponenten darauf zu finden.
oPage := FrmEdit.Pagecontrol.Pages[FrmEdit.Pagecontrol.Pagecount-1];
Makro
function Before_OnEDCheck():string; var cLangtext : String; oPage : TTabSheet; begin if FrmEdit.lEditMode then begin //finden des Tabs mit den Zusatzfeldern oPage := FrmEdit.Pagecontrol.Pages[FrmEdit.Pagecontrol.Pagecount-1]; if (FrmEdit.cbl_db_a_wgr.Edit.Text = '007') then begin cLangtext := 'Artikel: ' + CRLF + 'Material: ' + TMaskEdit(oPage.FindComponent('TabEd_008')).Text + CRLF + 'Zusatz: ' + TMaskEdit(oPage.FindComponent('TabEd_009')).Text + CRLF; end else if (FrmEdit.cbl_db_a_wgr.Edit.Text = '008') or (FrmEdit.cbl_db_a_wgr.Edit.Text = '009') then begin cLangtext := 'Art und Anzeige: ' + TMaskEdit(oPage.FindComponent('TabEd_011')).Text + ' ' + TCombiListe(oPage.FindComponent('cl_012')).Show.Text + ' ' + TCombiListe(oPage.FindComponent('cl_013')).Show.Text + CRLF + 'Material: ' + TCombiListe(oPage.FindComponent('cl_014')).Show.Text + CRLF + 'Glas: ' + TCombiListe(oPage.FindComponent('cl_015')).Show.Text + CRLF + 'Armband: ' + TCombiListe(oPage.FindComponent('cl_016')).Show.Text + CRLF + 'Farbe: ' + TCombiListe(oPage.FindComponent('cl_017')).Show.Text + CRLF + 'Garantie: ' + TMaskEdit(oPage.FindComponent('TabEd_010')).Text + CRLF + 'System: ' + TCombiListe(oPage.FindComponent('cl_018')).Show.Text + ' ' + TCombiListe(oPage.FindComponent('cl_019')).Show.Text + ' ' + TCombiListe(oPage.FindComponent('cl_020')).Show.Text + ' ' + TCombiListe(oPage.FindComponent('cl_021')).Show.Text + CRLF + 'Beschreibung: ' + ''; end else begin cLangtext := 'Artikel und Farbe: ' + TCombiListe(oPage.FindComponent('cl_000')).Show.Text + ' ' + TCombiListe(oPage.FindComponent('cl_001')).Show.Text + CRLF + 'Hauptbesatz: ' + TCombiListe(oPage.FindComponent('cl_002')).Show.Text + CRLF + 'Zweitbesatz: ' + TCombiListe(oPage.FindComponent('cl_003')).Show.Text + CRLF; if (FrmEdit.cbl_db_a_wgr.Edit.Text = '006') then begin cLangtext := cLangtext + 'Länge: ' + TMaskEdit(oPage.FindComponent('TabEd_006')).Text + CRLF + 'Durchmesser: ' + TMaskEdit(oPage.FindComponent('TabEd_007')).Text + CRLF; end; cLangtext := cLangtext + 'Anzahl Steine:' + TMaskEdit(oPage.FindComponent('TabEd_004')).Text + CRLF; if (FrmEdit.cbl_db_a_wgr.Edit.Text <> '016') and (FrmEdit.cbl_db_a_wgr.Edit.Text <> '006') then begin cLangtext := cLangtext + 'Feingehalt: ' + TMaskEdit(oPage.FindComponent('TabEd_005')).Text + CRLF + 'Gewicht:' + FrmEdit.numed_db_a_agewicht.Text + CRLF; end; cLangtext := cLangtext + 'Besatzbeschreibung: ' + ''; end; FrmEdit.xSet('a_langtext',cLangtext); end; end;