Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Neue Komponente - Ereignis lässt sich nicht überschreiben! (https://www.delphipraxis.net/75256-neue-komponente-ereignis-laesst-sich-nicht-ueberschreiben.html)

smepal 16. Aug 2006 17:41


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:
Procedure KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); override;
bekomme ich folgende Fehlermeldung:

Deklaration von 'KeyDown' unterscheidet sich von vorheriger Deklaration!

Weiß jemand wodran das liegt?

Hawkeye219 16. Aug 2006 17:46

Re: Neue Komponente - Ereignis lässt sich nicht überschreibe
 
Hallo smepal,

die Originalmethode hat folgende Signatur:

Delphi-Quellcode:
procedure KeyDown(var Key: Word; Shift: TShiftState); override;
Siehst du den Unterschied?

Gruß Hawkeye

smepal 16. Aug 2006 17:49

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?

DGL-luke 16. Aug 2006 18:10

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...

smepal 16. Aug 2006 18:17

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!

mkinzler 16. Aug 2006 18:20

Re: Neue Komponente - Ereignis lässt sich nicht überschreibe
 
Zitat:

Zitat von smepal
bei einem KeyDown Ereignis wird ja zum Beispiel die Variable key wiedergegeben, das möchte ich nun mit meinen eigenen Variablen machen!

Und wie würde as dann aussehen?

smepal 16. Aug 2006 18:23

Re: Neue Komponente - Ereignis lässt sich nicht überschreibe
 
Delphi-Quellcode:
procedure TPlaylist.DblClick (var Trackinfo: TTracks);
begin
Trackinfo := gettracks(row);

end;
so in der Playlist Unit!
Aber das kann man ja nicht einfach so deklarieren!

hoika 16. Aug 2006 18:26

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

mkinzler 16. Aug 2006 18:27

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.

hoika 17. Aug 2006 08:01

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:35 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz