OBS/Makros und Scripting/Anwendungsbereiche/Benutzerfelder: Unterschied zwischen den Versionen

Aus OBS Wiki
Zur Navigation springen Zur Suche springen
(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…“)
 
(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:
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 obtain acquainted with intriguing people.<br><br>My web blog: [http://materia.kerobia.com/eu/node/31580 Corel Draw X8 Free Download]
{{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

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;