Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.026 c
14-1096497543
Homa_Programer
2004-09-30 02:39
2004.10.24
Сеть


14-1096711272
Piter
2004-10-02 14:01
2004.10.24
Почему не срабатывает установка WindowsState?


3-1095993660
Oleg2
2004-09-24 06:41
2004.10.24
Как сделать, чтобы в гриде редактировать


1-1097215485
MegaVolt
2004-10-08 10:04
2004.10.24
Как отрисовать кусочек TMetaFileCanvas?


6-1092421868
Junior
2004-08-13 22:31
2004.10.24
TServerSocket в консольном приложении





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский