AGB  ·  Datenschutz  ·  Impressum  







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

Parameterliste beim Zuweisen von Ereignissen

Ein Thema von Viktorii · begonnen am 25. Feb 2011 · letzter Beitrag vom 25. Feb 2011
Antwort Antwort
Viktorii

Registriert seit: 19. Jul 2007
358 Beiträge
 
#1

Parameterliste beim Zuweisen von Ereignissen

  Alt 25. Feb 2011, 08:35
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?
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

AW: Parameterliste beim Zuweisen von Ereignissen

  Alt 25. Feb 2011, 08:43
Wieso braucht man dazu die Hilfe

Ein Doppelklick im OI auf das Event und alles ist gut
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.062 Beiträge
 
Delphi 12 Athens
 
#3

AW: Parameterliste beim Zuweisen von Ereignissen

  Alt 25. Feb 2011, 08:49
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, ........
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Viktorii

Registriert seit: 19. Jul 2007
358 Beiträge
 
#4

AW: Parameterliste beim Zuweisen von Ereignissen

  Alt 25. Feb 2011, 09:08
Wieso braucht man dazu die Hilfe

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

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

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...
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.062 Beiträge
 
Delphi 12 Athens
 
#5

AW: Parameterliste beim Zuweisen von Ereignissen

  Alt 25. Feb 2011, 09:21
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
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu (25. Feb 2011 um 09:28 Uhr)
  Mit Zitat antworten Zitat
Viktorii

Registriert seit: 19. Jul 2007
358 Beiträge
 
#6

AW: Parameterliste beim Zuweisen von Ereignissen

  Alt 25. Feb 2011, 09:53
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

Aber deswegen werde ich mir dann gleich mal das von Dir empfohlene DP Nachschlagewerk ansehen
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#7

AW: Parameterliste beim Zuweisen von Ereignissen

  Alt 25. Feb 2011, 10:42
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;
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  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 10:46 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