Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Fehler bei procedure erstellung enddrag während laufzeit


Sepharas - So 18.07.10 14:24
Titel: Fehler bei procedure erstellung enddrag während laufzeit
hi leute,
hab ein kleines problem in meinem programm... das ist schon ziemlich groß, deßhalb schreibe ich mal hier die (meiner einschätzung nach) notwendigen zeilen:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
  tTWButton = class
    pic : tImage;
    procedure TWBenddrag (Sender: TObject; Button: TMouseButton;
                          Shift: TShiftState; X, Y: Integer);
    procedure TWBmousedown (Sender, Target: TObject; X, Y: Integer);
  end;

procedure tTWButton.TWBenddrag;
begin
  //irgendein Quelltext
end;




krieg dann in ner prozedure bei dieser zeile:


Delphi-Quelltext
1:
TWButton[zähler].pic.OnEndDrag := TWButton[zähler].TWBenddrag;                    


fehlermeldung incompatible types TObject and TMousebutton
(TWButton ist als array of tTWButton definiert)



das hier geht zb:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
tTurm=class
       feld : tImage;
       procedure Klick (Sender: TObject);
end;

procedure tTurm.Klick;
begin
  showmessage('HALLO!!!');
end;


in igendeiner procedure:


Delphi-Quelltext
1:
feld.onClick := Klick;                    




Vielen Dank schonmal im Vorraus für eure bemühungen.

Libe Grüße

Moderiert von user profile iconGausi: Delphi-Tags hinzugefügt


jfheins - So 18.07.10 14:47

Also eigentlich müssen die Signaturen der Methoden immer passen.

Also wenn das ein TNotifyEvent ist, dann muss die Methodensignatur passen damit die Zuweisung okay ist. Ob das bei dir der Fall ist, kann ich jetzt leider nicht erkennen...


jaenicke - So 18.07.10 17:29

user profile iconSepharas hat folgendes geschrieben Zum zitierten Posting springen:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
    procedure TWBenddrag (Sender: TObject; Button: TMouseButton;
                          Shift: TShiftState; X, Y: Integer);

procedure tTWButton.TWBenddrag;
begin
  //irgendein Quelltext
end;
fehlermeldung incompatible types TObject and TMousebutton
Der Fehler rührt daher, dass soweit ich mich erinnere OnEndDrag Sender und Target sowie die Koordinaten bekommt. Wie du da auf TMouseButton und TShiftState kommst, weiß ich nicht, das sieht eher nach einem Mouseevent aus.

Schau einfach nach wie OnEndDrag richtig aussieht.

Dann noch etwas zu den Namen: Es ist Konvention Typbezeichner mit einem großen T zu beginnen. Also TImage usw., es ist keine gute Idee deine Methoden (TWBenddrag, ...) so zu nennen. Das irritiert enorm...

Außerdem solltest du die Parameter auch bei der Methodenimplementierung dazuschreiben. Das ist übersichtlicher, auch wenn es theoretisch (leider) auch so geht wie du es geschrieben hast.


Sepharas - So 18.07.10 18:33

omfg bin ich doof...

hatte in dem objekt ein enddrag event und ein mousedown event... und hatte dann die parameter ganau vertauscht :D

hatte das schon seit 2 tagen und hab alles mögliche ausprobiert...

DANKE an euch alle

hättet ihr mich net darauf aufmerksam gemacht dass das wohl en mouseevent ist, hätt ich das wahrscheinlich nicht hinbekommen

DANKE DANKE DANKE