Moinsen Leute!
Sitze schon seit ein paar Stunden an einem dämlichen Problem.
Ich umschreibe es mal kurz.
In einem Beispielprogramm will ich Ereignisse wie etwas OnMouseMove, OnClick für mehrere Komponenten (TForm, TButton, ...) abfangen.
Die Anzahl der Ereignisse soll später in TListBox dargestellt werden.
Ist ja ansich kein Problem, doch die Einträge sollen nicht fortlaufend eingefügt werden. Das ist nicht gerade gut für die Übersicht.
Es ist also eine konstante Anzahl der Einträge, bei denen sich nur die Einträge selbst ändern.
Zum Beispiel:
Eintrag 1: 10x FormMouseMove
Eintrag 2: 29x ButtonClick
Da die Anzahl der Ereignisse, die ich abfange endlich ist, wird also die Liste nicht sehr lang.
Mein Problem ist nun, wie ich die Einträge der Liste selbst verändere, ohne bestehende Einträge zu überschreiben.
Bewege ich besipielsweie die Maus, so wird ja nur der Zähler für das Ereignis OnMouseMove erhöht und somit auch der entsprechende Eintrag in der ListBox verändert.
Alle anderen bereits eingetroffenen Ereignisse sollen aber dennoch in der ListBox bestehen bleiben.
Etwas Code habe ich mir dazu schon überlegt:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35:
| ...
{$J+} // ermöglicht typisierte Konstanten (können wie Variablen genutzt werden) // ansonsten liessen sich die Variablen schlecht initialisieren procedure getEvents(id: Integer; count: Integer); begin Form4.ListBox1.Clear; case id of 1: Form4.ListBox1.Items.Append(IntToStr(count) + ': FormMouseMove'); 2: Form4.ListBox1.Items.Append(IntToStr(count) + ': FormMouseDown');
end;
end;
procedure TForm4.FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); const i: Integer = 0; begin inc(i); getEvents(1,i); end;
rocedure TForm4.FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); const i: Integer = 0; begin inc(i); getEvents(2,i);
end; ... |
Das ist nur ein Beispiel für zwei Ereignisse.
Jedoch werden beide nicht gleichzeitig in der ListBox dargestellt.
Hätte jemand einen guten Hinweis für mich?
Fragende Grüße
Torsten