Выделенный компонент
И вот у меня проблема. Как сделать, чтобы для всех компонентов были те процедуры
для их движения:
[highlight=delphi]
procedure b1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
form1.Repaint;
form1.Canvas.Rectangle(b1.Left-2, b1.Top-2, b1.Left+b1.Width+2, b1.Top+b1.
Height+2);
dow:=true;
ox:=x;
oy:=y;
end;
procedure b1MouseMove(Sender: TObject; Shift: TShiftState; X
Y: Integer);
begin
if dow=true then
begin
b1.Top:=b1.Top-(oy-y);
b1.Left:=b1.Left-(ox-x);
form1.Repaint;
end;
end;
procedure b1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
dow:=true;
end;
[/highlight]
Но как сделать, чтобы нажатый компонент можно было двигать, а остальные нет. И как сделать, чтобы вместо b1 был нажатый (выделенный) компонент???
Посмотри, вот так должно быть.
[highlight=delphi]
var
dow:boolean=false;
ox,oy:integer;
procedure TForm1.Button1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
//form1.Repaint;//по-моему, это лишнее
form1.Canvas.Rectangle(TButton(sender).Left-2, TButton(sender).Top-2, TButton(sender).Left+TButton(sender).Width+2, TButton(sender).Top+TButton(sender).Height+2);
dow:=true;
ox:=x;
oy:=y;
end;
procedure TForm1.Button1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if dow=true then
begin
TButton(sender).Top:=TButton(sender).Top-(oy-y);
TButton(sender).Left:=TButton(sender).Left-(ox-x);
form1.Repaint;
end;
end;
procedure TForm1.Button1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
dow:=false;//<-- у тебя неверно было
end;
[/highlight]
Очень большое спасибо. Внатуре, я ето грыз уже боле месяца. Спасибо !!!