Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.019 c
3-1084434715
Kein
2004-05-13 11:51
2004.06.06
Как занести в поле русские буквы


3-1084785872
AlexKont
2004-05-17 13:24
2004.06.06
Delphi7,MS SQL


4-1083405942
Игорь
2004-05-01 14:05
2004.06.06
Расширения Windows


1-1085408550
$Hic0
2004-05-24 18:22
2004.06.06
Events


4-1082969565
DennisLNC
2004-04-26 12:52
2004.06.06
Организация фонового удаления каталогов с содержимым




   Наверх