![]() |
|
|
![]()
|
|
| svyashennik |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 75 Регистрация: 21.4.2006 Где: Питер Репутация: нет Всего: нет |
Помогите чем смогите!! Есть форма на ней, скажем, едиты и лейблы (штук 10 каждого) и мне надо записать в ричэдит содержание едитов и заголовки лейблов. И мне надо сделать это для небольшого колличества элементов (именование такое: Leabel1...10 и Edit1...10). Как это сделать для Leabel1...3 и Edit1...3.
Я пытался сделать в форе с помощью FindeComponent("Leabel" + i), но что-то не выходит. Пожалуйсто напишите пример правильной реализации. |
|||
|
||||
| mr.Anderson |
|
|||
![]() iOS Lead Developer ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3374 Регистрация: 20.12.2004 Где: далеко Репутация: 3 Всего: 128 |
Я лично делаю так. Задаю всем нужным компонентам какой-нить идентификатор (например, в свойстве Tag), а затем делаешь вот таким образом:
|
|||
|
||||
| Klin |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1938 Регистрация: 7.10.2002 Где: Краснодар Репутация: 20 Всего: 25 |
А можно еще так:
Надо только знать номер компонента (желтым выделил), для этого используй ComponentIndex, а их количество ComponentCount. Помойму, проще не придумаешь Это сообщение отредактировал(а) Klin - 6.4.2007, 22:49 -------------------- Я человек - попробуйте обвинить меня за это. |
|||
|
||||
| svyashennik |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 75 Регистрация: 21.4.2006 Где: Питер Репутация: нет Всего: нет |
:
((TLabel*)Components[1])->Caption = "надпись"; Это да. Но перебираются все компоненты, а если мне надо, допустим, изменить Caption у Label2 и 3, то как это сделать цикле. |
|||
|
||||
| Klin |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1938 Регистрация: 7.10.2002 Где: Краснодар Репутация: 20 Всего: 25 |
Щелкаешь на объект правой кнопкой, далее вид текста и считаешь нужный компонент.
Или просто проверяешь компонент на его класс, можно так:
Вот и все Это сообщение отредактировал(а) Klin - 7.4.2007, 00:04 -------------------- Я человек - попробуйте обвинить меня за это. |
|||
|
||||
| Klin |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1938 Регистрация: 7.10.2002 Где: Краснодар Репутация: 20 Всего: 25 |
А вот рабочий пример моего варианта:
Case # - номер объекта (пример Label3) Components[n]->Name.Delete(1,#) - количество символов в имени (пример: Edit1 - 4 ; Label6 - 5) Components[n]->ClassNameIs("###") - тип компонента (пример: Edit5 - TEdit) Как я и сказал, очень простой вариант. Сначала определяется тип компонента, а затем, вместо Tag`а в качестве метки, используется его имя и номер для определения нужного действия. Это сообщение отредактировал(а) Klin - 7.4.2007, 10:18 -------------------- Я человек - попробуйте обвинить меня за это. |
|||
|
||||
| codelord |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 777 Регистрация: 7.5.2005 Где: ты моя темноглаза я где?! Репутация: 16 Всего: 39 |
будь внимательней с написанием имен функций и названием Label. для десяти лейблов Label1 ... Label10..
|
||||
|
|||||
| Klin |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1938 Регистрация: 7.10.2002 Где: Краснодар Репутация: 20 Всего: 25 |
Это хороший вариант, но как и в случае с dynamic_cast, выделяется дополнительная память. Да и для нахождения объектов разных типов придется использовать несколько циклов. Вот решение поставленной задачи:
-------------------- Я человек - попробуйте обвинить меня за это. |
||||
|
|||||
| codelord |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 777 Регистрация: 7.5.2005 Где: ты моя темноглаза я где?! Репутация: 16 Всего: 39 |
откуда там память? на указатель если только, твои циклы с перебором всех компонентов выглядят мягко говоря не очень красиво, и не гибко. допустим мне надо изменить один лейбл, в этом случае по твоему методу я должен перебором посмотреть все компоненты? и метод который я, предложил выше, является не "хорошим" как ты выразился а стандартным в такой ситуации. Добавлено через 4 минуты и 37 секунд
|
||||
|
|||||
| Klin |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1938 Регистрация: 7.10.2002 Где: Краснодар Репутация: 20 Всего: 25 |
Если нужно изменть три компонента, то ни цикл ни FindComponent использовать вообще не стоит.
-------------------- Я человек - попробуйте обвинить меня за это. |
|||
|
||||
| codelord |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 777 Регистрация: 7.5.2005 Где: ты моя темноглаза я где?! Репутация: 16 Всего: 39 |
а ты не допускаешь что компоненты могут быть созданы динамически? допустим у нас есть некая переменная статик, в какой то момент она равна 10, мы создаем TLabel с именем (Name = "Label"+AnsiString("наш статик") ) после чего хотим в совершенно другой функции задать ему значение скажем "тест", как ты его будешь искать своим перебором? зная только имя, при этом учитывая что на форме он не один? |
|||
|
||||
| Klin |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1938 Регистрация: 7.10.2002 Где: Краснодар Репутация: 20 Всего: 25 |
Как было написано ранее имя такого типа Label + цифрь, отсекаем, Label и остается номер. Практически одно и тоже, только у меня расчитано на дополнительные параметры. з.ы. а если они на объекте типа TPanel расположены то, еще легко:
p.s. А вообще, че спорим, оба способа имеют свой смысл в определенных ситуацих Это сообщение отредактировал(а) Klin - 7.4.2007, 16:56 -------------------- Я человек - попробуйте обвинить меня за это. |
|||
|
||||
| svyashennik |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 75 Регистрация: 21.4.2006 Где: Питер Репутация: нет Всего: нет |
Ребят, куда-то Вы не туда полетели. Я конечно попробовал как говорил Klin с кастом и как mr. Anderson с Tag, НО!! В ричэдите выводится следующее: Label1 Label2 Label3 Edit1 Edit2 Edit3.
А мне надо так: Label1 Edit1 Label2 Edit2 Label3 Edit3. И че делать!!??? |
|||
|
||||
| codelord |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 777 Регистрация: 7.5.2005 Где: ты моя темноглаза я где?! Репутация: 16 Всего: 39 |
[code=cppb] подумать решение уже прозвучало, переделать его под то что тебе нужно довольно просто
|
||||
|
|||||
| svyashennik |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 75 Регистрация: 21.4.2006 Где: Питер Репутация: нет Всего: нет |
Во-о-о-т наконецто написали то, что я и хотел с самого начала!!!!
Спа-си-бо. |
|||
|
||||
![]()
|
| Правила форума "С++ Builder" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C++ Builder | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |