OBS/Makros und Scripting/Anwendungsbereiche/Customize Listen
Zur Navigation springen
Zur Suche springen
Methoden der Liste
Interne Funktionen |
---|
OnListNew |
OnResize |
OnRefresh |
OnShowColor(cFeld:String) |
OnStable |
OnCreate |
OnClose |
OnVisible |
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;
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
Um die Menüpunkte unter Weitere Funktionen zu bearbeiten, kann auf diese Liste mit STRG + 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.