OBS/Makros und Scripting/Anwendungsbereiche/Customize
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
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.
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;