Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Image prozedur einbinden


Johannes1989 - Mi 03.12.08 22:01
Titel: Image prozedur einbinden
Hallo,

Also ich habe eine Prozedur:
TForm1.ImageMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer); und dann halt den inhalt der prozedur.

Und eine zweite prozedur, ein button.

Ich will, dass beim klicken auf den button die prozedur geöffnet wird.
normalerweise dekleriere ich prozeduren doch so:

procedure TForm1.Button1Click(Sender: TObject);
VAR: s:integer;

begin

(...)
imagemousedown(Sender,button,shift,x,y);

end;

aber das nimmt der compiler nicht, woran liegt das denn?

Danke schonmal,
johannes


Delete - Mi 03.12.08 22:09

Zitat:
imagemousedown(Sender,button,shift,x,y);

Woher soll der Compiler denn wissen, was er für button, shift, x und y übergeben soll? Du kannst Dir entweder entsprechende Variablen definieren oder gleich Konstanten übergeben, damit sollte es gehen.


Johannes1989 - Mi 03.12.08 22:15

Ja okay, das war sehr dumm...

Aber:

Also X und Y kann ich übergeben, aber Sender:Tobject, Button:TmouseButton und Shift ?!

Shift ist doch nur eine Taste, der Sender, wie soll ich den übergeben. Und der Button? Das heißt doch nur mausklicken.


Delete - Mi 03.12.08 22:18

Versuch es mal testhalber so:

Delphi-Quelltext
1:
imagemousedown(Sender,mbLeft,[],0,0);                    


Johannes1989 - Mi 03.12.08 22:22

Boah vielen vielen vielen vielen Dank.... ich sitz da jetzt seit knapp 2 stunden dran. und dabei gehts so einfach...

mit dem [] bei der übergabe, sag ich da, dass ich nichts übergeben will. oder was drücke ich damit aus?

Danke nochmal,
johannes


Marc. - Mi 03.12.08 22:28

Korrekt.
DOH hat folgendes geschrieben:
The event handlers for OnMouseDown and OnMouseUp can respond to left, right, or center mouse button actions, with or without shift keys. Shift keys are Shift, Ctrl, and Alt. X and Y are the pixel coordinates of the mouse pointer in the client area of the Sender.


Johannes1989 - Mi 03.12.08 22:29

Vielen vielen Dank an euch beide :)


Johannes1989 - Mi 03.12.08 22:55

Ach ne... doch nich so schön einfach wie erhofft, nämlich:

Wenn ich bei der Buttonprozedur das hier übergebe:
imagemousedown(Sender,mbLeft,[],0,0);

Ich will bei der imagemousedown sache ja nur wissen, wo auf dem feld die maus geklickt hat.
Wenn ich als werte für X,Y aber 0,0 übergebe berechnet die prozedur die nich mehr, sondern behält die 0,0, bei.

Kann ich das irgendwie umgehn?

johannes^^


GTA-Place - Mi 03.12.08 22:57

Naja, wenn du die Funktion selbst aufrufst, hat ja die Maus nicht geklickt, also gibt es auch keine Koordinaten.


Johannes1989 - Mi 03.12.08 22:59

Da merkt man mal, wie höchst sinnvoll mein programm doch ist -.-

dankeschön nochmal ^^