OBS/Makros und Scripting/Anwendungsbereiche/Benutzerfelder: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
Böhrer (Diskussion | Beiträge) (Die Seite wurde neu angelegt: „Hello, dear friend! I am Frederic. I smile that I can join to the whole globe. I live in Norway, in the NA region. I dream to go to the different nations, to o…“) |
Thiel (Diskussion | Beiträge) (Die Seite wurde neu angelegt: „{{Makros und Scripting}} =Grundlagen= Zu bestimmten Eingabemasken in OBS können Sie über OBS/Weitere Stammdaten/Weitere Stammdaten: Benutzerdefinierte Feld…“) |
||
Zeile 1: | Zeile 1: | ||
{{Makros und Scripting}} | |||
=Grundlagen= | |||
Zu bestimmten Eingabemasken in OBS können Sie über [[OBS/Weitere Stammdaten/Weitere Stammdaten: Benutzerdefinierte Felder|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== | |||
[[Datei:Artikel_Benutz_Felder.png|border]] | |||
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 | |||
{| class="wikitable sortable" | |||
|- | |||
! 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== | |||
:<source lang="delphi"> | |||
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; | |||
</source> |
Aktuelle Version vom 23. Februar 2021, 13:48 Uhr
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;