OBS/Makros und Scripting/Anwendungsbereiche/Customize

Aus OBS Wiki
Zur Navigation springen Zur Suche springen


Das kostenpflichtige Modul Customize erlaubt die Individualisierug vom OBS und kann die Funktionalität der Software entscheidend erweitern, um z. B. Arbeitsabläufe zu verbessern oder die Einhaltung bestimmter Vorgaben einzuhalten. So lassen sich u. a. Zugriffe auf Felder steuern oder Daten in Eingabemasken vorbelegen oder prüfen. Jedes Makro kann systemweit oder pro Benutzer hinterlegt werden.

Allgemeines

Aktivierung Modul Customize

Der Aktivitätsstatus des Moduls wird über einen Programmparameter gesteuert, welcher nur Administratoren zugänglich ist. Die Freischaltung erfolgt durch den Support auf Anfrage.

Zugriff auf die Einstellungen

Der Zugriff auf die Customize-Einstellungen erfolgt über die Rechte Verwaltung strg + F12. Für Customize-Scripte wählen Sie den entsprechenden Punkt in der sich öffnenden Auswahlbox:

Customizing Erweiterung

Benutzergruppen

Den Wiki-Seite zu den Benutzergruppe finden Sie hier.

Besonderheiten

HINWEIS: Sämtliche Tastatur-Funktionen haben noch eine Variante mit dem Präfix Before_.
ACHTUNG: Wird bei den Before_-Funktionen "READY" zurückgegeben, so werden die internen Funktionen nicht mehr ausgeführt. Damit kann der natürliche Ablauf des Programmes verändert werden. Dies kann schwere Programmfehler verursachen!
ACHTUNG: Das Überschreiben von nicht zugewiesenen Funktionstasten (F1 - F11) sollte vermieden werden, da diese von uns jederzeit mit Funktionen belegt werden können. F12 steht immer zur Verfügung.

User-Reiter

In OBS ab Version 003191 können Edit-Masken per Customizing-Script um eigene Reiter erweitert werden. Diese darin verwalteten Felder können mit eigenen Datenbankfeldern definiert werden.

Usertab.jpg

Beispiel-Userdatenbank

#DBNAME TODO

  #FELDNAME USER_BEMERK           , C  ,    8 ,  0 , "CCCCCCCC"
  #FELDNAME USER_WGR              , C ,     3 ,  0 , "*"
  #FELDNAME USER_TOGGLE           , C ,     1 ,  0 , "C"
  #FELDNAME USER_BETRAG           , N  ,   11 ,  0 , "NNNNNNNN.NNNN"
  #FELDNAME USER_DATUM            , D  ,    4 ,  0 , "TT.MM.JJ"
  #FELDNAME USER_LANGTEXT         , M  , 2000 ,  0 , "*"

Beispielscript

function OnEdInit(): String;
var oTab : TTabSheet;
    oStr : TStringEdit;     
    oLbl : TLabel;   
    oNEd : TNumericEdit;    
    oDVE : TDateValEdit;  
    oChB : TxCheckBox;   
    oCBL : TCombiListe;      
    oTRE : TTextRichEdit;
begin
    oTab := frmEdit.AddUserTab();               // Erstellt neuen User-Tab auf dem Edit
    if assigned(oTab) then begin
    
        oLbl         := TLabel.Create(frmEdit); // Damit die Ressourcenverwaltung funktioniert
        oLbl.Caption := 'Textzeile:';   
        oLbl.Top     := 10;        
        oLbl.Left    := 10;
        oLbl.Parent  := oTab;                   // Damit die Anzeige korrekt funktioniert
        
        oStr         := TStringEdit.Create(frmEdit);
        oStr.Name    := 'stred_db_user_bemerk'; // Damit automatisches Speichern/Laden von Datenbankfeldern funktioniert, muss im Komponentennamen '_db_' und der Feldname stehen.
        oStr.Top     := 10;        
        oStr.Left    := 130;
        oStr.Parent  := oTab;

        //------------------------------------------------------------------

        oLbl         := TLabel.Create(frmEdit); 
        oLbl.Caption := 'Summe:';   
        oLbl.Top     := 40;        
        oLbl.Left    := 10;
        oLbl.Parent  := oTab;
        
        oNEd         := TNumericEdit.Create(frmEdit);
        oNEd.Name    := 'numed_db_user_betrag';
        oNEd.Top     := 40;        
        oNEd.Left    := 130;
        oNEd.Parent  := oTab;

        //------------------------------------------------------------------
    
        oLbl         := TLabel.Create(frmEdit); 
        oLbl.Caption := 'Datum:';   
        oLbl.Top     := 70;        
        oLbl.Left    := 10;
        oLbl.Parent  := oTab;
        
        oDVE         := TDateValEdit.Create(frmEdit);
        oDVE.Name    := 'datev_db_user_datum';
        oDVE.Top     := 70;        
        oDVE.Left    := 130;
        oDVE.Parent  := oTab;

        //------------------------------------------------------------------
    
        oLbl         := TLabel.Create(frmEdit); 
        oLbl.Caption := 'Schalter:';   
        oLbl.Top     := 100;        
        oLbl.Left    := 10;
        oLbl.Parent  := oTab;
        
        oChB         := TxCheckBox.Create(frmEdit);
        oChB.Name    := 'cb_db_user_toggle';   
        oChB.Caption := 'Schalter';
        oChB.Top     := 100;        
        oChB.Left    := 130;
        oChB.Parent  := oTab;  

        //------------------------------------------------------------------      
    
        oLbl         := TLabel.Create(frmEdit); 
        oLbl.Caption := 'Suchliste:';   
        oLbl.Top     := 130;        
        oLbl.Left    := 10;
        oLbl.Parent  := oTab;
             
        oCBL         := FrmEdit.AddCombiliste();   
        oCBL.Name    := 'cbl_db_user_wgr';    
        oCBL.Top     := 130;                
        oCBL.Left    := 130;            
        oCBL.Parent  := oTab;    
                                      
        oCBL.GetSuli.Tablename         := 'WARENGR';          // Verknüpfte Tabelle  
        oCBL.GetSuli.CompareField      := 'wg_nr';            // Feld mit eindeutiger ID zur Zuordnung
        oCBL.GetSuli.ShowField         := 'wg_name';          // Feld, das als Bezeichnung in der Kombiliste angezeigt wird
        oCBL.GetSuli.Caption           := ML('Warengruppe');  // Fenstertitel der Suchliste, die sich beim Klick auf # öffnet
        oCBL.GetSuli.SQLOrder          := 'wg_nr';            // Feld, nach dem die Suchliste sortiert werden soll
        oCBL.GetSuli.SQlWhere          := '';                 // Filter für Daten in der Suchliste, z. bsp. 'az_nr like "5%"'

        oCBL.GetSuli.Width             := 500;                // Weite des Suchlistenfensters 
        oCBL.GetSuli.Height            := 400;                // Höhe des Suchlistenfensters
              
        oCBL.GetSuli.InitColumn('Nr',  'wg_nr',   30, nil, '', System.Classes.TAlignment.taLeftJustify);
        oCBL.GetSuli.AddColumn('Name', 'wg_name', 30, nil, '', System.Classes.TAlignment.taLeftJustify);

        // Die erste Spalte der Suchliste muss mit InitColumn erstellt werden, alle weiteren mit AddColumn.
        // Parameter:

        // Anzeigename        : String, 
        // Feldname           : String, 
        // relative_Breite    : Integer, 
        // Anzeigefunktion    : Function of String, vorerst immer nil, 
        // Anzeigenmaskierung : String = '', Beispiel: '##9,99': Es werden immer eine Vorkommastelle und immer zwei Nachkommastellen angezeigt, und optional zwei zusätzliche Vorkommastellen, wenn vorhanden.
        // Ausrichtung        : System.Classes.TAlignment.[taLeftJustify, taRightJustify, taCenter]

        //------------------------------------------------------------------
        
        oTRE         := TTextRichEdit.Create(frmEdit);
        oTRE.Name    := 'riced_db_user_langtext';
        oTRE.Top     := 170;
        oTRE.Left    := 10;
        oTRE.Height  := 300;
        oTRE.Width   := 400;   
        oTRE.RulerH  := false; 
        oTRE.Parent  := oTab;        

        //------------------------------------------------------------------

    end;    
end;