Announcement

Collapse
No announcement yet.

Kann man Buttons Verschieben?

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Kann man Buttons Verschieben?

    kann man einen Bitbtn während des laufenden Programmes Verschieben?
    wenn ja, bitte mit Erklärung.
    Danke, Christian Weber
    If it's there and you can see it – it's REAL
    If it's there and you can't see it – it's TRANSPARENT
    If it's not there and you can see it – it's VIRTUAL
    If it's not there and you can't see it – it's GONE!

  • #2
    Wer´s mag ..

    schreib in das MOUSEDOWN Ereignis des Buttons:

    Button1.Perform(WM_LBUTTONUP, 0 , 0);
    Button1.Perform(WM_SysCommand, SC_MOVE+2 ,2);

    willst du auch andere Komponenten verschieben änderst du dann im OI den Namen der Ereignisprozedur "OnMouseDown" in "MEINMOUSEDOWN" und belegst dies dann folgendermaße,

    Procedure tform1.MEINMOUSEDOWN(sender;tobject; Button:TmouseButton; Shift:Tshiftstate; x, y : Integer);
    begin
    twincontrol(sender).Perform(WM_LBUTTONUP, 0 , 0);
    twincontrol(sender).Perform(WM_SysCommand, SC_MOVE+2 ,2);
    end;

    dann steht dir für alle Komponenten das verschieben zur Verfügung wenn du das MOUSEDOWNEVENT damit belegst.

    Am Ende speicherst du alles brav irgendwo (Registry) und lädst die Koordinaten beim erstellen deines Formulares.

    Aber.... eine anständige Benutzerschnittstelle wird das nicht ...

    Heik

    Comment


    • #3
      Christian,
      Ich hoffe, ich habe die Frage verstanden...
      Man kann jede sichtbare Komponente zur Laufzeit verschieben, dazu haben sie ja die Properties LEFT, TOP, WIDTH und HEIGHT - die man einzeln oder per SetBounds setzen kann.

      Luc

      Comment


      • #4
        Hallo. Ich wollte Eigentlich Den Button während der laufzeit mit der Maus an verschiedene BESTIMMTE Positionen ziehen und wenn der Btn an der Position ist, soll man Draufklicken können, das funzt nich.
        @ Pm Heiko: Was is OI?
        Wat nu
        If it's there and you can see it – it's REAL
        If it's there and you can't see it – it's TRANSPARENT
        If it's not there and you can see it – it's VIRTUAL
        If it's not there and you can't see it – it's GONE!

        Comment


        • #5
          Hallo Christian,
          geht folgendermaßen:

          1. Definiere in der Form drei Variablen:

          doMove: Boolean;
          lastX: Integer;
          lastY: Integer;

          2. Im OnMouseDownEvent des Buttons:
          doMove := TRUE;
          lastX := X;
          lastY := Y;

          3. Im OnMouseMoveEvent des Buttons:
          if doMove then
          begin
          btnMoveMe.Left := btnMoveMe.Left + X - lastX;
          btnMoveMe.Top := btnMoveMe.Top + Y - lastY;
          end;

          4. Im OnMouseUpEvent des Buttons:
          doMove := FALSE;

          Jetzt kannst Du den Button ganz leicht (mit gedrückter linker Maustaste) über die Oberfläche ziehen.

          Gruss
          Luc

          Comment


          • #6
            @ Christian: ObjektInspekto

            Comment


            • #7
              ob es mit bitbtn geht weiss ich nicht, aber schau mal hier:
              http://www.marlem-software.de/prlex_kompo_verschieben.ht
              Herzliche Grüße

              Markus Lemcke
              barrierefreies Webdesign

              Comment


              • #8
                Du kannst dann nicht mehr den Button Drücken oder er Drückt immer sobald du verschieben willst also müsste man ein Flag einbauen womit man das Verschieben einschalten kan

                Comment


                • #9
                  hast recht
                  Herzliche Grüße

                  Markus Lemcke
                  barrierefreies Webdesign

                  Comment


                  • #10
                    Wie wäre es damit den Button auf ein minimal größeres Panel zu setzen, und dieses dann zu verschieben?<BR><BR>Gruß Jen

                    Comment


                    • #11
                      Einfach das Verschieben nur erlauben, wenn eine Taste wie STRG zusätzlich gedrückt wird.
                      Also so innerhalb MouseDown:
                      <code>
                      if ssCtrl in Shift then
                      begin
                      ...
                      end;
                      </code&gt

                      Comment


                      • #12
                        recht hat der Michael ;-

                        Comment

                        Working...
                        X