Hallöchen.
Habe mich jetzt schon unsagbar lange damit rumgeschlagen (probieren, im Forum suchen etc) aber es geht nicht.
Wenn ich TButton Controls per DragDrop verschieben will, um Ihre Reihenfolge zu verändern gibt es da ein großes Problem.
Das OnClick des Button sowie das PopUpMenü wird benutzt.
Normalerweise würde ich es so machen: (natürlich DragMode auf dmAutomatic setzen)
Delphi-Quellcode:
procedure TaForm.btDragDrop(Sender, Source: TObject; X, Y: Integer);
begin
if Source.ClassType = TButton then begin
// hier der Button-Tausch
end;
end;
procedure TaForm.btDragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
begin
Accept := (Source.ClassType = TButton);
end;
Hier ist nur das Problem, daß ein DragDrop mit der linken Maustaste ausgelöst wird und somit das OnClick-Event entfällt.
Mache ich das ganze manuell (DragMode = dmManual):
Delphi-Quellcode:
procedure TaForm.btMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
{$ifdef BETA}DebugInfo:='aForm btMouseDown';{$endif}
if (Sender.ClassType = TButton)
and (Button = mbRight) then begin
(Sender as TControl).BeginDrag(False);
end;
end;
...dann das Problem, es kommt kein Popup-Menü mehr. Übel.
Grüße aus Kassel.
Konfuzius sprach: Etwas lernen und sich immer wieder darin üben - schafft das nicht auch Befriedigung?