Текущий архив: 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.45 MB
Время: 0.023 c