Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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.48 MB
Время: 0.064 c
1-1083080832
volser
2004-04-27 19:47
2004.05.16
Написание класса


14-1083165726
PaRL
2004-04-28 19:22
2004.05.16
News


3-1082385329
Vit
2004-04-19 18:35
2004.05.16
Какая функция преобразует Date в String


7-1080646553
pumba
2004-03-30 15:35
2004.05.16
Windows DDK


14-1083132708
Тимохов
2004-04-28 10:11
2004.05.16
Режим пользователя и режим ядра.