Drag and Drop :/
-
Guten Morgen
habe eben die Suche bemüht aber leider nichts gefunden
Problem:
1 Button auf einem Formular soll verschoben werden.
void __fastcall TForm1::FormDragDrop(TObject *Sender, TObject *Source,
int X, int Y)
{
Button1->Left = 100;
}Funktioniert
aber wie schreibe ich das um das nicht Button1 dortsteht sondern Sender
d.h. das auch die anderen Buttons benutzt werden könnenmein Versuch:
void __fastcall TForm1::FormDragDrop(TObject *Sender, TObject *Source,
int X, int Y)
{
TButton(Source).Left = 100;
}aber da tut sich nichts
danke für euere Hilfe
ps. gibts da irgendwo einen Sourcecode für solche Sachen ? also elemente verschieben
thx
frohe ostern
-
Hallo!
Ganz einfach z.B. mit
void __fastcall TForm1::FormDragDrop(TObject *Sender, TObject *Source, int X, int Y) { ((TButton*)Sender)->Left = 100; }
oder wenn du nicht garantieren kannst dass es n Button ist:
void __fastcall TForm1::FormDragDrop(TObject *Sender, TObject *Source, int X, int Y) { ((TWinControl*)Sender)->Left = 100; }
vielleicht suchst du aber auch das hier:
void __fastcall TForm1::FormDragDrop(TObject *Sender, TObject *Source, int X, int Y) { ReleaseCapture(); SendMessage(((TWinControl*)Sender), WM_SYSCOMMAND, SC_MOVE + HTCAPTION, 0); }
tschüss
Robert
-
hm alles 3 sehr lustig
bsp 1 verschiebt das formular
bsp 2 verschiebt das formular
bsp 3 macht gar nichts// edit
uupsgrad gesehen Sender statt Source .. ok thx es geht
-
Hallo!
Das dritte Ding muss natürlich bei "OnMouseMove" vom Button rein, sorry, also demnach:
void __fastcall TForm1::Button1MouseMove(TObject *Sender, TShiftState Shift, int X, int Y) { ReleaseCapture(); SendMessage(((TWinControl*)Sender)->Handle, WM_SYSCOMMAND, SC_MOVE + HTCAPTION, 0); }
Und die anderen Dinge müssen natürlich auch in das Ereignis des jeweiligen Elements (also z.B. den Button) rein und nicht ins Ereignis vom Formular!
tschüss
Robert
-
Siehe FAQ unter "Forms".
-
Ausserdem empfiehlt es sich statt den C-Casts dynamic_cast zu verwenden...
-junix