![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Перетаскивание формы
Juice © (2006-05-23 20:30:00)Какое событие возникает когда перетаскивается форма?
Juice (2006-05-23 21:46:00) [1]...или может быть можно как-то сделать так, чтобы "отображать содержимое окна при перетаскивании" в моем приложении было всегда? Бред конечно, но мало ли ...
Juice (2006-05-23 21:44:00) [2]
> Ошибаетесь!!!!
>
> procedure TForm1.Mymove(var msg: TMessage);
> begin
>
> memo1.Lines.Add(inttostr(memo1.Lines.Count))
> end;
Фишка в том что у меня не стоит в настройках системы "отображать содержимое окна при перетаскивании". Если его включить то все ОК, форма после присвоения ей Left:=0 сразу прыгает на 0 и можешь перетаскивать себе дальше. А когда эта штука отключена то при перетаскивании отображается рамка, а окно стоит на месте, и только после отпускания кнопки окно перемещается туда где рамка и возникает событие Move. Как заставить эту рамку показаться где надо?
Juice (2006-05-23 21:38:00) [3]Нашел, Moving называется, но все равно не то. Лучше я от задачи вопрос поставлю : есть форма что лежит на другой форме (Parent) и надо чтобы при перемещении дочерней формы она прилипала к краям формы-владельца. Вот для левой стороны пишу типа того:
procedure TInternalForm.OnMove(var msg: TMessage);
begin
if Self.Left<50 then Self.Left:=0;
end;
И это срабатывает, т.е. после того как пользователь отпускает кнопку форма становится в нужное положение. Но хотелось бы, чтобы при перемещении (кнопка в нажатом положении) юзер видел что форма будет пристыкована, что она примет не ту позицию где он ее отпустит а выровняется по 0. Впрочем, обычный элемент интерфейса любой нормальной программы а как реализовать не знаю.
Gydvin (2006-05-23 21:31:00) [4]
> Я получаю это событие только тогда когда отпускаю кнопку
> и передвижение уже закончено. А надо обрабатывать сам процесс
> перемещения.
Ошибаетесь!!!!
procedure TForm1.Mymove(var msg: TMessage);
begin
memo1.Lines.Add(inttostr(memo1.Lines.Count))
end;
Juice (2006-05-23 21:29:00) [5]Я получаю это событие только тогда когда отпускаю кнопку и передвижение уже закончено. А надо обрабатывать сам процесс перемещения.
Gydvin (2006-05-23 21:19:00) [6]
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
private
Procedure Mymove(var msg: TMessage); Message WM_MOVE;
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
{ TForm1 }
procedure TForm1.Mymove(var msg: TMessage);
begin
showmessage('dddd');
end;
end.
Juice (2006-05-23 21:05:00) [7]А в событиях формы такого нет?
Loginov Dmitry (2006-05-23 20:53:00) [8]WM_MOVE