Leider habe ich bei der Ausgabe auf Console das Problem, daß die immer wieder mal nicht aktiviert wird, und ich daher keine Ausgabe darauf sehen kann (mit debugln).
Beim Durchstöbern des Programms Testall.pas aus dem Lazarus-examples-Verzeichnis habe ich nun eine einfache Möglichkeit gefunden, die Console durch eine Tlistbox in einer eigenen Form zu ersetzen.
Das hat den Vorteil, daß man dann auch diese beliebig zu- und abschalten (habe ich noch nicht implementiert), zeigen und verbergen und ganz den eigenen Vorstellungen anpassen kann (Schrift: Font, Größe, Farbe, Hintergrund, Anzahl maximaler Einträge, etc.). Vielleicht ist das auch bei der Console möglich, aber da weiß ich nicht, wie.
Das ganze sieht so aus:
Code: Alles auswählen
Type TMainForm = class(TForm)
Eventform: TForm;
Events: TListBox;
ClearEventsButton: TButton;
ShowEventsButton: TButton;
…..
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure ClearEventsButtonClick(Sender: TObject);
procedure ShowEventsButtonClick(Sender: TObject);
procedure EventLn(s: string); // anstelle von debugln
procedure WatchLn(s:string); // für überwachte Ausdrücke
…..
// als Beispiel: Angabe der Tastatureingaben
procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
procedure FormKeyPress(Sender: TObject; var Key: char);
procedure FormKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
end;
Code: Alles auswählen
uses LCLProc;
const maxevent:integer = 500;
events_on:boolean=true; // zum evtl. Abschalten der Events-Ausgaben, dazu bräuchte es noch einen eigenen Button o.ä.
procedure TMainForm.FormCreate(Sender: TObject);
begin
inherited;
;
EventForm:= Tform.create(self);
with Eventform do
begin SetBounds(20,20,200,500); borderstyle := bsSizeable; Caption:='Events'; end;
Events:=TListBox.create(self);
with Events do
begin
Parent:=EventForm; Align:=alclient; show; end;
end;
procedure TMainForm.FormDestroy(Sender: TObject);
begin
eventform.Free;
Events.Free;
inherited;
end;
procedure TMainForm.ClearEventsButtonClick(Sender: TObject);
begin
Events.items.clear;
end;
procedure TMainForm.ShowEventsButtonClick(Sender: TObject);
var zeigen:boolean;
begin
with eventform do
begin zeigen:=not visible; if zeigen then show else hide; end;
with ShowEventsButton do
if zeigen then caption:='Hide Events' else caption:= 'Show Events';
end;
procedure TMainForm.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
EventLn(Sender.Classname + '-KeyDown = '+ dbgS(key) +
' Shift = ' + dbgs(Shift));
end;
procedure TMainForm.FormKeyPress(Sender: TObject; var Key: char);
begin
EventLn(Sender.Classname + '-KeyPress = '+ Key);
end;
procedure TMainForm.FormKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState
);
begin
EventLn(Sender.Classname + '-KeyUp = '+ dbgS(key) +
' Shift = ' + dbgs(Shift));
end;
Und könnte man auch gezielt bestimmte Einträge (zusammenfassen durch Markieren und) löschen?
Herzlichen Dank
P. Nikolaus