Форум: "Основная";
Текущий архив: 2005.01.23;
Скачать: [xml.tar.bz2];
ВнизФокус формы, события OnMouseEnter, Leave Найти похожие ветки
← →
Colonel (2005-01-07 01:21) [0]Доброй ночи всем тем, кто не спит. Столкнулся с следующей проблемой, нужно отловить вхождение/покидание курсора на форму, т.е при попадании курсора на форму делать что-то и при покидании формф - тоже производить действие. Вся проблема в том, что я использую форму без заголовка. И событие OnMouseMove работает некорректно. Нужен обработчик OnMouseEnter, Leave или обработчик фокуса. Да, еще вот что, при наведении курсора на форму, форма не активизирутся.
Есть ли какие соображения по этому поводу ?
← →
Gero © (2005-01-07 01:25) [1]CM_MOUSEENTER/CM_MOUSELEAVE
← →
Colonel (2005-01-07 01:59) [2]Как сие добро обрабатывать ? И где ?
← →
Gero © (2005-01-07 02:04) [3]type
TForm1 = class(TForm)
private
procedure CMMouseEnter(var Msg: TMessage); message CM_MOUSEENTER;
← →
Colonel (2005-01-07 02:12) [4]Буду пробовать юзать. Пасиб.
← →
Colonel (2005-01-07 02:27) [5]To Gero [3]
Так, что-то я не понял, а как проверять это все ?
Условие какое ?
И какой параметр у msg проверять ?
Что писать в самой процедуре ?
procedure CMMouseEnter(var Msg: TMessage);
begin
if msg. и как здесь и на что проверять ?
end;
Буду очень признателен.
← →
Colonel (2005-01-07 02:43) [6]Все я разобрался. Пасиб тебе Gero за помощь.
← →
Colonel (2005-01-07 03:05) [7]Теперь возникла другая проблема:
У меня есть обработчик нажатия на форму :
procedure TMain.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
ReleaseCapture;
Perform(WM_SYSCOMMAND,$F012,0);
end;
Для того чтобы форму можно было перетаскивать за любой участок, т.к заголовка у моей формы нет, но это событие срабатывает только после 2-го нажатия на форме. В чем может быть проблема ?
Код моего обработчика по OnMouseEnter, Leave :
procedure TMain.CMMouseEnter(var Msg: TMessage);
begin
f_space.show;
inherited;
end;
procedure TMain.CMMouseLeave(var Msg: TMessage);
begin
f_space.hide;
inherited;
end;
И обработчик на нажатие правой кнопки мыши тоже срабатывает с 2-го нажатия. В чем может быть дело ?
procedure tmain.WMRBUTTONDOWN(var mes:TMessage);
begin
if mes.WParam=2 then close;
inherited;
end;
Thnx
← →
grom (2005-01-07 17:26) [8]var
d: boolean;
x0,y0: integer;
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
d := true;
x0 := x;
y0 := y;
end;
procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
d := false;
end;
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if d then
begin
Left := Left + x - x0;
Top := Top + y - y0;
end;
end;
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2005.01.23;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.042 c