Objekt auf anderem Objekt erstellen und dann mit Maus verschieben



  • Es soll ein TShape auf ein einem Image erstellt werden. Wie geht das?
    Dieses Shape soll dann mit der Maus verschoben werden können.
    Wie geht das (Drag&Drop vielleicht)??



  • Hallo

    Es soll ein TShape auf ein einem Image erstellt werden. Wie geht das?

    indem das TShape Positionswerte bekommt, die es über dem Image platzieren

    Dieses Shape soll dann mit der Maus verschoben werden können.
    Wie geht das (Drag&Drop vielleicht)??

    Siehe OnMouse...-Events des TShapes.

    bis bald
    akari



  • Danke, das habe ich jetzt auch hinbekommen.
    Nun ist mir aber aufgefallen, dass ich das Shape überall hinbewegen kann, auch aufs Form und sogar darüber hinaus (dann ist es "weg")!
    Kann ich das Shape nicht dem Image zuordnen, so dass man das Shape auch nur auf dem Image bewegen kann?



  • Hallo

    nicht direkt, denn TImage ist kein TWinControl und kann damit kein Parent sein.

    Du must beim Bewegen eben die Position überprügen ob diese noch innerhalb des TImages ist.

    bis bald
    akari



  • OK, ich habe nun aber mehrere Shapes auf dem Image abgelegt, mit nem Array (TShape* Shape[20]) verwalte ich die Zeiger auf die Shapes.
    Wie kann ich denn nun rausfinden, welches Shape verschoben wird. Z.B. ist im OnMouseDown-event der Sender enthalten. Wie kann ich denn jetzt herausfinden, dass das Shape[2] oder vielleicht das Shape[10] gemeint ist, also das ich darauf Klicke und mit bewegen auch verschoben werden soll??



  • Hallo

    wenn du den OnMouseMove der Shapes benutzt, kannst du ganz leicht rausfinden, welches Shape bewegt werden soll

    // OnMouseMove-Eventhandler für die TShapes
    void __fastcall Form::OnShapeMouseMove(TObject* Sender, Classes::TShiftState Shift, int X, int Y)
    { 
      TShape *CurShape = dynamic_cast<TShape *> (Sender);
      if (CurShape == NULL) return;
      //... weitere Verarbeitung von CurShape;
      }
    

    Diesen Event brauchst du dann nur noch den Shapes zuzuweisen.

    bis bald
    akari



  • Vielen Dank akari!
    Du hast mir sehr geholfen, ich werde es gleich mal ausprobieren..


Anmelden zum Antworten