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önnen

    mein 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
    uups

    grad 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


Anmelden zum Antworten