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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.05.2009, 07:24   #1
S@fer
Форумчанин
 
Аватар для S@fer
 
Регистрация: 29.01.2009
Сообщений: 411
По умолчанию Работа с динамическим таймером

Добрый день.
Пишу ICQ клиента, возник вопрос
При получении сообщения иконка на вкладке начинает мигать (как в QIPe). но при получении нового сообщения первая иконка перестает мигать, а вторая начинает
Мигание засунул в таймер
Код:
procedure TF_message.TimerTimer(Sender: TObject);
var
  i:integer;
begin
  for i:=0 to PageExtControl1.ComponentCount-1 do
  begin
    if (PageExtControl1.Components[i] is TTabExtSheet)and
       (TTabExtSheet(PageExtControl1.Components[i]).Name=Form1.imya) then
    begin
       if TTabExtSheet(PageExtControl1.Components[i]).ImageIndex=1 then
       TTabExtSheet(PageExtControl1.Components[i]).ImageIndex:=2 else
       TTabExtSheet(PageExtControl1.Components[i]).ImageIndex:=1;
    end;
  end;
end;
Таймер для каждого контакта создается свой
Код:
  F_Client.kart:=TTimer.Create(F_message);
  F_Client.kart.Name:='Timer'+F_Client.Cont_Uin;
  F_Client.kart.Interval:=500;
  F_Client.kart.Enabled:=False;
  F_Client.kart.OnTimer:=F_message.TimerTimer;
Запуск таймера по принятию нового сообщения
Код:
for t:=1 to F_message.ComponentCount-1 do
            begin
              if (TTimer(F_message.Components[t]).Name='Timer'+F_Client.Cont_Uin) then
              TTimer(F_message.Components[t]).Enabled:=True;
            end;
           Form1.imya:='Tab'+F_Client.Cont_Uin;
При получении нового сообщения переменная Form1.imya меняет свое значение, поэтому иконка на предыдущей вкладке перестает мигать, как этого можно избежать?
S@fer вне форума Ответить с цитированием
Старый 06.05.2009, 09:00   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Знаешь, наверное я бы на твоем месте в F_Client.kart.tag засунул номер вкладки, а в самом обработчике уже выбирал TabScheet по номеру в TTimer(Sender).tag

Но по-моему лучше всего при приходе сообщения создавать новый поток, в котором в цикле поставить ченить типа:
Код:
for i:=0 to 5 {мигаем пять раз} do begin
 Подсветить иконку
 sleep(100);
 выключить иконку
 sleep(100);
end;
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с динамическим массивом sand Общие вопросы C/C++ 3 22.08.2008 12:48
Помогите с таймером Михаил Юрьевич Общие вопросы Delphi 10 03.06.2008 20:35
Работа с динамическим массивом и его елементами Padovan Паскаль, Turbo Pascal, PascalABC.NET 2 21.05.2008 20:55
Работа с Таймером Иринкаа Компоненты Delphi 6 22.11.2007 21:59
Работа с таймером Alika Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 12.11.2007 19:27