| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > Имена компонентов в массиве |
| Автор: CODARZ 4.10.2003, 13:29 |
| У меня следущая проблема: Есть цикл. С помощью этого цикла несколько однотипных компонентов должны совершить одно и тоже действие. Все имена компонентов должны содержатся в массиве components типа string. Цикл должен увеличивать переменную i и тем самым сменять компонент... Как это сделать?... |
| Автор: <Spawn> 4.10.2003, 13:43 | ||||||
| Думаю, что для этого не нужно содержать имена компонентов в стринговом массиве. задаешь массив компонентов(на примере с TLabel):
затем, допустим, на OnCreate формы заполняешь этот массив нужными тебе компонентами:
Затем когда тебе нужно обратиться к какому нить свойству\методу всех этих компонентов, запускаешь цикл:
|
| Автор: CODARZ 4.10.2003, 13:51 |
| А как быть если компоненты разных типов? |
| Автор: CODARZ 4.10.2003, 14:04 | ||
| Все, спасибо, я уже разоюрался. Для использования различных типов компонентов можно сделать вот так
|
| Автор: CODARZ 4.10.2003, 14:44 | ||||
Не... все-таки это всеравно не работает... только что проверил... Оказывается не пашет... |
| Автор: <Spawn> 4.10.2003, 15:36 |
| какие компоненты используешь? |
| Автор: CODARZ 4.10.2003, 16:07 | ||
Из библиотеки компонентов DCPCrypt. Компоненты для шифрования файлов, для каждого алгоритма свой компонент... |
| Автор: <Spawn> 4.10.2003, 16:16 |
| Посмотри какой у них общий предок и его используй. Нажми Ctrl и кликни на название обьекта - там видно будет от какого класса он наследуется. |
| Автор: CODARZ 4.10.2003, 16:28 | ||
Там у каждого компонента разные классы у одних TDCP_blockcipher128 у других TDCP_blockcipher64, поэтому не можешь сказать как вызвать компонент просто по номеру Например: Я переименую все компоненты как CryptComponent1,2,3,4,5,6,7 и т.д. и чтобы можно было просто подставить номер и вызвать компонет, вот по такому шаблону: CryptComponent[номер копонента].EncryptString(F.Text); Скажи если знаешь, plz... |
| Автор: <Spawn> 4.10.2003, 16:35 | ||
Ну дак посмотри какой предок у этих TDCP_blockciper128, TDCP_blockciper64 до тех пор пока не найдешь общего(TObject ты точно найдешь ))))) ). Если их общий предок не будет обладать нужным тебе методом, то можно сделать так:
|
| Автор: CODARZ 4.10.2003, 16:40 | ||||
Я нашел, это - TDCP_cipher надеюсь сработает |
| Автор: CODARZ 4.10.2003, 16:44 | ||||
Кажется работает, вот только боюсь как бы не было проблем в способах шифрования, а то вдруг чего неправильно зашифруется... |
| Автор: <Spawn> 4.10.2003, 16:53 |
| Ну говорю же проверяй операцией is на принадлежность к тому или иному классу и затем делай так как я уже писал. |
| Автор: CODARZ 4.10.2003, 17:07 | ||
Да, все работает, судя по тестам кажется правильно. Спасбо тебе, из этой темы я узнал много нового и полезного для себя |
| Автор: <Spawn> 4.10.2003, 17:25 |
| Всегда пожалста |
| Автор: var-alex 7.10.2003, 08:14 | ||
Слушайте, народ. а компоненты на форме лежат?? Тогда может проще было так:
|