Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.06.06;
Скачать: [xml.tar.bz2];

Вниз

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

 
ПрогерШу   (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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.042 c
3-1084795501
Tomkat
2004-05-17 16:05
2004.06.06
FireBird 1.5 и IBX 6.08


3-1084528066
Korefey
2004-05-14 13:47
2004.06.06
sql, объединение полей


1-1085415081
Serious Sam
2004-05-24 20:11
2004.06.06
Звезда


1-1085364117
Jedu
2004-05-24 06:01
2004.06.06
Скроллинг на главной форме...


1-1085406881
sergvc
2004-05-24 17:54
2004.06.06
показать когда хочу MDI Child Окна





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский