![]() |
Ereignis einer neuen Klasse wird nicht ausgelöst?
Hallo Leute,
suche verzweifelt nach dem Fehler. Hab sowas schon mal gemacht, aber komme diesmal irgendwie nicht weiter. Ausschnitt meiner Klasse:
Delphi-Quellcode:
Nach dem ich die Komponente in die Palette eingefügt und diese in mein Project benutze, erscheint beim Doppelklick auf das Ereignis im Objektinspector auch der Quelltext:
Type
//... TScoreCharactersEvent = Procedure(Passwordlength: Integer; var Score: Integer; var OwnerScore: Boolean) of Object; TMLPasswordMeter = class(TComponent) Private fPassword: String; fScore: Integer; fCharacters: Integer; fOnScoreCharacters: TScoreCharactersEvent; Score4Characters: Integer; OwnerScoreCharacters: Boolean; //... Protected Procedure SetPassword(Password: String); //... Public Property Score: Integer read fScore; //... Published Property Password: String read fPassword write SetPassword; Property Characters: Integer read fCharacters; Property OnScoreCharacters: TScoreCharactersEvent read fOnScoreCharacters write fOnScoreCharacters; //... end procedure Register; implementation //... constructor TMLPasswordMeter.Create(AOwner: TComponent); begin inherited; //... SetPassword(''); end; procedure TMLPasswordMeter.SetPassword(Password: String); Begin fPassword := Password; fCharacters := Length(fPassword); //... If Assigned(fOnScoreCharacters) then fOnScoreCharacters(fCharacters, Score4Characters, OwnerScoreCharacters); If Not OwnerScoreCharacters then Score4Characters := fCharacters * 4; end;
Delphi-Quellcode:
...aber das Ereignis wird nie aufgerufen, auch nicht wenn ich im Programm in die Eigenschaft Password schreibe.
procedure TUserFrm.MLPasswordMeter1ScoreCharacters(Passwordlength: Integer; var Score: Integer; var OwnerScore: Boolean);
begin OwnerScore := true; Score := Passwordlength * 4; end; Weis jemand einer Rat? Geh jetzt aber erst mal in die "Kiste". :| |
Re: Ereignis einer neuen Klasse wird nicht ausgelöst?
1. Per Vereinbarung sollte der 1.Parameter eines Ereignisses 'Sender : TObject' sein. Das ist aber nur eine Empfehlung und beantwortet die Frage nicht.
2. Wird das Ereignis gelinkt? Dann müssten die Zeilen im Editor mit einem blauen Punkt versehen werden. 3. Verwende den Debugger. 3.1 Setze einen Breakpoint auf die Zuweisung von MyComponent.Password 3.2 Schaue (mit F7) nach, ob der Methodenzeiger fOnScoreCharacters auch wirklich gesetzt ist. |
Re: Ereignis einer neuen Klasse wird nicht ausgelöst?
Danke für den Denkanstoß, wodurch ich die Lösung gefunden habe. Hatte meine Komponente fälschlicherweise in einem Modalen Fenster per Create erstellt, obwohl ich sie in der Zwischenzeit registriert und in der Komponentenpalette installiert hatte. Das noch vorhandene Create hat dann eine zusätzliche Instance erstellt.
Vielen Dank. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:31 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz