![]() |
Überschreiben der Methode 'OnTitleClick'
Hallo,
ich beschäftige mich erst seit kurzer Zeit mit der Komponentenentwicklung. Habe mir schon einiges angeschaut, unter anderem das Tutorial von Sakura... Leider weiß ich nicht wie ich ein Default-Verhalten für das Ereignis 'OnTitleClick' für meine Komponente implementiere. Hier mal der Code:
Delphi-Quellcode:
So scheint es nicht zu funktionieren. Wenn ich in meiner Anwendung ein Grid vom Typ 'TmyDBGrid' erzeuge klappt zwar die Darstellung, das Klicken auf die Titelzeile wird aber nicht beachtet...
unit MyDBGrid;
interface uses SysUtils, Windows, Messages, Classes, Graphics, Controls, Forms, Dialogs; type TmyDBGrid = class (TDBGRID) published function OnTitleClick: TNotifyEvent; override; end; procedure Register; implementation procedure Register; begin end; { ********************************** TmyDBGrid *********************************** } {- TmyDBGrid.OnTitleClick } function TmyDBGrid.OnTitleClick: TNotifyEvent; begin showmessage('OnTitleClick!') end; end. Weiß jemand Rat? |
Re: Überschreiben der Methode 'OnTitleClick'
Hi,
deklariere die Prozedur mal so
Delphi-Quellcode:
und schreibe im Konstruktor dann:
private
procedure TitleClicked(Sender: TObject);
Delphi-Quellcode:
mfG
constructor TMyDBGrid.Create(AOwner: TComponent);
begin inherited; OnTitleClick := TitleClicked; end; mirage228 |
Re: Überschreiben der Methode 'OnTitleClick'
Dazu musst die Procedure Titleclick überschrieben werden. Die Deklaration sieht so aus:
Delphi-Quellcode:
Und somit:
procedure TitleClick(Column: TColumn); dynamic;
Delphi-Quellcode:
Würde man OnTitleclick im Konstruktor setzen, würde man dem Endbenutzer dieses Event wegnehmen.
TMyDBGrid = class(TDBGrid)
protected // TitleClick soll auch weiterhin protected bleiben procedure TitleClick(Column: TColumn); override; end; procedure TMyDBGrid.TitleClick(Column: TColumn); begin // hier mache ich mein eigenes Ding .... // und rufe dann das Standardverhalten auf inherited; end; |
Re: Überschreiben der Methode 'OnTitleClick'
Hallo shmia,
ich finde bei der Komponente TDBGrid nur das Event 'OnTitleClick'. Demnach müsste das also lauten:
Delphi-Quellcode:
Oder?
procedure OnTitleClick(Column: TColumn); dynamic;
... TMyDBGrid = class(TDBGrid) protected // TitleClick soll auch weiterhin protected bleiben procedure OnTitleClick(Column: TColumn); override; end; procedure TMyDBGrid.OnTitleClick(Column: TColumn); begin // hier mache ich mein eigenes Ding .... // und rufe dann das Standardverhalten auf inherited; end; |
Re: Überschreiben der Methode 'OnTitleClick'
Zitat:
Ich habe meine Infos von Delphi 5 während du Delphi 7 benützt. Gut möglich, dass Borland hier was geändert hat:
Delphi-Quellcode:
Falls dem so ist, kannst deine Komponente mit {$IFDEF } kompatibel zu D5 und D6 machen.
// Delphi 5
procedure TCustomDBGrid.TitleClick(Column: TColumn); begin if Assigned(FOnTitleClick) then FOnTitleClick(Column); end; // Delphi 7 procedure TCustomDBGrid.OnTitleClick(Column: TColumn); begin if Assigned(FOnTitleClick) then FOnTitleClick(Column); end; |
Re: Überschreiben der Methode 'OnTitleClick'
Hi,
ich habe beide Versionen versucht, 'OnTitleClick' und auch 'TitleClick'. Beide funktionieren nicht. Hier noch mal mein jetziger Code:
Delphi-Quellcode:
Klicke ich im laufenden Programm auf den Titel meines erzeugten Grids passiert nichts...
unit MyDBGrid;
interface uses SysUtils, Windows, Messages, Classes, Graphics, Controls, Forms, Dialogs; type TmyDBGrid = class (TDBGrid) protected procedure TitleClick(Column: TColumn); override; end; procedure Register; implementation procedure Register; begin end; { ********************************** TmyDBGrid *********************************** } {- TmyDBGrid.TitleClick } procedure TmyDBGrid.TitleClick(Column: TColumn); begin showmessage('OnTitleClick!') inherited; end; end. |
Re: Überschreiben der Methode 'OnTitleClick'
Hallo,
ich habe den Fehler gefunden. Ich hatte vor einiger Zeit schon einmal eine Komponente mit dem gleichen Namen erzeugt. Dadurch habe ich immer auf eine falsche Unit zugegriffen... Nachdem ich alle Dateien gelöscht habe und die aktuelle neu erzeugt habe, funktioniert alles. Danke euch trotzdem vielmals! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:49 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