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 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
Gausi: 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
Sepharas hat folgendes geschrieben : |
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7:
| procedure TWBenddrag (Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
procedure tTWButton.TWBenddrag; begin 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
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!