- Код: Выделить всё
TForm1 = class(TForm)
Button1: TButton;
Edit1: TEdit;
Memo1: TMemo;
Memo2: TMemo;
Panel1: TPanel;
procedure ControlMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
procedure ControlMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
procedure ControlMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
protected
private
MouseDownSpot : TPoint;
Capturing : boolean;
public
end;
var
Form1: TForm1;
implementation
{$R *.lfm}
procedure TForm1.ControlMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
SetCapture(TWinControl(Sender).Handle);
Capturing := true;
MouseDownSpot.X := x;
MouseDownSpot.Y := Y;
TWinControl(Sender).Cursor:= crArrow;
end;
procedure TForm1.ControlMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
if Capturing then
begin
TWinControl(Sender).Left := TWinControl(Sender).Left - (MouseDownSpot.x - x);
TWinControl(Sender).Top := TWinControl(Sender).Top - (MouseDownSpot.y - y);
end;
end;
procedure TForm1.ControlMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
if Capturing then
begin
ReleaseCapture;
Capturing := false;
TWinControl(Sender).Left := TWinControl(Sender).Left - (MouseDownSpot.x - x);
TWinControl(Sender).Top := TWinControl(Sender).Top - (MouseDownSpot.y - y);
TWinControl(Sender).Cursor:= crDefault;
end;
end;
но получается что в кнопке например, появляется подсветка, когда на неё мыша попадает, в Memo курсор мигает, и текст можно вводить. А нужно как в дизайнере форм, чтобы контрол был "не живой", пока не разрешу.
т.е. у если разрешил редактировать форму, то они стали "не живые", потом запретил, и все стали обычными, со своими событиями.
Предполагаю, гдето надо сообщения перехватывать, но не могу разобраться.