Модераторы: Poseidon, Snowy, bems, MetalFan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Обращение к компоненту по имени, имя задаётся строкой 
V
    Опции темы
SilverMax
  Дата 20.4.2006, 17:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 38
Регистрация: 25.12.2005
Где: Москва

Репутация: нет
Всего: нет



 smile Мне в цикле надо изменить св-ва однотипных компонентов, пытался сделать через TControl и TComponent-не получилось, можно как-нить обратиться к компоненту по имени, если имя задано строкой?  
PM   Вверх
_hunter
Дата 20.4.2006, 17:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 15
Всего: 98



по имени нельзя. можно пробежаться по всем компонентам родителя и сверить их имся с искомым.
если компоненты создаются в RunTim' е -- можно их мапу создать ( или просто в список толкать ) хотя смысл?.. 


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
SilverMax
Дата 20.4.2006, 17:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 38
Регистрация: 25.12.2005
Где: Москва

Репутация: нет
Всего: нет



Как я пробегусь и сверю, если в цикле имя компонента постоянно должно меняться? 
PM   Вверх
_hunter
Дата 20.4.2006, 17:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 15
Всего: 98



в смысле? обращение к коллекци по индексу идет. вот имя полученного элемента и сверяй со своим 


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
SilverMax
Дата 20.4.2006, 17:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 38
Регистрация: 25.12.2005
Где: Москва

Репутация: нет
Всего: нет



В общем, я делаю так:
Код

for i:=1 to Number do
 for j:=0 to ControlCount-1 do
  if Controls[j].Tag=i then
   with Controls[j] as TbsSkinDBImage do
    DataField:='Test'+IntTostr(A[i]);


Каждый DBImage.Tag индексирован.
Что изменить надо? 
PM   Вверх
_hunter
Дата 20.4.2006, 17:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 15
Всего: 98



добавь if  Controls[j].Name =name then 


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
SilverMax
Дата 20.4.2006, 17:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 38
Регистрация: 25.12.2005
Где: Москва

Репутация: нет
Всего: нет



Так?
Код

for i:=1 to Number do
 for j:=0 to ControlCount-1 do
  if Controls[j].Name='Test'+IntToStr(i) then
   with Controls[j] as TbsSkinDBImage do
    DataField:='Test'+IntToStr(A[i]);


Не пахает. 
PM   Вверх
_hunter
Дата 20.4.2006, 17:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 15
Всего: 98



что значит "не пахает"? у меня все пашет... 


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
SilverMax
Дата 20.4.2006, 17:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 38
Регистрация: 25.12.2005
Где: Москва

Репутация: нет
Всего: нет



Последнюю строку вообще не выполняет
Код

DataField:='Test'+IntToStr(A[i]);

Я поменял её на
Код

Stretch:=True;

Думал дело в DataField всё равно не пахает smile  
PM   Вверх
_hunter
Дата 20.4.2006, 17:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 15
Всего: 98



еще один...
"не выполняет" по какой причине. что ты понимаеш под "не выполняет"?
что значит "не пахает"? 


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
SilverMax
Дата 20.4.2006, 17:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 38
Регистрация: 25.12.2005
Где: Москва

Репутация: нет
Всего: нет



Короче, не меняется вообще дата филд, он долен каждый раз рандомно изменяться при показе формы, рандомный значения в массиве "A". В БД есть поля "Test1, Test2...Test12" вот он и должен поменять дата филды на рандомные. 
PM   Вверх
_hunter
Дата 20.4.2006, 18:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 15
Всего: 98



во-первых: почему ты решил что твой код должен выполнять вышеописанные действия?
во-вторых: каковы причины "неизменения" (сам хоть чуть-чуть поработать можеш?)
и наконец в-третьих: почемы ты решил что  DataField' ы лежат на форме (а именно там ты их ищеш)? 


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
SilverMax
Дата 20.4.2006, 18:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 38
Регистрация: 25.12.2005
Где: Москва

Репутация: нет
Всего: нет



Во-первых: это означает обращение к DataField у указанного контрола:
Код

with Controls[j] as TbsSkinDBImage do    
    DataField:='Test'+IntToStr(A[i]);

Во-вторых: почему бы этому коду не выполнять вышеуказанные действия?
В-третьих: у меня уже мозги пужнут от всей этой проги! 
PM   Вверх
Демо
Дата 20.4.2006, 18:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1278
Регистрация: 3.11.2005

Репутация: 30
Всего: 50



Цитата(SilverMax @  20.4.2006,  17:08 Найти цитируемый пост)
можно как-нить обратиться к компоненту по имени, если имя задано строкой? 


См. FindComponent 


--------------------
    
PM MAIL ICQ Skype   Вверх
x77
Дата 20.4.2006, 18:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1255
Регистрация: 25.3.2002

Репутация: 19
Всего: 22



а также FindChildControl & FindNextControl. эони ищёт по имени именно контролы, т.е. наследников от TWinControl и счастливых обладателей свойства Handle сиречь дескриптора окна (все визуальные элементы управления, иными словами), в то время как FindComponent ищет любого наследника от TComponent. т.о. он найдёт и невизуальные компоненты тоже. 


--------------------
Я никогда не сопротивлялся искушению, поскольку узнал: что мне
не нравится, то меня не искушает.
© Джордж Бернард Шоу (Ирландия)
PM MAIL ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0985 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.