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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.02.2013, 18:02   #1
Xaker_Two
Пользователь
 
Регистрация: 03.02.2013
Сообщений: 73
Вопрос Как обратиться к элементу с динамичным именем??

Привет. У меня есть небольшой вопрос к вам, товарищи программисты: у меня элемент таймер в силу обстоятельств имеет динамичное имя! а как к нему обратиться?? вот обрезок кода(этого вполне достаточно!)
Код:
 c:=c+1;
 Tmr:= TTimer.Create(Form1);
 Tmr.OnTimer := Timer3.OnTimer;
 Tmr.Interval := 1;
 Tmr.Name:='Timr'+IntToStr(c);
 Tmr.Interval := 0;
 ?????.Enabled := True;
 
 procedure TForm1.FormCreate(Sender: TObject);
 begin
 c:=0;
 end;
что надо написать на месте знаков вопросов чтобы обратиться к таймеру который только что создал?( Tmr.Name:='Timr'+IntToStr(c); )
Xaker_Two вне форума Ответить с цитированием
Старый 22.02.2013, 18:12   #2
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Ы? Вы же обращаетесь не по полю "имя" объекта, а по имени переменной. Которое, естественно, не изменилось - Tmr.
Abstraction вне форума Ответить с цитированием
Старый 22.02.2013, 18:16   #3
Xaker_Two
Пользователь
 
Регистрация: 03.02.2013
Сообщений: 73
По умолчанию

нет мне по имени Tmr обращаться не нужно т.к. прошлый таймер созданый при неких условиях встанет яж специально имя объекта изменил с Tmr на Timr+c которая меняет свое значения с каждым событием!
Xaker_Two вне форума Ответить с цитированием
Старый 22.02.2013, 18:29   #4
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Цитата:
нет мне по имени Tmr обращаться не нужно т.к. прошлый таймер созданый при неких условиях встанет яж специально имя объекта изменил с Tmr на Timr+c которая меняет свое значения с каждым событием!
То есть, Вы считаете, что
Код:
 Tmr.Interval := 0;
устанавливает свойство Interval для некоторого "прошлого" таймера? Если да, то у меня для Вас плохие новости: Вы не понимаете разницы между объектом и именем переменной.
Код:
 Tmr:= TTimer.Create(Form1);
Этот код создаёт новый таймер и "связывает" (скажем пока так) переменную Tmr с этим новосозданным объектом.
Abstraction вне форума Ответить с цитированием
Старый 22.02.2013, 18:44   #5
Xaker_Two
Пользователь
 
Регистрация: 03.02.2013
Сообщений: 73
По умолчанию

Цитата:
Сообщение от Abstraction Посмотреть сообщение
Ы? Вы же обращаетесь не по полю "имя" объекта, а по имени переменной..
Хорошо. а как обратиться по имени объекта?? ведь именно это мне и надо

Цитата:
Сообщение от Abstraction Посмотреть сообщение
Вы не понимаете разницы между объектом и именем переменной.
Я не считаю что Tmr.Interval := 0; я присваиваю старому таймеру! я знаю что я это делаю с одним и тем же таймером мне просто нужна "таймерная болванка" которую потом я смог бы переименовать и оперировать с ней как с другим объектом, но не могу добиться этого! я не понимаю как обратиться к таймеру по имени 'Tmr'+IntToStr(c)!!! если я правильно понимаю(в чем я не очень уверен) это уже другой таймер который не будет стопаться при создании нового! или мне лучше действовать через массив таймеров?? Тогда такойже вопрос как обратиться к таймеру из массива? Ведь у него есть индекс(а если их будет 500?)!

Последний раз редактировалось Stilet; 22.02.2013 в 22:00.
Xaker_Two вне форума Ответить с цитированием
Старый 22.02.2013, 19:02   #6
ReportCube
Форумчанин
 
Аватар для ReportCube
 
Регистрация: 11.03.2011
Сообщений: 426
По умолчанию

Зачем? Есть две команды SetTimer() и KillTimer(), один обработчик в окне
procedure WMTimer(var Msg: TWMTimer); message WM_TIMER;
Делайте таймеров сколь угодно много и работайте
ReportCube вне форума Ответить с цитированием
Старый 22.02.2013, 19:21   #7
Xaker_Two
Пользователь
 
Регистрация: 03.02.2013
Сообщений: 73
По умолчанию

А если поподробней... как с этим работать можете разъяснить или ссылку дать!

Цитата:
Сообщение от ReportCube Посмотреть сообщение
Делайте таймеров сколь угодно много и работайте
у меня имена(идентификаторы) должны задаваться от переменной С, и даже если я это сделаю то как мне к таймеру то обращаться??

Последний раз редактировалось Stilet; 22.02.2013 в 22:01.
Xaker_Two вне форума Ответить с цитированием
Старый 22.02.2013, 19:45   #8
ReportCube
Форумчанин
 
Аватар для ReportCube
 
Регистрация: 11.03.2011
Сообщений: 426
По умолчанию

Во-первых, справка - всегда поможет.
Во-вторых - есть исходники, смотрите в модуле Grig указанный мной метод, там всё есть
Все создаваемые и убиваемые таймеры имеют номер, который вы им укажите. Вот от этих номеров и "танцуйте".
ReportCube вне форума Ответить с цитированием
Старый 22.02.2013, 19:54   #9
Xaker_Two
Пользователь
 
Регистрация: 03.02.2013
Сообщений: 73
По умолчанию

Все спс до меня доперло ели чо напишу проблему!

Слушай а не можешь подсказать синтаксис SetTimer, ReportCube? А то смотрю в инете нихрена не понимаю! Или дай ссылку где по человечески объясняется и приведён пример!!! или сам напиши образец с разъяснениями плиз...

Последний раз редактировалось Stilet; 22.02.2013 в 22:04.
Xaker_Two вне форума Ответить с цитированием
Старый 22.02.2013, 20:35   #10
ReportCube
Форумчанин
 
Аватар для ReportCube
 
Регистрация: 11.03.2011
Сообщений: 426
По умолчанию

SetTimer(Handle, 13, 2000, nil); Создали таймер № 13 с интервалом 2000
KillTimer(Handle, 13); Убили таймер № 13
SetTimer(Handle, 13, 12000, nil); Создали таймер № 13 с интервалом 12000
KillTimer(Handle, 13); Убили таймер № 13
В обработчике
if Msg.TimerID = 13 then begin
// Обычно убиваю таймер
// Делаем что-то.
// на выходе создаю таймер, если нужен
end;
ReportCube вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как обратиться к элементу массива (TASM)) Artur1992 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 26.05.2012 19:17
File1 .Дана строка S. Если S является допустимым именем файла, то создать пустой файл с этим именем и вывести True. Евгений1240 Помощь студентам 0 24.04.2012 14:26
CSS: как обратиться к элементу? Fenex HTML и CSS 1 02.03.2012 15:01
Обратиться к элементу страницы по имени тега в delphi webbrowser designer999 Работа с сетью в Delphi 9 15.09.2010 19:20
Как можно обратиться к элементу строки в двумерном массиве ? fermerius Помощь студентам 1 06.02.2010 19:14