Hallihallo!
Ich möchte eine Komponente bauen, die von TCustomPanel abgeleitet ist und die zwei Buttons (ButtonLeft und ButtonRight) enthält. Die Buttons sind in einer TList untergebracht.
Ich will jetzt Ereignisse für die Buttons integrieren, einmal OnLeftButtonClick und OnRightButtonClick, die sinnigerweise dann ausgelöst werden sollen, wenn der entsprechende Button gedrückt wird. Mein Code sieht bisher (als Auszug) so aus:
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: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49:
| TTastenfeld = class(TCustomPanel) private ButtonList: TList; FOnLeftButtonClick: TLeftButtonClickEvent; FOnRightButtonClick: TRightButtonClickEvent; procedure LeftButtonClick(Sender: TObject); procedure RightButtonClick(Sender: TObject); published property OnLeftButtonClick: TLeftButtonClickEvent read FOnLeftButtonClick write FOnLeftButtonClick; property OnRightButtonClick: TRightButtonClickEvent read FOnRightButtonClick write FOnRightButtonClick; end;
implementation
constructor TTastenfeld.Create(AOwner: TComponent); var vButton: TTastenfeldButton; i: Integer; begin inherited; ButtonList := TList.Create;
for i := ord(Low(TButtonPos)) to ord(High(TButtonPos)) do begin vButton := TTastenfeldButton.Create(self); vButton.Caption := GetInitialButtonCaption(TButtonPos(i)); if vButton.Caption = CaptionLeft then vButton.OnClick := OnLeftButtonClick else if vButton.Caption = CaptionRight then vButton.OnClick := OnRightButtonClick end; ButtonList.Add(vButton); end; end;
procedure TTastenfeld.LeftButtonClick(Sender: TObject); begin inherited OnClick(Sender); if assigned(OnLeftButtonClick) then OnLeftButtonClick(Sender); end;
procedure TTastenfeld.RightButtonClick(Sender: TObject); begin inherited OnClick(Sender); if assigned(OnRightButtonClick) then OnRightButtonClick(Sender); end; |
Die Ereignisse werden zwar verfügbar, aber wenn ich sie zuweise und die Buttons drücke, wird offenbar kein Ereignis ausgelöst. Wo liegt der Fehler in meinem Code?
Wäre für jede Hilfestellung dankbar
Grüße Kay