Форум: "Основная";
Текущий архив: 2004.10.24;
Скачать: [xml.tar.bz2];
ВнизТекст на лабеле Найти похожие ветки
← →
clampo © (2004-10-06 10:31) [0]Привет всем!!! подскажите, пожалуйста как сделать так, чтобы
при наведении указателя на Button1 на Лабеле появлялся текст
(н\р) "кнопка". Но на лабел постоянно посылается другой текст.
И поэтому у меня на лабеле текст "кнопка" появляется только
тогда когда я двигая курсор по Button1.
← →
Sandman25 © (2004-10-06 10:32) [1]Но на лабел постоянно посылается другой текст.
По таймеру, что ли? Не надо так делать.
← →
kukuikar © (2004-10-06 10:49) [2]procedure TForm1.Button1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
Label1.Caption := "кнопка";
end;
← →
clampo © (2004-10-07 20:22) [3]kukuikar, я же сказал так не работает. А другой текст посылаетя как я не знаю. Но дело не в этом: тут функцию не MouseMove надо, а когда кусорнаходится над кнопкой(двигается или стоит нет разницы)
← →
Vlad © (2004-10-07 20:37) [4]
> clampo © (07.10.04 20:22) [3]
Речь о курсоре мыши надо понимать? Тогда kukuikar © (06.10.04 10:49) [2] привел рабочий пример, не знаю что там у тебя и куда посылается. Или объясни по нормальному чего надо?
← →
Okcid (2004-10-07 21:01) [5]> clampo © (07.10.04 20:22)
А как можно навести курсор на Button1, не двигая мышь? полюбому будет вызываться событие MouseMove для Button1
← →
XProger © (2004-10-08 02:00) [6]
SetCursorPos
← →
Defunct © (2004-10-08 03:09) [7]
Function MouseOnLabel(Lab:TLabel; Pt:TPoint):Boolean;
Begin
MouseOnLabel := (PT.X>0) And (PT.Y>0) And
(PT.X<Lab.Width) And (PT.Y<Lab.Height);
End;
procedure TAboutForm.Timer2Timer(Sender: TObject);
Var P1:TPoint;
begin
P1:=Label1.ScreenToClient( Mouse.CursorPos );
If MouseOnLabel(Label1, P1) Then
Begin
Label1.Font.Color := clRed;
Label1.Caption := "Активен";
End Else
Begin
Label1.Font.Color := clBlue;
Label1.Caption := "Пассивен";
End;
end;
← →
Fedia © (2004-10-08 04:22) [8]Похоже человек имеет в виду, что помимо срабатывания процедуры Button1MouseMove, текст Label-а меняет еще какая-то процедура:
> Но на лабел постоянно посылается другой текст
Ведь иначе вариант kukuikar © (06.10.04 10:49) [2] был бы и в его случае, абсолютно рабочим.
Определи, что еще меняет текст Label-а, и прекрати это безобразие :)
← →
Defunct © (2004-10-08 18:54) [9]Fedia © (08.10.04 04:22) [8]
Запустите пример [7] и пример [2] сравните в чем разница.
← →
Fedia © (2004-10-09 01:51) [10]Удалено модератором
Примечание: ... из-за невнимательности отправителя.
← →
Fedia © (2004-10-09 05:04) [11]Предыдущий post считать не действительным, из-за невнимательности отправителя.
To Defunct.
Если говорить о Вашем примере, то, судя по вопросу clampo, он должен быть таким:
Function MouseOnButton(SB: TButton; Pt: TPoint):Boolean;
Begin
Result :=(PT.X>0) And (PT.Y>0) And
(PT.X<SB.Width) And (PT.Y<SB.Height);
End;
procedure TForm1.Timer1Timer(Sender: TObject);
Var P1:TPoint;
begin
P1:=Button1.ScreenToClient( Mouse.CursorPos );
If MouseOnButton(Button1, P1) Then
Begin
Label1.Font.Color := clRed;
Label1.Caption := "Активен";
End Else
Begin
Label1.Font.Color := clBlue;
Label1.Caption := "Пассивен";
End;
end;
Но, как и пример [2], он скорее всего не поможет, если заголовок Label-а меняет еще какая-то процедура. Конечно, можно установить очень меленький интервал работы таймера, и игнорировать все остальные изменения заголовка Label-а, но, по-моему, это пахнет плохим стилем программирования.
P.S. Вы когда-нибудь спите? Я имею в виду, что у нас большая разница в часовых поясах, но если я посещаю форум, то постоянно вижу Ваши свежие сообщения. Так и измотать себя можно :)
← →
Defunct © (2004-10-09 13:02) [12]> Но, как и пример [2], он скорее всего не поможет
Зависит от автора вопроса.
> Конечно, можно установить очень меленький интервал работы таймера, и игнорировать все остальные изменения заголовка Label-а
40-100 мс, и менять заголовок Label только в обработчике таймера.
> Вы когда-нибудь спите?
да, по выходным ;)
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2004.10.24;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.04 c