![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
KOLPanel жутко тормозит при перетаскивании
Ciber SLasH © (2003-11-19 03:12:00)Делаю форму без заголовка, вместо него кинул KOLPanel и обрабатываю события от мыши для перетаскивания:
procedure TForm1.Panel1MouseDown(Sender: PControl;
var Mouse: TMouseEventData);
begin
if Mouse.Button = mbLeft then // если кнопка левая...
begin
OldLeft := Mouse.X; // запоминаю позицию крысы
OldTop := Mouse.Y;
Dragging := True // и включаю режим двиганья ;)
end
end;
procedure TForm1.Panel1MouseMove(Sender: PControl;
var Mouse: TMouseEventData);
begin
if Dragging then // если режим двиганья включен
begin
NewLeft := Mouse.X; // записываю новые координаты крысы
NewTop := Mouse.Y;
Form.Left := Form.Left + NewLeft - OldLeft; // устанавливаю координаты окна
Form.Top := Form.Top + NewTop - OldTop
end
end;
procedure TForm1.Panel1MouseUp(Sender: PControl;
var Mouse: TMouseEventData);
begin
if Mouse.Button = mbLeft then //Если кнопка левая...
Dragging := False //Выключаю режим двиганья
end;
Так вот, если потихоньку (еле-еле) перетаскивать, то нормально, но если начать перетаскивать чуть резче, то начинаются тормоза !
Если не верите, можете проверить, результат вас тоже растроит.
Gandalf (2003-11-21 11:00:00) [1]У нас есть все :)
BoundsRect:=YouWantRect;
alex_*** (2003-11-21 09:18:00) [2]SetBounds'a в KOL нет?
Skopin (2003-11-21 08:15:00) [3]Я например использую следующий фрагмент:
procedureTForm1.GradientPanel1MouseDown(Sender: PControl;
varMouse: TMouseEventData);
begin
ifMouse.Button = mbLeft then
begin
Form.DragStart;
end;
end;
Ciber SLasH (2003-11-19 16:22:00) [4]Сенкс...
Работает на ура !
SPeller (2003-11-19 08:37:00) [5]Зачем извращаться??? :)
function TForm1.ImgMainMessage(var Msg: tagMSG; var Rslt: Integer): Boolean;
begin
Result := False;
case Msg.message of
WM_LBUTTONDOWN: Form.Perform( WM_NCLBUTTONDOWN, HTCAPTION, Msg.lParam );
WM_LBUTTONUP: Form.Perform( WM_NCLBUTTONUP, HTCAPTION, Msg.lParam );
end;
end;
Ciber SLasH (2003-11-19 05:00:00) [6]Я тут поэкспериментировал и пришёл к такому выводу: если бросаешь на форму один из компонентов вкачестве будующего заголовка (пробовал на: Panel, PainBox, ImageShow) и назначяешь такие обработчики событий как в мессаге выше для обработки сообщений о перетаскивании, то рультат одинаковый. Во всех случаях, когда перемещаешь форму за созданный таким образом заголовок вверх-вниз, то наблюдаются конкретные тормоза !!!