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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 31.05.2010, 22:41   #1
Horus92
Форумчанин
 
Аватар для Horus92
 
Регистрация: 04.05.2009
Сообщений: 147
По умолчанию Динамический Ttimer передача параметра

Можно ли как - то при динамическом создании таймера передать число из переменной в него чтоб она в нем использовалась?. Только передать именно значение потому что потом значение переменной меняется.
Horus92 вне форума Ответить с цитированием
Старый 01.06.2010, 02:33   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

ну есть у таймера св-во Interval и у всех компонентов есть св-во Tag, которое можно использовать как хотите.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 01.06.2010, 08:48   #3
Horus92
Форумчанин
 
Аватар для Horus92
 
Регистрация: 04.05.2009
Сообщений: 147
По умолчанию

так может и получиться но я не знаю как. вот вся ситуация
я создаю динамически таймер через массив записей

Код:
data[i].timerspeed:=Ttimer.Create(application);  //Создание таймера скорости
data[i].timerspeed.Interval := 1000  ;
data[i].timerspeed.OnTimer:=form2.timespeed; //Событие таймера скорости
data[i].timerspeed.Enabled:=true;         //Отключение таймера
Задаю ему событие.Мне нужно передать "i"

Код:
procedure TForm2.timespeed(Sender: TObject);
var point1,point2:integer;
begin
if  data[].tmpsize>0 then
  begin
  if k=0 then
    begin
      point2:=data[].tmpsize;
      k:=1;
    end
   else
    begin
      point1:=data[].tmpsize;
      data[].speed:=(point1-point2) div 1024;
      form3.speed.Caption:=inttostr(data[].speed)+ ' Kb\s';
      k:=0;
    end;
  end;
end;
и вот тут я должен использовать этот "i" но как? я думал через self но селф это класс этого окна где я создаю таймер.
Horus92 вне форума Ответить с цитированием
Старый 01.06.2010, 09:03   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Код:
data[i].timerspeed.Enabled:=true;         //Отключение таймера
Это - ВКЛЮЧЕНИЕ таймера..

Цитата:
Код:
data[].tmpsize
а где описание структуры data ?!
имхо, Вы чего-то странного хотите..

у Вас в Sender уже передан тот таймер, который сработал..
Вам этого мало?!
Вам всё таки нужно получить его номер в массиве? (тот самый I) ?

Так воспользуйтесь советом уважаемого Пепел Феникса,
используйте поле tag:

Код:
data[i].timerspeed:=Ttimer.Create(application);  //Создание таймера скорости
data[i].timerspeed.Interval := 1000  ;
data[i].timerspeed.Tag := i ;
data[i].timerspeed.OnTimer:=form2.timespeed; //Событие таймера скорости

... потом в коде procedure TForm2.timespeed(Sender: TObject);
достаточно
i :=TTimer(Sender).Tag;

Последний раз редактировалось Serge_Bliznykov; 01.06.2010 в 09:06.
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Передача параметра в поток Sanprof Общие вопросы Delphi 10 08.07.2015 14:11
передача параметра в конструктор пауэрлифтинг Общие вопросы Delphi 2 27.04.2010 21:27
передача параметра по ссылке veter_s_morya PHP 7 18.10.2009 16:43
Передача функции как параметра ezus Общие вопросы C/C++ 2 24.08.2009 10:19
Передача параметра в поток joker Win Api 10 22.12.2007 12:53