Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2010.10.24;
Скачать: CL | DM;

Вниз

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

 
KilkennyCat ©   (2010-07-27 14:17) [0]

Таскаю панель:
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? Т.е. с пре- а не постпроверкой.


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

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


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

WM_WINDOWPOSCHANGING ?


 
0x00FF00 ©   (2010-07-27 16:54) [3]


> WM_WINDOWPOSCHANGING

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


 
0x00FF00 ©   (2010-07-27 16:55) [4]


> WM_SIZE

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


 
DVM ©   (2010-07-27 17:29) [5]

скорее уж WM_MOVING


 
KilkennyCat ©   (2010-07-27 18:07) [6]

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


 
mahab ©   (2010-07-27 22:42) [7]

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


 
KilkennyCat ©   (2010-07-28 13:46) [8]


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

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

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



Страницы: 1 вся ветка

Текущий архив: 2010.10.24;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.008 c
2-1280225843
KilkennyCat
2010-07-27 14:17
2010.10.24
Ограничение области перемещения контрола в рантайме


15-1279623412
12
2010-07-20 14:56
2010.10.24
ORACLE. ORA-03115, что опять не так? С именами? или как?


15-1279257737
Ega23
2010-07-16 09:22
2010.10.24
Прювет из Крыма


3-1246966734
Alexander_K
2009-07-07 15:38
2010.10.24
Тип поля


2-1280601835
Дмитрий2
2010-07-31 22:43
2010.10.24
TBookmark