Главная страница
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.48 MB
Время: 0.04 c
14-1084762100
тихий вовочка
2004-05-17 06:48
2004.06.06
исчезновение информации с винта


14-1084631415
GuAV
2004-05-15 18:30
2004.06.06
Exeшник - на дельфе, на С билдере или ещё на чм-то как узнать.


3-1084416711
JetMan
2004-05-13 06:51
2004.06.06
DBGridEh


14-1084864586
abstr
2004-05-18 11:16
2004.06.06
помгите найти исходник или напишите за $ игру CANNON BLOCKS


14-1085133993
Q
2004-05-21 14:06
2004.06.06
Windows для профессионалов Дж.Рихтер