var
IsDragging: Boolean;
startX, startY: Integer;
procedure TfrmMain.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
IsDragging := True;
startX := X;
startY := Y;
end;
procedure TfrmMain.FormMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
IsDragging := False;
end;
procedure TfrmMain.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if IsDragging then begin
Left := Left + X - startX;
Top := Top + Y - startY;
end;
end;
Другие языки программирования и технологии
Помогите! DELPHI как сделать Двигающюся Форму при BorderStyle := bsNone?
Всё относительно просто!
Делаете на форме в design-time что-то, что будет играть роль области, за которую надо будет таскать в run-time мышкой форму. Предположим, это будет Panel1
В секции private в вашей форме пишете:
procedure WMNCHitTest(var Msg: TWMNCHitTest) ; message WM_NCHitTest;
и расписываете саму процедуру:
procedure TForm1.WMNCHitTest(var Msg: TWMNCHitTest) ;
begin
inherited;
if Msg.Result = htClient and (мышь над Panel1) then Msg.Result := htCaption;
end;
Следует заметить, что после этого Panel1 потеряет все остальные обработчики, которые, возможно, присутствуют на ней.
Если убрать (мышь над Panel1), то можно будет таскать за клиентскую часть формы (т. е. за ту часть, которая не занята системными кнопками, заголовком, границами, если они есть)
Делаете на форме в design-time что-то, что будет играть роль области, за которую надо будет таскать в run-time мышкой форму. Предположим, это будет Panel1
В секции private в вашей форме пишете:
procedure WMNCHitTest(var Msg: TWMNCHitTest) ; message WM_NCHitTest;
и расписываете саму процедуру:
procedure TForm1.WMNCHitTest(var Msg: TWMNCHitTest) ;
begin
inherited;
if Msg.Result = htClient and (мышь над Panel1) then Msg.Result := htCaption;
end;
Следует заметить, что после этого Panel1 потеряет все остальные обработчики, которые, возможно, присутствуют на ней.
Если убрать (мышь над Panel1), то можно будет таскать за клиентскую часть формы (т. е. за ту часть, которая не занята системными кнопками, заголовком, границами, если они есть)
Всё просто. Делай обработчик форме, при нажатии ЛКМ флаг в истину, при отпускании - в ложь. В ОнМаусМув если флаг тру - изменить координаты формы на смещение мыши...
Похожие вопросы
- Delphi. Как сделать так, чтобы в моей программе окошки появлялись внутри главной формы (Как в 1С) ?
- Как в Delphi сделать, чтобы форма растягивалась вместе с компанентами находящими на ней?
- Объясните задачу Delphi. Задача сделана только код я не понимаю!!!!
- Delphi как сделать ввод только чисел с точкой ?
- народ помогите пожалуйста) надо сделать прогу на pascal)
- Помогите, пожалуйста!!! Как сделать презентацию ?
- Здравствуйте! Помогите пожалуйста привязку сделать в Кореле...
- Delphi. Формы . заполнить матрицу
- Как в Delphi сделать справку?
- вопрос по Delphi (формы)