Znalazlem na forum rozwiaznanie mojego prblemu a mianowicie przeciaganie komponentow na siebie. wszystko jest ok ale zalezy mi na tym aby podczas przeciagania jednego buttona na drugi bylo widac jego trase.
Rozwiazanie pierwszego problemu jest takie:
procedure TForm1.Button1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
{ jezeli podczas przesuwania kursora myszy nacisniety jest lewy przycisk myszy to rozpocznij proces DnD }
if ssLeft in Shift then
Tbutton(Sender).BeginDrag(FALSE);
end;
procedure TForm1.Button2DragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
begin
Accept := Sender <> Source;
end;
procedure TForm1.Button2DragDrop(Sender, Source: TObject; X, Y: Integer);
begin
TButton(Sender).Text:=(TButton(Source).Text);
TButton(Source).Clear;
end;
Aby widziec ruch przycisku uzylem:
if ssLeft in Shift then
begin
getcursorpos(p2);
Button1.Left:=Button1.Left+(p2.X-p1.X);
Button1.top:=Button1.top+(p2.y-p1.y);
getcursorpos(p1);
Oba rozwiazania pojedynczo dzialaja jak nalezy. Ale nie moge ich polaczyc zeby widziec ruch i przenosic zawartosc (caption) na drugi przycisk po upuszczeniu go. Z gory dzieki za pomoc.