Hallo,
ich erkläre das jetzt anhand einer HitroySerchKombo die ich einmal erstellt habe. In anbetracht der fortgeschritenen Zeit habe ich keine Lust mehr das zu übertragen aber das solltest du auch hinbekommen
.
Diese ComboBoc, generiert ein Ereigniss
OnAddToHistory welches immer dann ausgelöst wird wenn ein neuer Eintrag der History List hinzugefügt wird.
Zuerst, muss ein Prototyp für die Ereignisbehandlungsroutine erstellt werden. In meinem Fall sieht das so aus:
Quelltext
1:
| TOnAddedToHistory = procedure (VAR Text : STRING; VAR AddIt : BOOLEAN) OF OBJECT; |
Dieses geschieht völlig uabhängig von dem Objekt in dem es verwendung findet über der Dektaration dieses Objektes im Type abschnitt.
Danach deklarierts du unter Protected (oder Private) eine Variable von diesem Prototypen:
Quelltext
1:
| FOnAddToHistory: TOnAddedToHistory; |
Als dritten Schritt richtest du ein Property unter published ein:
Quelltext
1:
| property OnAddToHistory : TOnAddedToHistory read FOnAddToHistory write SetOnAddToHistory; |
Wobei du natülich wie bei jedem Property lesende wie schreibende Behandlunsroutinen definieren kannst, die im einfachsten Fall so aussehen:
Quelltext
1: 2: 3: 4: 5:
| procedure ToHistorySearchCombo.SetOnAddToHistory( const Value: TOnAddedToHistory); begin FOnAddToHistory := Value; end; |
Zu guter letzt, ist es natürlich noch nötig, dass du das Ereignis auslöst, wenn es denn eine Behandlungsroutine zugeordnet hat. Du musst also an den entsprechenden Stellen in deinem (komponenten) Code noch etwas äquialentes zu dem hier einfügen:
Quelltext
1: 2:
| IF Assigned(OnAddToHistory) THEN BEGIN OnAddToHistory(ToListText, AddIt); |
So, ich hoffe das Prinzieb ist klar geworden und ich konnte ein wenig helfen.
Gruß
Klabautermann