Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.11.2009, 13:51   #1
Marsel737
Форумчанин
 
Аватар для Marsel737
 
Регистрация: 09.11.2009
Сообщений: 669
Вопрос

Всем привет!

У меня есть 20 лэйблов на форме, нужно чтоб при наведении курсора на любой из них менялся его цвет, а при отведении снова менялся на стандартный.

Прописывать для каждого лэйбла Nouse Mov и Mouse Leave по отдельности слишком муторно, поэтому я все лэйблы засунул в массив, а что делать дальше не знаю. Подскажите пожалуста как быть.

В тамйер записал:

for i:=1 to 20 do
if LabelA[i].OnMouseLeave then Labela[i].Font.Color:=clGreen;

Нада ещё указать параметр, потому что так не катит, а вот какой параметр?
Я не всегда знаю, о чем говорю, но знаю, что прав. © Мухаммед Али.
К чёрту обстоятельства. Я создаю возможности. © Брюс Ли

Последний раз редактировалось Stilet; 23.11.2009 в 10:17.
Marsel737 вне форума Ответить с цитированием
Старый 22.11.2009, 14:01   #2
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

не нужно в массив и таймер, объедините их под общими событиями, например так:
Код:
procedure TForm1.Label2MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
 (sender as tlabel).font.color:= clgreen
end;

procedure TForm1.Label2MouseLeave(Sender: TObject);
begin
 (sender as tlabel).font.color:= clblack
end;
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 22.11.2009, 14:10   #3
Marsel737
Форумчанин
 
Аватар для Marsel737
 
Регистрация: 09.11.2009
Сообщений: 669
По умолчанию

raxp, не получается так как вы говорите, только тот лэйбл и реагирует, например в Label2 как в вашем коде, а остальные нет.

И ещё, если даже это заработает, то как быть если на форме кроме 20 лэйблов, которые должны менять цвет есть и те которые не должны меняться?
Я не всегда знаю, о чем говорю, но знаю, что прав. © Мухаммед Али.
К чёрту обстоятельства. Я создаю возможности. © Брюс Ли
Marsel737 вне форума Ответить с цитированием
Старый 22.11.2009, 14:22   #4
Neeter
Форумчанин
 
Аватар для Neeter
 
Регистрация: 22.02.2009
Сообщений: 875
По умолчанию

Дак вы же в массив заносите, каждому лейблу в цикле присваивайте данное событие
Код:
label.onClick := Label2MouseMove;
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство.
Neeter вне форума Ответить с цитированием
Старый 22.11.2009, 14:25   #5
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Цитата:
только тот лэйбл и реагирует, например в Label2 как в вашем коде, а остальные нет.
Цитата:
Код:
procedure TForm1.Label2MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
 (sender as tlabel).font.color:= clgreen
end;
Код:
procedure TForm1.Label2MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
for i:=1 to 20 do
Labela[i].Font.Color:=clGreen;
end;
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 22.11.2009, 14:27   #6
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

Цитата:
raxp, не получается так как вы говорите, только тот лэйбл и реагирует, например в Label2 как в вашем коде, а остальные нет.

И ещё, если даже это заработает, то как быть если на форме кроме 20 лэйблов, которые должны менять цвет есть и те которые не должны меняться?
еще раз обращаю ваше внимание на (это важно)
Цитата:
объедините их под общими событиями
см. скрин (левая группа под общими, правая сама по себе), проект во вложении
Изображения
Тип файла: jpg cкрин.jpg (13.3 Кб, 48 просмотров)
Вложения
Тип файла: zip labels.zip (190.4 Кб, 7 просмотров)
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 22.11.2009, 14:28   #7
Marsel737
Форумчанин
 
Аватар для Marsel737
 
Регистрация: 09.11.2009
Сообщений: 669
По умолчанию

Neeter, я что-то не допонял, это разве не при нажатии?

label.onClick := Label2MouseMove;

А мне нужно при наведении курсора на Label
Я не всегда знаю, о чем говорю, но знаю, что прав. © Мухаммед Али.
К чёрту обстоятельства. Я создаю возможности. © Брюс Ли
Marsel737 вне форума Ответить с цитированием
Старый 22.11.2009, 14:29   #8
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Цитата:
Сообщение от Marsel737 Посмотреть сообщение
raxp, не получается так как вы говорите, только тот лэйбл и реагирует, например в Label2 как в вашем коде, а остальные нет.

И ещё, если даже это заработает, то как быть если на форме кроме 20 лэйблов, которые должны менять цвет есть и те которые не должны меняться?
raxp просто понадеялся на вашу смекалку
Эти обработчики (для Label2) назначьте всем лэйблам, которые должны менять цвет. Делается это в инспекторе объектов - выберите для нужных лэйблов Label2MouseLeave и Label2MouseEnter (я предлагаю это событие использовать вместо Label2MouseMove).
mihali4 вне форума Ответить с цитированием
Старый 22.11.2009, 14:30   #9
Neeter
Форумчанин
 
Аватар для Neeter
 
Регистрация: 22.02.2009
Сообщений: 875
По умолчанию

Цитата:
Neeter, я что-то не допонял, это разве не при нажатии?

label.onClick := Label2MouseMove;
Поторопился, но не видно что ли где ошибка?
Код:
label.onMouseMove := Label2MouseMove;
А вообще, mihali4 прав. Я думал вы динамически создаете лейблы.
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство.
Neeter вне форума Ответить с цитированием
Старый 22.11.2009, 14:34   #10
Marsel737
Форумчанин
 
Аватар для Marsel737
 
Регистрация: 09.11.2009
Сообщений: 669
По умолчанию

raxp, спасибо большое, теперь понял, да и вообще всем спасибо за столь активноую мне помощь
Я не всегда знаю, о чем говорю, но знаю, что прав. © Мухаммед Али.
К чёрту обстоятельства. Я создаю возможности. © Брюс Ли
Marsel737 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
не работает m_pSet->Move(i); primeplus Общие вопросы C/C++ 0 28.09.2009 19:14
Процедура MOVE iiunbreakableii Общие вопросы Delphi 1 15.09.2009 16:35
Блокировка Form move/resize Alex_C Общие вопросы Delphi 2 04.03.2009 16:20
Mouse Roll ax4start Софт 0 31.10.2008 09:50
Mouse самовольничает! Altera Компьютерное железо 13 06.04.2008 19:26