OBS/Makros und Scripting/Anwendungsbereiche/Customize Listen

Aus OBS Wiki
Zur Navigation springen Zur Suche springen


Methoden der Liste

Interne Funktionen Ausführung
OnResize bei jeder Veränderung der Listengröße
OnCreate 1x
OnListNew 1x
OnVisible 1x
OnStable bei jeder aktualisierung
OnShowColor(cFeld:String) bei jeder Aktualisierung des Feldes und für jede Zeile
OnRefresh Aktualisierung der Daten (F11)
OnClose 1x
Tastatur-Funktionen
OnF1
OnF2
OnF3
OnF4
OnF5
OnF6
OnF7
OnF8
OnF9
OnF10
OnF11
OnF12
OnReturn
OnInsert
OnDelete
OnESC

Beispiele Liste

Button F12 anzeigen und mit Funktionalität versehen
function OnListNew():string;
begin
    frmListe.cmdF12.Enabled := True;
    frmListe.cmdF12.Caption := 'F12 Test';
    frmListe.InitButtons(frmListe);
    frmListe.PaintButtons(frmListe);    
end;              

procedure OnF12();  
begin                          
    Meldung('Test');
end;
Button F4 ausblenden
function OnListNew():string;
begin
    frmListe.cmdF4.Enabled := False;  
end;
Andere Buttons Mit Funktion versehen
Var cMyF8 : String;
                           
function OnListNew():String; 
begin                         
    cMyF8  := 'Init'; 
    Result := '';
end;  

function OnF8():string;
begin
    Meldung('Hallo '+cMyF8);     
    Result := 'OK';
end; 

function Before_OnF8():String;
begin
    Meldung('Before Hallo '+cMyF8);
    
    //Dann wird Standard F8 nicht ausgeführt
    Result := 'READY'; 
    cMyF8  := Result;
end;
Button F12 mit Auswahlfunktion
function OnListNew():string;
begin
    frmListe.cmdF12.Enabled := True;
    frmListe.cmdF12.Caption := 'F12 Test';
    frmListe.InitButtons(frmListe);
    frmListe.PaintButtons(frmListe);    
end;                                                  

procedure OnF12();      
var oLines  : TStringList;
    oResult : TStringList;            
    lEsc    : Boolean;
    cSelect : String;
begin
    oLines := TStringList.Create();    
    oLines.Add('A - Test 1');
    oLines.Add('B - Test 2');
    oLines.Add('C - Test 3');
    
    oResult := GetSelectionExt(oLines, //Auswahl 
                               'Test', //Caption        
                               lEsc,   //Abruch? (var)            
                               Nil,    //uInit : DefGetSelection;
                               Nil,    //uOnChange : DefGetSelection;   
                               False,  //Sort      
                               -1,     //Width
                               False,  //MultiSel     
                               False   //AllLines 
                               ); 
    
    cSelect := LeftStr(oResult.Text, 1);
                                                 
    if          (cSelect = 'A') then begin
        Meldung('A');
    end else if (cSelect = 'B') then begin
        Meldung('B');
    end else if (cSelect = 'C') then begin
        Meldung('C');
    end;   
                                 
    MyFreeAndNil(oLines);
    MyFreeAndNil(oResult);
end;
Mit OnShowColor benutzerdefinierte Farben in Listenfeldern
procedure OnShowColor(cFeld: String);
begin

    //Farbe des gesamten Textes setzt
    //Je nach Status der Zeile im Grid eine andere Textfarbe nutzen: 
    //gdSelected, gdFocused, gdFixed, gdRowSelected, gdHotTrack, gdPressed
    if (gdSelected    in frmListe.CurState) then begin
        //die aktuelle selektierte Zeile in Gelb
        frmListe.DBGrid.Canvas.Font.Color := TObsColor.Yellow;
    end else begin
        frmListe.DBGrid.Canvas.Font.Color := TObsColor.Inactive;
    end;
    
    //Je nach Priorität das Feld einfärben
    if (Upper(cFeld) = 'T_PRIO') then begin
        //Folgende Farb Konstanten stehen zur Verfügung
        //*_Comp repräsentieren jeweils die Komplementärfarben
        //TObsColor.White
        //TObsColor.White_Comp
        //TObsColor.Red
        //TObsColor.Red_Comp
        //TObsColor.Red_Text
        //TObsColor.Red_Text_Hi
        //TObsColor.Green
        //TObsColor.Green_Comp
        //TObsColor.Green_Text
        //TObsColor.Green_Text_Hi
        //TObsColor.Yellow
        //TObsColor.Yellow_Comp
        //TObsColor.Alert
        //TObsColor.Alert_Comp
        //TObsColor.Inactive
        //TObsColor.Inactive_Comp
        //TObsColor.Inactive_Hi
        //TObsColor.Black
        //TObsColor.Blue
        //TObsColor.Blue_Comp
        //TObsColor.Dark_Blue
        //TObsColor.Dark_Blue_Comp
        //TObsColor.Light_Text
        //TObsColor.InfoBlock

        //Wenn die gewünschte Farbe fehlt, kann dies per Hexadezimal wert dargestellt werden

        //Hoch
        if frmListe.Query.A2C('t_prio') = '1' then begin
            frmListe.DBGrid.Canvas.Brush.Color := TObsColor.red;
            //Komplementärfarbe
            frmListe.DBGrid.Canvas.Font.Color  := TOBSColor.red_Comp;
        //Normal        
        end else if frmListe.Query.A2C('t_prio') = '2' then begin
            frmListe.DBGrid.Canvas.Brush.Color := $73f601;
            frmListe.DBGrid.Canvas.Font.Color  := $000000;
        //Niedrig
        end else begin
            frmListe.DBGrid.Canvas.Brush.Color := TObsColor.Inactive_Comp;
            frmListe.DBGrid.Canvas.Font.Color  := TObsColor.Inactive;
        end;
        frmListe.DBGrid.Canvas.Fillrect(frmListe.CurRect); 
    end;
end;
Button Return und Doppelklick deaktivieren
function Before_OnReturn():string;
begin
    Meldung('nicht erlaubt');
    Result := 'Ready' 
end;
SQL-Statement bei SUch-LISten (SULIS) überschreiben
function OnListShow():string;
begin
    if frmListe.aTabel[0] = 'PROJEKTE_TYP' then begin
        frmListe.ListWhere := 'Left(pt_nr,1) <> 9';
    end;
end;

Weitere Funktionen

Weitere Funktionen.png Um die Menüpunkte unter Weitere Funktionen zu bearbeiten, kann auf diese Liste mit STRG + Key mouse5.gif geklickt werden, woraufhin sich ein Customize Menü öffnet. Hier können einzelne Funktionen deaktiviert werden.

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.