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

Вниз

Почему не срабатывает событие?   Найти похожие ветки 

 
ПрогерШу   (2004-05-24 18:52) [0]

на форме PaintBox. У него обрабатываю такие события:
OnMouseDown, OnMouseMove и OnMouseUp. Нажимаю мышку но клавишу не отпускаю - OnMouseDown срабатывает. Начинаю вести мышу - OnMouseMove не срабатывает. Отпускаю - OnMouseUp тоже не срабатывает. Что может быть не так?


 
Zeqfreed ©   (2004-05-24 18:55) [1]

Ну если уверен, что ONMouseDown срабатывает, приведи код.
Так не очень понятно почему.


 
ПрогерШу   (2004-05-24 18:57) [2]


procedure TForm1.PaintBox2MouseDown(Sender: TObject; Button: TMouseButton;
 Shift: TShiftState; X, Y: Integer);
begin
 if Button = mbLeft then
 begin
   if ssShift in Shift then
   begin
     fDraging := true; // точно работает
     SetCapture(Handle);

     CurrObject := TWeather.Create;

     CurrObject.FPaintOwner := PaintBox2;
     CurrObject.PenWidth := 1;
     CurrObject.PenColor := clGreen;

     CurrObject.Left := x;
     CurrObject.Top := y;
     CurrObject.Right := x;
     CurrObject.Bottom := y;

     CurrObject.PaintOwner.Canvas.DrawFocusRect(CurrObject.FRect);

     ObjectList.Add(CurrObject);
   end;
 end;
end;

procedure TForm1.PaintBox2MouseMove(Sender: TObject; Shift: TShiftState; X,
 Y: Integer);
var ARect: TRect;
begin
 if FDraging then
 begin
   CurrObject.PaintOwner.Canvas.DrawFocusRect(CurrObject.FRect);

   CurrObject.Right := x;
   CurrObject.Bottom := y;

   CurrObject.PaintOwner.Canvas.DrawFocusRect(CurrObject.FRect);
 end;
end;

procedure TForm1.PaintBox2MouseUp(Sender: TObject; Button: TMouseButton;
 Shift: TShiftState; X, Y: Integer);
begin
 if FDraging then
 begin
   FDraging := false;
   CurrObject.PaintOwner.Canvas.DrawFocusRect(CurrObject.FRect);

   CurrObject.Right := x;
   CurrObject.Bottom := y;

   InvalidateRect(CurrObject.PaintOwner.Canvas.Handle, @CurrObject.FRect, False );

   TWeather(CurrObject).Ox := X;
   TWeather(CurrObject).Oy := Y;

   CurrObject.Right := TWeather(CurrObject).Ox;
   CurrObject.Bottom := TWeather(CurrObject).Oy;

   TWeather(CurrObject).Ox := CurrObject.FRect.Left;
   TWeather(CurrObject).Oy := CurrObject.FRect.Top;

   CurrObject.Left := TWeather(CurrObject).Ox;
   CurrObject.Top := TWeather(CurrObject).Oy;
   
   PaintBox2.Refresh;
 end;
end;


 
ПрогерШу   (2004-05-24 19:08) [3]

Самое интересное что срабатывает событие OnMouseDown, а OnMouseMove и OnMouseUp только после повторного нажатия :(


 
ПрогерШу   (2004-05-24 19:12) [4]

Нашел, вот как надо было написать:
SetCapture(PaintBox2.Canvas.Handle);



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

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

Наверх




Память: 0.47 MB
Время: 0.077 c
14-1085319910
QHread
2004-05-23 17:45
2004.06.06
Где поток (TThread)


6-1082099598
-=Rezya=-
2004-04-16 11:13
2004.06.06
Низкоуровневый сервер


14-1084577692
ИМХО
2004-05-15 03:34
2004.06.06
Имя и судьба


3-1084400450
_boba_
2004-05-13 02:20
2004.06.06
SQL запрос


3-1084623289
russko
2004-05-15 16:14
2004.06.06
Простой запрос