|
|
|
amt |
|
|||
Бывалый Профиль Группа: Участник Сообщений: 249 Регистрация: 26.10.2004 Где: г. Волгоград Репутация: нет Всего: 3 |
Всем доброе время суток!
Начал осваивать C++. До этого работа в VB6. Там для любого сонтрола можно установить индек, например, Image1(0)? Image1(1) и т.д Это очень удобно, так как позволяет в цикле обрабатывать свойства семейства Image1, различая каждый из них по индексу. Подскажите, плиз, можноли сделать это в C++ и если можно, о как? У меня не получилось. Заранее благодарен Добавлено через 12 минут и 18 секунд Мне наверное надо в Bilder Модераторы, перенесите, плиз. --------------------
С точки зрения банальной эрудиции не каждый индивидуум способен игнорировать тенденции парадоксальных эмоций. |
|||
|
||||
bsa |
|
|||
Эксперт Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: нет Всего: 196 |
ты начал осваивать не С++, а C++ Builder. Это совершенно разные вещи (отличия такие же, как basic и visual basic). в С++ это сделать можно, если написать свой собственный класс. В твоем случае различать можно по названию (Image->Name). Это сообщение отредактировал(а) bsa - 24.1.2012, 10:30 |
|||
|
||||
xvr |
|
|||
Эксперт Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 48 Всего: 223 |
Можно перебрать все компоненты на форме - проперти Controls и ControlCount. Дальше разбираться какие из них Image'и (например через dynamic_cast<TImage*>(...) ). Если надо как то отличить сами Image'и друг от друга, то можно пощупать их имена (проперть Name) или задать какие то значения в проперти Tag (он специально для этого предназначен)
|
|||
|
||||
amt |
|
|||
Бывалый Профиль Группа: Участник Сообщений: 249 Регистрация: 26.10.2004 Где: г. Волгоград Репутация: нет Всего: 3 |
Так я и начал делать
Объявил массив TControl *arrTmg[5] Дальше в цикле юзаю Controls формы и если его класс TImage делаю TControl *ChildeControl; For (i=0; i<4; i++) { ChildControl=Form1->Controls[i] Добавлено через 5 минут и 45 секунд If (ChildeControl->ClasName=="TImage" ) arrImg[i]=ChildeControl; Пишу на память поэтому синтаксис может страдать Но в этом блоке все окей Далее я в одной из процедур обращаюсь к массиву делаю цикл и внем указываю arrImg[i]->Top=10; При запуске выдается ошибка связанная с памятью щас не помню Не пойму в чем дело
Я просто не в тот топик засунул и дописал про это --------------------
С точки зрения банальной эрудиции не каждый индивидуум способен игнорировать тенденции парадоксальных эмоций. |
|||
|
||||
sawfish |
|
|||
Бывалый Профиль Группа: Участник Сообщений: 150 Регистрация: 30.7.2008 Где: Новосибирск Репутация: 8 Всего: 8 |
Сделайте приведение типа для указателя контрола:
|
|||
|
||||
xvr |
|
|||
Эксперт Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 48 Всего: 223 |
Вот это arrImg[i]=ChildeControl; неправильно. У вас в массиве arrImg будут дырки. К тому же вы уверены, что у вас на всей форме только 4 контрола?
|
|||
|
||||
amt |
|
||||||
Бывалый Профиль Группа: Участник Сообщений: 249 Регистрация: 26.10.2004 Где: г. Волгоград Репутация: нет Всего: 3 |
Спасибо За ответы
Попробую Я сегодня написаль в отдленой програмке тот код который описывал для фиксированного количества контролов и все работает именно через массив arrImg[i]=ChildeControl. Вот то что у меня работает отдельно
А вот в проге где еще уже что-то наворочено и где этот код необходим, он почему-то не работает, функция SetPos вызывает ошибку при выполнении. Помогите плиз!
По этому поводу у меня второй вопрос, который я хотел задать. Задумка такая что количество контролов будет зависит от настроек пользователя. Как динамически добавлять объекты? Подскажите плиз --------------------
С точки зрения банальной эрудиции не каждый индивидуум способен игнорировать тенденции парадоксальных эмоций. |
||||||
|
|||||||
xvr |
|
||||
Эксперт Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 48 Всего: 223 |
В строке 32 ошибка - заведите отдельный индекс (не i), и по нему складывайте:
|
||||
|
|||||
amt |
|
||||
Бывалый Профиль Группа: Участник Сообщений: 249 Регистрация: 26.10.2004 Где: г. Волгоград Репутация: нет Всего: 3 |
xvr? спасибо за ответ (и всем кто откликнулся).
Только я еще не очень хорошо ориентируюсь в языке
В первой строке вроде всё ясно кроме this И вторую строку поясните, плиз
? Это исправить в моей большой проги или в той что выложил? (прсто эта маленькая прога прекрасно работает) Заранее благодарен --------------------
С точки зрения банальной эрудиции не каждый индивидуум способен игнорировать тенденции парадоксальных эмоций. |
||||
|
|||||
xvr |
|
|||
Эксперт Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 48 Всего: 223 |
this - это объект, от которого вызывается метод. В данном случае - ваша форма Тут вновь созданному объекту говорят, кто у него родитель (в иерархии окон на экране) В обоих Вам просто повезло. Ваши TImage'и лежат первыми среди всех компонентов А вот это cntImg=cntImg++; вообще непонятно что (точнее понятно - баг). Должно быть либо cntImg=cntImg+1; либо cntImg++; |
|||
|
||||
amt |
|
||||
Бывалый Профиль Группа: Участник Сообщений: 249 Регистрация: 26.10.2004 Где: г. Волгоград Репутация: нет Всего: 3 |
xvr, в очередной раз спасибо
Здесь я имел ввиду увеличение параметра на единицу в каждом шаге цикла. Просто еще не привык к новому языку и смешал все в кучу.
При проверке я действительно Image на форме создал впервую очередь. А вот на форме в нужной проге вперемежку создавались сонтролы. Видимо это и вызывает ошибку Буду копать дальше --------------------
С точки зрения банальной эрудиции не каждый индивидуум способен игнорировать тенденции парадоксальных эмоций. |
||||
|
|||||
Dem_max |
|
|||
Эксперт Профиль Группа: Завсегдатай Сообщений: 1780 Регистрация: 12.4.2007 Репутация: 14 Всего: 39 |
вот так
Этот код переберет все Button1 до последней, и сделает их не активными, для имэйджев подставь соответствующее имя компонента. Это сообщение отредактировал(а) Dem_max - 28.1.2012, 13:20 -------------------- Американские программисты долго не могли понять, почему русские при зависании Windоws всё время повторяют "Твой зайка написал" ("Yоur bunnу wrоte") |
|||
|
||||
xvr |
|
|||
Эксперт Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 48 Всего: 223 |
||||
|
||||
Dem_max |
|
||||
Эксперт Профиль Группа: Завсегдатай Сообщений: 1780 Регистрация: 12.4.2007 Репутация: 14 Всего: 39 |
-------------------- Американские программисты долго не могли понять, почему русские при зависании Windоws всё время повторяют "Твой зайка написал" ("Yоur bunnу wrоte") |
||||
|
|||||
xvr |
|
|||
Эксперт Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 48 Всего: 223 |
'Более вменяемое' в частности означает, что имена будут осмысленные, а не MySuperPuperButtonExName0/MySuperPuperButtonExName1/MySuperPuperButtonExName2. Ну например - Apply, CancelDlg, LoadFile, ну и т.д.
|
|||
|
||||
Правила форума "С++ Builder" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C++ Builder | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |