AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Überschreiben der Methode 'OnTitleClick'

Ein Thema von barnti · begonnen am 8. Nov 2004 · letzter Beitrag vom 9. Nov 2004
Antwort Antwort
barnti

Registriert seit: 15. Aug 2003
Ort: Mal hier mal da...
689 Beiträge
 
Delphi 7 Enterprise
 
#1

Überschreiben der Methode 'OnTitleClick'

  Alt 8. Nov 2004, 12:54
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:
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.
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...

Weiß jemand Rat?
Gruß,

Barnti
  Mit Zitat antworten Zitat
Benutzerbild von mirage228
mirage228

Registriert seit: 23. Mär 2003
Ort: Münster
3.750 Beiträge
 
Delphi 2010 Professional
 
#2

Re: Überschreiben der Methode 'OnTitleClick'

  Alt 8. Nov 2004, 12:57
Hi,

deklariere die Prozedur mal so
Delphi-Quellcode:
private
  procedure TitleClicked(Sender: TObject);
und schreibe im Konstruktor dann:
Delphi-Quellcode:
constructor TMyDBGrid.Create(AOwner: TComponent);
begin
  inherited;
  OnTitleClick := TitleClicked;
end;
mfG
mirage228
David F.

May the source be with you, stranger.
PHP Inspection Unit (Delphi-Unit zum Analysieren von PHP Code)
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#3

Re: Überschreiben der Methode 'OnTitleClick'

  Alt 8. Nov 2004, 13:13
Dazu musst die Procedure Titleclick überschrieben werden. Die Deklaration sieht so aus:
procedure TitleClick(Column: TColumn); dynamic; Und somit:
Delphi-Quellcode:
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;
Würde man OnTitleclick im Konstruktor setzen, würde man dem Endbenutzer dieses Event wegnehmen.
Andreas
  Mit Zitat antworten Zitat
barnti

Registriert seit: 15. Aug 2003
Ort: Mal hier mal da...
689 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: Überschreiben der Methode 'OnTitleClick'

  Alt 8. Nov 2004, 13:32
Hallo shmia,

ich finde bei der Komponente TDBGrid nur das Event 'OnTitleClick'. Demnach müsste das also lauten:
Delphi-Quellcode:
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;
Oder?
Gruß,

Barnti
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#5

Re: Überschreiben der Methode 'OnTitleClick'

  Alt 8. Nov 2004, 14:00
Zitat von barnti:
ich finde bei der Komponente TDBGrid nur das Event 'OnTitleClick'. Demnach müsste das also lauten:procedure OnTitleClick(Column: TColumn); dynamic; Oder?
Das wäre aber kein Event, sondern eine virtuelle Methode.
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:
// 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;
Falls dem so ist, kannst deine Komponente mit {$IFDEF } kompatibel zu D5 und D6 machen.
Andreas
  Mit Zitat antworten Zitat
barnti

Registriert seit: 15. Aug 2003
Ort: Mal hier mal da...
689 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: Überschreiben der Methode 'OnTitleClick'

  Alt 8. Nov 2004, 14:06
Hi,

ich habe beide Versionen versucht, 'OnTitleClick' und auch 'TitleClick'. Beide funktionieren nicht. Hier noch mal mein jetziger Code:
Delphi-Quellcode:
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.
Klicke ich im laufenden Programm auf den Titel meines erzeugten Grids passiert nichts...
Gruß,

Barnti
  Mit Zitat antworten Zitat
barnti

Registriert seit: 15. Aug 2003
Ort: Mal hier mal da...
689 Beiträge
 
Delphi 7 Enterprise
 
#7

Re: Überschreiben der Methode 'OnTitleClick'

  Alt 9. Nov 2004, 07:12
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!
Gruß,

Barnti
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:21 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