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

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

Ограничение области перемещения контрола в рантайме


KilkennyCat ©   (2010-07-27 14:17:00) 

Таскаю панель:
procedure TForm1.phintMouseDown(Sender: TObject; Button: TMouseButton;
 Shift: TShiftState; X, Y: Integer);
begin
 ReleaseCapture;
 SendMessage(phint.Handle, WM_SYSCOMMAND, $F012, 0);
end;


а здесь устанавливаю границу таскания:

procedure TForm.phintConstrainedResize(Sender: TObject; var MinWidth,
 MinHeight, MaxWidth, MaxHeight: Integer);
var
 xy : TPoint;
begin
 GetCursorPos(xy);
 if xy.x <= 100 then SetCursorPos(100, xy.Y);
end;


упираться-то упирается, но дрожит неприятно. Можно ли как-либо реализовать типа с CanMouseMove? Т.е. с пре- а не постпроверкой.


KilkennyCat   (2010-07-28 13:46:00) [1]


> mahab ©   (27.07.10 22:42) [7]

это проще. я делал что-то типа графредактора, когда сам рисуешь - можно творить что угодно без проблем.

WM_WINDOWPOSCHANGING - помогло.  Я еще не разобрался, но флаг запрета перемещения унес все панели на форме неизвестно куда :) Забавная штука.


mahab   (2010-07-27 22:42:00) [2]

Имхо.Мне однажды приходилось таскать рамку. Я приспособил TShape и таскал не саму рамку а так называемый фокус (canvas.DrawFocusRect). Очень удачно вышло.


KilkennyCat   (2010-07-27 18:07:00) [3]

Спасибо, сейчас все попробую.


DVM   (2010-07-27 17:29:00) [4]

скорее уж WM_MOVING


0x00FF00   (2010-07-27 16:55:00) [5]


> WM_SIZE

Тьфу.
WM_SIZING.
http://msdn.microsoft.com/en-us/library/ms632647(VS.85).aspx


0x00FF00   (2010-07-27 16:54:00) [6]


> WM_WINDOWPOSCHANGING

+1.
Как альтернативу, можно обрабатывать WM_SIZE.


Игорь Шевченко   (2010-07-27 15:45:00) [7]

WM_WINDOWPOSCHANGING ?


Юрий Зотов   (2010-07-27 15:32:00) [8]

Может, использовать ClipCursor?


Наверх

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