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/)
-   -   Parameterliste beim Zuweisen von Ereignissen (https://www.delphipraxis.net/158649-parameterliste-beim-zuweisen-von-ereignissen.html)

Viktorii 25. Feb 2011 07:35

Parameterliste beim Zuweisen von Ereignissen
 
Moin.

Wie kann ich die Parameterliste von Ereignissen herausbekommen, um ihnen eine Methode zuweisen zu können? In einem konkreten Fall ging es um OnMouseDown.

Erst sagte mir der Compiler ständig:
Zitat:

E2009 Inkompatible Typen: 'Liste der Parameter ist unterschiedlich'
Dann dachte ich mir ich schau mal in die Hilfe, habe dort aber nur das gefunden:
Zitat:

ExtCtrls.TCustomTrayIcon.OnMouseDownAus RAD Studio VCL Reference
Übergeordnetes: TCustomTrayIcon

Delphi

property OnMouseDown: TMouseEvent read FOnMouseDown write FOnMouseDown;C++

__property Controls::TMouseEvent OnMouseDown = {read=FOnMouseDown, write=FOnMouseDown};[Bearbeiten] Eigenschaften
Typ Sichtbarkeit Quelle Unit Eltern
event public ExtCtrls.pas
ExtCtrls.hpp ExtCtrls TCustomTrayIcon

[Bearbeiten] Beschreibung
Wird ausgelöst, wenn der Benutzer über einem Steuerelement die Maustaste drückt.

Wird ausgelöst, wenn der Benutzer über einem Steuerelement die Maustaste drückt.
Dass des Rätsels Lösung so aussehen muss:
Delphi-Quellcode:
type
  TMyTrayIcon = class(TTrayIcon)
  private
    procedure MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
     ...
     ...
  end;

implementation

constructor TMyTrayIcon.Create(Owner: TComponent);
begin
  inherited;
  self.OnMouseDown := MouseDown;
end;

procedure TMyTrayIcon.MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin

end;
habe ich nur durch längere Suche hier im Forum herausgefunden.

Wo genau finde ich sowas in der Hilfe?

Sir Rufo 25. Feb 2011 07:43

AW: Parameterliste beim Zuweisen von Ereignissen
 
Wieso braucht man dazu die Hilfe :gruebel:

Ein Doppelklick im OI auf das Event und alles ist gut

himitsu 25. Feb 2011 07:49

AW: Parameterliste beim Zuweisen von Ereignissen
 
F1 (OH) :?:

Delphi-Referenz durchsuchenOnMouseDown > Delphi-Referenz durchsuchenTMouseEvent


Oder einfach mal im OI doppelt draufklicken und sich eine Standardmethode erstellen lassen.

Oder Strg+Linksklick (Kontextmenü > zur Codestelle spingen)
(falls man jetzt wüste welche Delphiversion du nutzt und ob bei dir die VCL-Quellcodes vorhanden sind).
> da landet man bei der Deklaration, klickst sich eventuell noch weiter bis zur übergeordneten Klasse, wo sich die Typdeklaration dieses Property befindet, da dann nochmal auf den Typ geklickt und schon ist man bei dessen Deklaration

Oder man schreibt sich aus dem Hint den Typ ab, klickt da drauf (Strg+Linksklick) und landet direkt beim Typ.



PS: Das geht übigens mit fast allem > Property, Methoden, Klassen, Variablen, ........

Viktorii 25. Feb 2011 08:08

AW: Parameterliste beim Zuweisen von Ereignissen
 
Zitat:

Zitat von Sir Rufo (Beitrag 1084287)
Wieso braucht man dazu die Hilfe :gruebel:

Ein Doppelklick im OI auf das Event und alles ist gut

Ich war dabei mir eine von TTrayIcon abgeleitete Komponente zu schreiben. Soweit ich weiß steht da ja kein OI zur Verfügung?!?

Okay, selbst dann kann man sich natürlich eben ein VCL Projekt erstellen, die Komponente auf die Form ziehen und dort dann den OI benutzen... Habe ich nicht dran gedacht und ist in dem Fall etwas umständlich...

Zitat:

Zitat von himitsu (Beitrag 1084289)
F1 (OH) :?:

Was dabei rumgekommen ist habe ich unter #1 ja schon gequotet :?

Zitat:

Zitat von himitsu (Beitrag 1084289)
Oder man schreibt sich aus dem Hint den Typ ab, klickt da drauf (Strg+Linksklick) und landet direkt beim Typ.

PS: Das geht übigens mit fast allem > Property, Methoden, Klassen, Variablen, ........

Das funktioniert...

Hätte nur gedacht dass ich sowas dann auch bei der mitgelieferten Hilfe (Delphi XE) finden kann...

himitsu 25. Feb 2011 08:21

AW: Parameterliste beim Zuweisen von Ereignissen
 
Für sowas überschreibt man aber nicht das Property.
Delphi-Quellcode:
TMyTrayIcon = class(TTrayIcon)
protected          
  procedure MouseDown(Button: TMouseButton; Shift: TShiftState;
    X, Y: Integer); override;
end;

procedure TMyTrayIcon.MouseDown(Button: TMouseButton; Shift: TShiftState;
  X, Y: Integer);
begin
  inherited;
  ...
end;
Was ist, wenn man nun OnMouseDown deines TMyTrayIcon nutzen will?
(dort stünde ja nun schon schon deine Methode drin)

MouseDown wird intern aufgerufen und dieses TControl.MouseDown ruft dann OnMouseDown auf.

PS: Meckert Delphi eigentlich nicht rum, da du eine gleichnamige Methode "MouseDown" verdeckst?



Und jupp, die mitglieferte OH ist ein Graus.
Startseite der DP > Nachschlagewerke > Delphi-Referenz > und da suchen
> dieses kann man sich z.B. auch als Suchprovider in seinem Firefox einrichten und darin versteckt sich auch die aktuellste OH-Version
und Hier im Forum suchenCustomHelp

Viktorii 25. Feb 2011 08:53

AW: Parameterliste beim Zuweisen von Ereignissen
 
Zitat:

Zitat von himitsu (Beitrag 1084301)
Für sowas überschreibt man aber nicht das Property.
Delphi-Quellcode:
TMyTrayIcon = class(TTrayIcon)
protected          
  procedure MouseDown(Button: TMouseButton; Shift: TShiftState;
    X, Y: Integer); override;
end;

procedure TMyTrayIcon.MouseDown(Button: TMouseButton; Shift: TShiftState;
  X, Y: Integer);
begin
  inherited;
  ...
end;
Was ist, wenn man nun OnMouseDown deines TMyTrayIcon nutzen will?
(dort stünde ja nun schon schon deine Methode drin)

MouseDown wird intern aufgerufen und dieses TControl.MouseDown ruft dann OnMouseDown auf.

PS: Meckert Delphi eigentlich nicht rum, da du eine gleichnamige Methode "MouseDown" verdeckst?

Nee, da meckert nix. Ich bin in dieser Thematik nicht sooo ganz fit. Überschreiben im Sinne von override tue ich ja nicht, sondern ich weise einem Event eine Methode zu. Oder ist das auch überschreiben?

Dein Codebeispiel sieht gut aus. Nur ist wieder die Frage wie ich mit der mitgelieferten OH dahinterkomme, dass es MouseDown gibt :stupid:

Aber deswegen werde ich mir dann gleich mal das von Dir empfohlene DP Nachschlagewerk ansehen :-)

Sir Rufo 25. Feb 2011 09:42

AW: Parameterliste beim Zuweisen von Ereignissen
 
Wenn man von einer Vorgängerklasse etwas ableiten möchte, dann hilft (sehr oft) auch folgendes:
Delphi-Quellcode:
TMyPanel = class( TPanel )
  {hier jetzt mit dem Cursor hin und dann STRG-LEERTASTE drücken und aus der Liste das Gewünschte auswählen}
  {ENTER drücken und STRG-C fertig}
  {Diese Kommentarzeilen sind natürlich nicht notwendig :o) }
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:06 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