Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Перетаскивание формы


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


Наверх

Титульная страница Поиск, карта сайта Написать письмо