![]() |
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]() ![]() ![]() |
|
SkyAngel |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 36 Регистрация: 11.1.2009 Где: Беларусь, Минск Репутация: нет Всего: нет |
В общем такая проблема: по воле судьбы мне необходимо 15 компонентов TImage. По сути их задачи практичеки похожи. Точнее обработчик почти один и тот же. В общем названия каждого компоненты - ImageIDXX ( где XX - номер Timage. При числах от 1 до 9 пишеться 01-09).
В коде есть момент, где каждому компоненту необходимо присвоить свою картинку, в зависимости от условий. Картинки могут повторяться. Мне очень хотелось бы организовать цикл с оператором "For". Однако вся проблема в том, что я не знаю как обратиться к компоненту с другим именем в цикле. То есть логично должно выглядеть так: For i:= 1 to 15 do begin Image+i.picture.loadFromFile:=x; end; Мне необходим рабочий вариант, потому что каждому TImage необходимо придать не одно значение... И 45 строк кода, почти идентичным мне не нравяться... |
|||
|
||||
Poseidon |
|
|||
![]() Delphi developer ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 5273 Регистрация: 4.2.2005 Где: Гомель, Беларусь Репутация: 53 Всего: 133 |
Используй свойство tag. В цикле проверяй это свой свойство. Твои XX - это и будет tag.
-------------------- Если хочешь, что бы что-то работало - используй написанное, если хочешь что-то понять - пиши сам... |
|||
|
||||
SkyAngel |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 36 Регистрация: 11.1.2009 Где: Беларусь, Минск Репутация: нет Всего: нет |
Пример из просторов Интернета:
Однако я не разобрался - как мне обратиться к этому объекту? TEdit(Components[i]) - это непосредственно имя компонента? или как? Это сообщение отредактировал(а) SkyAngel - 13.2.2009, 01:23 |
|||
|
||||
Poseidon |
|
|||
![]() Delphi developer ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 5273 Регистрация: 4.2.2005 Где: Гомель, Беларусь Репутация: 53 Всего: 133 |
Чего ты пристал к имени? Указываешь каждому компоненту свой tag по порядку. Затем циклом проходишься по всем компонентам и ищешь нужный тебе. Вот допустим у тебя 15 TImage. Тебе нужно первые 5 скрыть. Делаешь:
Это сообщение отредактировал(а) Poseidon - 13.2.2009, 01:29 -------------------- Если хочешь, что бы что-то работало - используй написанное, если хочешь что-то понять - пиши сам... |
|||
|
||||
StingWINg |
|
|||
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 17.11.2008 Репутация: нет Всего: нет |
Я бы посоветовал задать массив TImage`й. Как они создаются в программе? Динамически или на форму вытаскиваешь?
А дальше как обращатся с массивом, думаю известно. ![]() |
|||
|
||||
THandle |
|
|||
![]() Хранитель Клуба ![]() Награды: 1 Профиль Группа: Админ Сообщений: 3639 Регистрация: 31.7.2007 Где: Moscow, Dubai Репутация: 65 Всего: 372 |
StingWINg, зачем какой то массив?
Можно либо с тегами, как показал Poseidon, или же можно поиграться и через имя с помощью FindComponent. |
|||
|
||||
JSinx |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 71 Регистрация: 12.12.2006 Репутация: нет Всего: 1 |
Как вариант, если часто нужно обращаться к этим картинкам,то это будет работать быстрее, чем перебирать все компоненты приложения. |
|||
|
||||
StingWINg |
|
|||
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 17.11.2008 Репутация: нет Всего: нет |
THandle, так как
То очень может быть, что удобней объявить их массивом. Как пример - они ведь врядли по форме разбросаны, т.е. они как-нибудь все выравнены, так вот можно положение связать с индексом или вручную кидать на форму и расставлять. В общем вопрос удобства и личных предпочтений. Исходники я не видел, поэтому судить о том, что лучше не буду! ![]() |
|||
|
||||
THandle |
|
|||
![]() Хранитель Клуба ![]() Награды: 1 Профиль Группа: Админ Сообщений: 3639 Регистрация: 31.7.2007 Где: Moscow, Dubai Репутация: 65 Всего: 372 |
Тогда лучше массива использовать TList. Можно и в случае с динамическим созданием использовать и с просто накиданными на форму TImag'ами
![]() |
|||
|
||||
SkyAngel |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 36 Регистрация: 11.1.2009 Где: Беларусь, Минск Репутация: нет Всего: нет |
Да, так и есть. Мне дейстивтельно надо к ним часто обращаться. А поподробнее про функцию FindComponent? Какое значение она отдаёт? Какова сигнатура? Маленький примерчик, если не сложно =) |
|||
|
||||
THandle |
|
|||
![]() Хранитель Клуба ![]() Награды: 1 Профиль Группа: Админ Сообщений: 3639 Регистрация: 31.7.2007 Где: Moscow, Dubai Репутация: 65 Всего: 372 |
SkyAngel, поиск рулит:
http://forum.vingrad.ru/act-Search/CODE/sh...nent/index.html Буквально вчера: http://forum.vingrad.ru/index.php?showtopi...t&p=1784111 Если часто, то я бы сначала заполнял бы(в OnCreate например) некий TList этими TImage'ми, а потом с ним работал, наверное ![]() |
|||
|
||||
SkyAngel |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 36 Регистрация: 11.1.2009 Где: Беларусь, Минск Репутация: нет Всего: нет |
По сути написал - и параллельно нашёл всё что надо. Большое спасибо. Вот это действительно то, что мне надо было!
|
|||
|
||||
SkyAngel |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 36 Регистрация: 11.1.2009 Где: Беларусь, Минск Репутация: нет Всего: нет |
Чтобы не создавать новую тему - может кто-нибудь ответит - как создать маленькую кнопочку типа TbitBtn в заголовке страниц TPageControl? Очень необходимо маленькая кнопочка "Обновить" =)
|
|||
|
||||
THandle |
|
|||
![]() Хранитель Клуба ![]() Награды: 1 Профиль Группа: Админ Сообщений: 3639 Регистрация: 31.7.2007 Где: Moscow, Dubai Репутация: 65 Всего: 372 |
SkyAngel, в правилах вроде бы ясно написано... но... повторюсь:
Модератор: Пожалуйста, один топик - один вопрос. Создай новую тему, незачем смешивать вопросы. Будущему поколению неудобно будет искать. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: Общие вопросы" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |