Ich habe mir einen kleinen Logger programmiert. Um den Log-Level einzustellen, habe ich ein Menu mit den 4 unterschiedlichen Leveln erstellt, wobei die wie RadioButtons agieren.
Hier ist die Funktion, die an den OnClick-Event des Menus gebunden ist (d.h. genau genommen ist diese Funktion an jeden der 4 Menupunkte gebunden; intern wird dann per case entschieden, was gemacht werden soll):
Code: Alles auswählen
procedure TMainForm.LogLvlMenuItemClick(Sender: TObject);
var
tag: integer;
LogLevel: TLogLevel;
begin
Logger.LogMsg('Log-Level-Change-Event');
tag := TMenuItem(Sender).Tag;
case t of
1: LogLevel := llFatal;
2: LogLevel := llError;
3: LogLevel := llDebug;
4: LogLevel := llWarn;
end;
Logger.LogLevel := LogLevel;
Logger.LogMsg('Log-Level-Change-Event: Log Level set to: ' + IntToStr(tag));
end;
- Ist das nur unschön oder mache ich was grundsätzliches falsch?
- einen anderen (passenden) Event habe ich nicht gefunden. Gibt es einen besser geeigneten?
- Ich nutze Tags zur Unterscheidung, welcher Punkt geclickt wurde; geht das eleganter? Z.B. über den Zustand, welches Log-Level gerade aktiv ist (ähnlich wie bei RadioButtons)?
Photor