Autor Beitrag
Amateur
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 777

(Win98, WinMe) WinXP Prof
D3 Prof, D6 Pers, D2k5 Pers., Turbo C++ Explorer
BeitragVerfasst: Mi 31.08.05 12:04 
EDIT: ANDERES PROBLEM SIEHE WEITER UNTEN!!!
EDIT2: ALLES GELÖST THX
also ich arbeite grade ein tut durch wo es um pointer geht (das tut von motzi)..

jetzt habe ich nen pointer auf ne procedure erstellt und das funzt auch..

allerdings muss ich an die procedure zwei variablen übergeben und zwar x und y der maus.

da ich die bilder auf die geklickt wird zur laufzeit generiere hab ich kein onmousedown wo ich was reinschreiben kann und so die x und y bekomm...

im moment hab ich das durch ne procedure von nem image gelöst, welches ich aber gar net mehr auf der form hab aber da bekomm ich die x und y koords her...
und zwar so:

ausblenden Delphi-Quelltext
1:
for j:=1 to 3 do ziele[j].OnMouseDown:=zielMouseDown;					


zielmousedown is die mousedown von nem image welches ich ma hatte und da is die eigentliche procedure drin schuss(x,y:integer)

jetzt wollte ich das ganze mit pointern lösen indem ich nen procedurepointer erstelle der auf schuss(x,y) zeigt...

jetzt besteht aber das prob dass ich x und y übergeben muss...

wenn ich das mit mouse.cursorpos.x und mouse.cursorpos.y mache kommt ne fehlermeldung von wegen incompatible types : Tmouseevent and procedure, untyped pointer or untyped parameter.

und mit pointern die auf mouse.cursorpos.x und so zeigen ging es auch net denn wenn ich jetzt mousex:=@mouse.cursorpos.x mache kommt variable required

irgendwie geht das alles net aber ich wills net über die hilfsmethode machen...

wie würdet ihr das lösen? am besten wäre
for j:=1 to 3 do ziele[j].OnMouseDown:=schuss(x,y); aber das nimmt er auch nicht an...

wie krieg ich die mouse koords übergeben?

aso:

ausblenden Delphi-Quelltext
1:
for j:=1 to 3 do ziele[j].OnMouseDown:=zielMouseDown;					


mach ich im oncreate...

wenn ich noch was vergessen hab oder ihr mehr code braucht schreibt es...
hoffe ihr seht durch... weil eigentlich will ich nur dass wenn auf ein zur laufzeitgeneriertes bild geklickt wird dass dann schuss(x,y) aufgerufen wird mit den mauskoords... soll halt so ne art moorhuhn werden...

wie würdet ihr das machen? mit pointern? mit record oder mit was anderem?
wie gesagt das prob is dass ich kein onmousedown der zur laufzeit generierten images hab sonst würde ich von da die mouse koords nehmen

Moderiert von user profile iconTino: Delphi-Tags hinzugefügt.

_________________
"Kein dummes Gerede. Kein Rumrätseln. Denkt an nichts anderes mehr, nur noch an das, was vor euch liegt. Das ist die wahre Herausforderung. Ihr müßt euch vor euch selbst schützen, Leute." (Rennes in "Cube")
Beiträge: >700


Zuletzt bearbeitet von Amateur am Mi 31.08.05 22:44, insgesamt 3-mal bearbeitet
Lannes
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2352
Erhaltene Danke: 4

Win XP, 95, 3.11, IE6
D3 Prof, D4 Standard, D2005 PE, TurboDelphi, Lazarus, D2010
BeitragVerfasst: Mi 31.08.05 15:06 
Titel: Re: mauskoords an methode übergeben
Hallo,
user profile iconAmateur hat folgendes geschrieben:
...da ich die bilder auf die geklickt wird zur laufzeit generiere hab ich kein onmousedown wo ich was reinschreiben kann und so die x und y bekomm...

dann erstelle doch eine und weise sie den Images zu, ein Beispiel:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
//...
aImage : TImage;
procedure MyImageMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
//...
procedure TForm1.MyImageMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  showmessage(TImage(Sender).Name+': X = '+IntToStr(X)+' | Y = '+IntToStr(Y));
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  aImage := TImage.Create(Form1);
  aImage.Parent := Form1;
  aImage.Align := alLeft;
  aImage.Name := 'DynImage1';
  aImage.OnMouseDown := MyImageMouseDown;
  aImage := TImage.Create(Form1);
  aImage.Parent := Form1;
  aImage.Align := alClient;
  aImage.Name := 'DynImage2';
  aImage.OnMouseDown := MyImageMouseDown;
end;

_________________
MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
Amateur Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 777

(Win98, WinMe) WinXP Prof
D3 Prof, D6 Pers, D2k5 Pers., Turbo C++ Explorer
BeitragVerfasst: Mi 31.08.05 16:51 
also irgendwie check ich das net wenn ich jetzt diese procedure nehme:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
procedure TForm1.zieleMouseDown;
begin
schuss(mouse.CursorPos.X,mouse.CursorPos.y);
end;


und sie so mit meinen images verknüpfen wil:
ausblenden Delphi-Quelltext
1:
for j:=1 to 3 do ziele[j].OnMouseDown:=zieleMouseDown;					


kommt der fehler parameter lists differ...

und ideses sender und die x,y :integer deklaration als parameter hab ich weggelassen weil ich die parameter ja net verwende... oder müssen die mit dabei weil image1.onmousedown (von nem dynamischen image) auch die parameter hat?

_________________
"Kein dummes Gerede. Kein Rumrätseln. Denkt an nichts anderes mehr, nur noch an das, was vor euch liegt. Das ist die wahre Herausforderung. Ihr müßt euch vor euch selbst schützen, Leute." (Rennes in "Cube")
Beiträge: >700
Lannes
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2352
Erhaltene Danke: 4

Win XP, 95, 3.11, IE6
D3 Prof, D4 Standard, D2005 PE, TurboDelphi, Lazarus, D2010
BeitragVerfasst: Mi 31.08.05 19:49 
Hallo,

user profile iconAmateur hat folgendes geschrieben:
kommt der fehler parameter lists differ...

und ideses sender und die x,y :integer deklaration als parameter hab ich weggelassen weil ich die parameter ja net verwende... oder müssen die mit dabei weil image1.onmousedown (von nem dynamischen image) auch die parameter hat?

verstehe jetzt nicht so ganz wo Dein Problem liegt.
Mit deinem Titel "Mauskoords an Methode übergeben" deutest Du doch an, das die Methode schuss(x,y: Integer) die Mauskoordinaten benötigt, dann entfernst Du sie aus der OnMouseDown-Procedur.
Anschließend ermittelst Du sie über mouse.CursorPos.X, warum?
Die Fehlermeldung "parameter lists differ..." sagt Dir doch alles, na klar hat ein dynamisch erzeugtes Image die gleichen Parameter, ist ja von TImage abgeleitet.
Also die Parameter einbauen, dann kannst Du auch mouse.CursorPos weglassen, weil Dir die Mauskoordinaten in den Variablen X und Y durch die OnMouseDown-Procedur geliefert werden.
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
procedure TForm1.zieleMouseDown(Sender: TObject; Button: TMouseButton;  
  Shift: TShiftState; X, Y: Integer);  
begin
schuss(X,Y);
end;

_________________
MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
Amateur Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 777

(Win98, WinMe) WinXP Prof
D3 Prof, D6 Pers, D2k5 Pers., Turbo C++ Explorer
BeitragVerfasst: Mi 31.08.05 22:01 
mh ok hab das jetzt so gelöst dass x und y net als parameter übergeben werden denn irgendwie wollte das so mit zielemousedown und den parametern net.. gab keinen fehler aber er hat auch keine koords bekommen...

jetzt hab ich nen anderes problem: hab mir ne klasse erstellt:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
Tziele = class(timage)
    public
    speed : integer;
    end;


und so create ich die ziele die als array of tziele deklariert sind:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
for i:=1 to 3 do begin
ziel[i].speed:=1;    // <<<<< diese zeile wird bei der exception angezeigt
ziel[i]:=tziele.create(form1);
with ziel[i] do begin
parent:=form1;
show;
picture.LoadFromFile('fadenkreuz.bmp');
setbounds(50*i*2,50,50,50);
end;
end;


die exception bei oben angedeuter zeile:
Zitat:

Project xxxx raised exception class yyyyy with message 'zzzzzz'.

Process stopped. Use Step or Run to continue.


wo liegt mein fehler?

werde den topic des threads entsprechend ändern...

EDIT: Habs gelöst... musste natürlich erst createn und dann speed nen wert zuweisen sry für solche dummen fragen

_________________
"Kein dummes Gerede. Kein Rumrätseln. Denkt an nichts anderes mehr, nur noch an das, was vor euch liegt. Das ist die wahre Herausforderung. Ihr müßt euch vor euch selbst schützen, Leute." (Rennes in "Cube")
Beiträge: >700
Lannes
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2352
Erhaltene Danke: 4

Win XP, 95, 3.11, IE6
D3 Prof, D4 Standard, D2005 PE, TurboDelphi, Lazarus, D2010
BeitragVerfasst: Mi 31.08.05 22:31 
Hallo,
user profile iconAmateur hat folgendes geschrieben:
...werde den topic des threads entsprechend ändern...

und jetzt passt der Titel absolut nicht mehr zum Thema :eyecrazy:

_________________
MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
Amateur Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 777

(Win98, WinMe) WinXP Prof
D3 Prof, D6 Pers, D2k5 Pers., Turbo C++ Explorer
BeitragVerfasst: Mi 31.08.05 22:43 
user profile iconLannes hat folgendes geschrieben:
Hallo,
user profile iconAmateur hat folgendes geschrieben:
...werde den topic des threads entsprechend ändern...

und jetzt passt der Titel absolut nicht mehr zum Thema :eyecrazy:


ging ja auch um nen anderes prob was ich eben noch hatte..
hab das aber jetzt alles gelöst und hoff ma dass die admins den thread löschen... hab ihnen schon geschrieben...
is ja auch egal... is alles geklärt zu dem thema mein prog läuft..

_________________
"Kein dummes Gerede. Kein Rumrätseln. Denkt an nichts anderes mehr, nur noch an das, was vor euch liegt. Das ist die wahre Herausforderung. Ihr müßt euch vor euch selbst schützen, Leute." (Rennes in "Cube")
Beiträge: >700