OBS/Makros und Scripting/Anwendungsbereiche/Benutzerfelder

Aus OBS Wiki
Version vom 23. Februar 2021, 13:48 Uhr von 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…“)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
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

Artikel Benutz Felder.png


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;