Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.01.23;
Скачать: CL | DM;

Вниз

Фокус формы, события 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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.026 c
3-1103390675
cyborg
2004-12-18 20:24
2005.01.23
Вставка данных с использованием данных других полей


14-1104751852
vecna
2005-01-03 14:30
2005.01.23
Кто какие подарки получил на НГ?! =)


1-1105254241
XAdmin
2005-01-09 10:04
2005.01.23
GetCurrentRecord(PChar), обратное преобразование


3-1103610183
Mefodiy
2004-12-21 09:23
2005.01.23
Ошибка при использовании SQLConnection в Oracle


3-1103292908
able
2004-12-17 17:15
2005.01.23
Два поля с разных баз