Форум: "Начинающим";
Текущий архив: 2010.10.24;
Скачать: [xml.tar.bz2];
ВнизОграничение области перемещения контрола в рантайме Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.003 c