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/)
-   -   ondblclick von aussen (https://www.delphipraxis.net/125998-ondblclick-von-aussen.html)

khh 16. Dez 2008 10:15


ondblclick von aussen
 
hallo zusammen,
ich habe ein form auf dem sich ein Button befindet.
Zur Laufzeit wird ein Grid auf dem gleichen form erstellt welches, im dblclick diverse dinge erledigt.
sprich ich habe

wie kann ich dem klick-event des buttons dieses dblklick des grid übergeben, so dass beim butten-klick eben dieses griddblklick ausgeführt wird.


Danke gruss KH

mkinzler 16. Dez 2008 10:25

Re: ondblclick von aussen
 
Der EventProperty die Methode zuweisen

khh 16. Dez 2008 10:30

Re: ondblclick von aussen
 
Zitat:

Zitat von mkinzler
Der EventProperty die Methode zuweisen


und wie sieht das syntaktisch aus?

DeddyH 16. Dez 2008 10:35

Re: ondblclick von aussen
 
Sofern es sich um kompatible Methoden handelt, kannst Du dem Button das Event direkt im OI zuweisen. Wenn nicht, musst Du den Doppelklick halt im ButtonClick-Event aufrufen.

khh 16. Dez 2008 10:40

Re: ondblclick von aussen
 
Zitat:

Zitat von DeddyH
Sofern es sich um kompatible Methoden handelt, kannst Du dem Button das Event direkt im OI zuweisen. Wenn nicht, musst Du den Doppelklick halt im ButtonClick-Event aufrufen.


:-(

wenn ich im :
Form.bearbeitenButtonClick(Sender: TObject);
begin
mygrid.OnDblClick;

end;

schreibe bekomme ich einen fehler:

Error: Wrong number of parameters specified for call to "<Procedure Variable>"

DeddyH 16. Dez 2008 10:42

Re: ondblclick von aussen
 
Ich habe heute kein Delphi zur Verfügung, aber schau Dir die Signatur des DblClick--Events einmal genau an, da müsste ja zumindest der Sender-Parameter drinstehen, d.h. der muss dann beim Aufruf mit übergeben werden.

khh 16. Dez 2008 10:45

Re: ondblclick von aussen
 
Zitat:

Zitat von DeddyH
Ich habe heute kein Delphi zur Verfügung, aber schau Dir die Signatur des DblClick--Events einmal genau an, da müsste ja zumindest der Sender-Parameter drinstehen, d.h. der muss dann beim Aufruf mit übergeben werden.


hab ich auch gerad versucht.
mit nil oder self krieg ich ne exception;

DeddyH 16. Dez 2008 10:47

Re: ondblclick von aussen
 
Sei doch bitte so gut und poste mal kurz die Signatur des DblClick-Events (wie gesagt, ich kann heute nicht nachsehen).

[edit] Hab gerade über die Forensuche recherchiert, es wird wohl nur der Sender übergeben und keine weiteren Koordinaten oder so. Dann könnte der Aufruf z.B. so aussehen:
Delphi-Quellcode:
procedure TForm1.ButtonWuppdiClick(Sender: TObject);
begin
  //weiterer Code des Buttons
  ...
  //Aufruf der DblClick-Methode des Grids
  GridDblClick(Grid);
end;
[/edit]

khh 16. Dez 2008 10:54

Re: ondblclick von aussen
 
Zitat:

Zitat von DeddyH
Sei doch bitte so gut und poste mal kurz die Signatur des DblClick-Events (wie gesagt, ich kann heute nicht nachsehen).

procedure TGrid.dblClick();
begin
inherited dblClick;


// mach dies und das

....

end;

DeddyH 16. Dez 2008 10:58

Re: ondblclick von aussen
 
Was ist das denn für ein Grid? Wird da kein Parameter erwartet? Ansonsten schau nochmal oben, ich habe meinen letzten Post editiert.

khh 16. Dez 2008 10:59

Re: ondblclick von aussen
 
Zitat:

Zitat von DeddyH
Was ist das denn für ein Grid? Wird da kein Parameter erwartet? Ansonsten schau nochmal oben, ich habe meinen letzten Post editiert.

habe auch grad gedacht, dass da zumindest der owner übergeben werden sollte .

khh 16. Dez 2008 11:06

Re: ondblclick von aussen
 
GridDblClick(Grid);

funktioniert auch nicht, ich vermute mal weil das grid ja zur Laufzeit erstellt wird, oder ?

DeddyH 16. Dez 2008 11:11

Re: ondblclick von aussen
 
Die DblClick-Methode des Grids ist aber zugewiesen?

Delphi-Quellcode:
type
  TForm1 = class(TForm)
  ...
  private
    FMyGrid: TGrid;
    procedure MyDblClick(Sender: TObject); //Deklaration der methode
  ...
  end;

...

procedure TForm1.MyDblClick(Sender: TObject);
begin
  //Hier der Code für den Doppelklick
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  FMyGrid := TGrid.Create(self);
  ...
  FMyGrid.OnDblClick := MyDblClick; //Zuweisung der Methode zum Event
end;

khh 16. Dez 2008 11:25

Re: ondblclick von aussen
 
Zitat:

Zitat von DeddyH
Die DblClick-Methode des Grids ist aber zugewiesen?

Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
  FMyGrid := TGrid.Create(self);
  ...
  FMyGrid.OnDblClick := MyDblClick; //Zuweisung der Methode zum Event
end;

EDIT:
sorry hatte was verwechselt:

FMyGrid.OnDblClick := MyDblClick; //Zuweisung der Methode zum Event
die fehlermeldung lautet:
Error: Incompatible types: got "untyped" expected "<procedure variable type of procedure(TObject) of object;Register>"

mkinzler 16. Dez 2008 11:31

Re: ondblclick von aussen
 
Und die Methode ist auch eine Methode von TForm1? Und die Signatur stimmt auch?

khh 16. Dez 2008 11:39

Re: ondblclick von aussen
 
Zitat:

Zitat von mkinzler
Und die Methode ist auch eine Methode von TForm1? Und die Signatur stimmt auch?

ja

procedure TForm1.MyButtonClick(Sender: TObject);

und die Zuweisung:

Fmygrid.OnDblClick := MyButtonClick(sender); //Zuweisung der Methode zum Event

mkinzler 16. Dez 2008 11:41

Re: ondblclick von aussen
 
Fmygrid.OnDblClick := MyButtonClick(sender);

khh 16. Dez 2008 11:42

Re: ondblclick von aussen
 
Zitat:

Zitat von mkinzler
Fmygrid.OnDblClick := MyButtonClick(sender);


ergibt:
Error: Wrong number of parameters specified for call to "MyButtonClick"


:wall:

DeddyH 16. Dez 2008 11:48

Re: ondblclick von aussen
 
Wenn das eine Komponente ist, pack sie doch mal auf Dein Formular und mach im OI einen Doppelklick auf "OnDblClick". Die Signatur postest Du dann mal hier.

mkinzler 16. Dez 2008 11:49

Re: ondblclick von aussen
 
Um was für ein Grid handelt es sich?

DeddyH 16. Dez 2008 11:51

Re: ondblclick von aussen
 
Das frag ich mich auch schon die ganze Zeit.

khh 16. Dez 2008 12:00

Re: ondblclick von aussen
 
Zitat:

Zitat von DeddyH
Wenn das eine Komponente ist, pack sie doch mal auf Dein Formular und mach im OI einen Doppelklick auf "OnDblClick". Die Signatur postest Du dann mal hier.


ist ein grid:


welches zur Laufzeit erstellt wird:
Delphi-Quellcode:
  TmyDBgrid = class(TDBgrid)



 protected
    { Protected-Deklarationen }
 
    procedure DBlClick(); override; // Click überschreiben  

   published
    { Published-Deklarationen }
   
    property OnDblClick; // veröffentlichtes OnClick-Event
die procedure aus dem Objektinspekor wäre :


procedure TForm1.DBGrid1DblClick(Sender: TObject);

DeddyH 16. Dez 2008 12:04

Re: ondblclick von aussen
 
Da fehlt ja bereits der Sender-Parameter.
Zitat:

Delphi-Quellcode:
procedure DBlClick(); override; // Click überschreiben


khh 16. Dez 2008 12:07

Re: ondblclick von aussen
 
Zitat:

Zitat von DeddyH
Da fehlt ja bereits der Sender-Parameter.
Zitat:

Delphi-Quellcode:
procedure DBlClick(); override; // Click überschreiben



mh wen ich den sender angebe, meckert er override an,
und ohne das kann ich ja das event nicht überschreiben :-(

DeddyH 16. Dez 2008 12:09

Re: ondblclick von aussen
 
Da Du ja anscheinend die Sourcen hast, trag den Sender doch einfach ein und kompilier das enthaltende Package neu. Wobei mich schon ein wenig wundert, dass Delphi das so nicht angemeckert hat.

khh 16. Dez 2008 12:14

Re: ondblclick von aussen
 
Zitat:

Zitat von DeddyH
Da Du ja anscheinend die Sourcen hast, trag den Sender doch einfach ein und kompilier das enthaltende Package neu. Wobei mich schon ein wenig wundert, dass Delphi das so nicht angemeckert hat.


das sind dann wohl die kleinen unterschiede von delphi und lazarus

DeddyH 16. Dez 2008 12:18

Re: ondblclick von aussen
 
Gut, bei Lazarus musst Du wohl die komplette Entwicklungsumgebung neu kompilieren, wenn ich das richtig verstanden habe.

khh 16. Dez 2008 12:22

Re: ondblclick von aussen
 
Zitat:

Zitat von DeddyH
Gut, bei Lazarus musst Du wohl die komplette Entwicklungsumgebung neu kompilieren, wenn ich das richtig verstanden habe.

mh, wer weiss was dann alles anders funktioniert :-(

dann schreib ich diese eine Prodedure erstmal lieber doppelt :-(

DeddyH 16. Dez 2008 12:33

Re: ondblclick von aussen
 
Dann schreib doch einfach eine eigene Prozedur und weise diese beiden Events zu rufe diese in beiden Events auf.

khh 16. Dez 2008 13:14

Re: ondblclick von aussen
 
Zitat:

Zitat von DeddyH
Dann schreib doch einfach eine eigene Prozedur und weise diese beiden Events zu rufe diese in beiden Events auf.


das ist wohl die beste Lösung.

Ich danke dir

gruss Kh


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