Текущий архив: 2004.05.16;
Скачать: CL | DM;
ВнизKOLPanel жутко тормозит при перетаскивании Найти похожие ветки
← →
Ciber SLasH © (2003-11-19 03:12) [0]Делаю форму без заголовка, вместо него кинул 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;
Так вот, если потихоньку (еле-еле) перетаскивать, то нормально, но если начать перетаскивать чуть резче, то начинаются тормоза !
Если не верите, можете проверить, результат вас тоже растроит.
← →
Ciber SLasH © (2003-11-19 05:00) [1]Я тут поэкспериментировал и пришёл к такому выводу: если бросаешь на форму один из компонентов вкачестве будующего заголовка (пробовал на: Panel, PainBox, ImageShow) и назначяешь такие обработчики событий как в мессаге выше для обработки сообщений о перетаскивании, то рультат одинаковый. Во всех случаях, когда перемещаешь форму за созданный таким образом заголовок вверх-вниз, то наблюдаются конкретные тормоза !!!
← →
SPeller © (2003-11-19 08:37) [2]Зачем извращаться??? :)
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 16:22) [3]Сенкс...
Работает на ура !
← →
Skopin (2003-11-21 08:15) [4]Я например использую следующий фрагмент:
procedure TForm1.GradientPanel1MouseDown(Sender: PControl;
var Mouse: TMouseEventData);
begin
if Mouse.Button = mbLeft then
begin
Form.DragStart;
end;
end;
← →
alex_*** (2003-11-21 09:18) [5]SetBounds"a в KOL нет?
← →
Gandalf © (2003-11-21 11:00) [6]У нас есть все :)
BoundsRect:=YouWantRect;
Страницы: 1 вся ветка
Текущий архив: 2004.05.16;
Скачать: CL | DM;
Память: 0.45 MB
Время: 0.032 c