![]() |
Neue Komponente - Ereignis lässt sich nicht überschreiben!
Wenn ich das Keydown ereignis meiner Kompo die als Vorlage ein TSringgrid hat überschreiben will
Delphi-Quellcode:
bekomme ich folgende Fehlermeldung:
Procedure KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); override;
Deklaration von 'KeyDown' unterscheidet sich von vorheriger Deklaration! Weiß jemand wodran das liegt? |
Re: Neue Komponente - Ereignis lässt sich nicht überschreibe
Hallo smepal,
die Originalmethode hat folgende Signatur:
Delphi-Quellcode:
Siehst du den Unterschied?
procedure KeyDown(var Key: Word; Shift: TShiftState); override;
Gruß Hawkeye |
Re: Neue Komponente - Ereignis lässt sich nicht überschreibe
Danke jetzt gehts!
Und wie mache ich das, wenn ich möchte, dass beim Aufruf einer Methode Variablen zurückgegeben werden? Bsp. beim Doppelklick auf eine Listbox der ItemIndex? |
Re: Neue Komponente - Ereignis lässt sich nicht überschreibe
wohin soll er denn zurückgegeben werden? ich sehe in deiner frage im moment keinen sinn...
|
Re: Neue Komponente - Ereignis lässt sich nicht überschreibe
bei einem KeyDown Ereignis wird ja zum Beispiel die Variable key wiedergegeben, das möchte ich nun mit meinen eigenen Variablen machen!
|
Re: Neue Komponente - Ereignis lässt sich nicht überschreibe
Zitat:
|
Re: Neue Komponente - Ereignis lässt sich nicht überschreibe
Delphi-Quellcode:
so in der Playlist Unit!
procedure TPlaylist.DblClick (var Trackinfo: TTracks);
begin Trackinfo := gettracks(row); end; Aber das kann man ja nicht einfach so deklarieren! |
Re: Neue Komponente - Ereignis lässt sich nicht überschreibe
Hallo,
definiere dir eigene Events, z.B. OnMyKeyDown, fang das Originale ab und rufe dann deines auf. Heiko |
Re: Neue Komponente - Ereignis lässt sich nicht überschreibe
Die Methode an sich kannst du schon so deklarieren, diese kannst du aber nicht als Callback für den Event nutzen.
|
Re: Neue Komponente - Ereignis lässt sich nicht überschreibe
Hallo,
Doch indem man das OnKeyDown in eine eigene Methode in der Komponente umleitet und von dort aus das andere Event feuert. Ein Bsp. aus einem Programm. Es wird der Doppelklick im StirngGrid abgefangen und auf eine andere Methode umgeleitet. Dort kann entschieden werden, ob der inplace-Editor angezeigt wird oder nicht. Das OnWantEdit-Event enthält dafür 2 Return-Parameter, Heiko interface TWantEditEvent = procedure (Sender: TObject; theCol: Longint; var bCanEdit: Boolean; var EditLen: Integer) of object; procedure DblClick; override; procedure ActOnDblClick; FWantEdit : TWantEditEvent; property OnWantEdit: TWantEditEvent read FWantEdit write FWantEdit; implementation procedure TEditGrid.DblClick; begin inherited DblClick; ActOnDblClick; end; procedure TEditGrid.ActOnDblClick; if Assigned(FWantEdit) then begin CanEdit:= True; EditLen:= 255; FWantEdit(Self, Col, CanEdit, EditLen); if not CanEdit then Exit; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:07 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-2025 by Thomas Breitkreuz