Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.64/14: Рейтинг темы: голосов - 14, средняя оценка - 4.64
2 / 2 / 0
Регистрация: 09.01.2013
Сообщений: 134

Динамические объекты на другой форме

13.02.2013, 23:46. Показов 3107. Ответов 29
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте!

Задача легкая но почемуто не получаетса...Помогите пожалуйста.
В опщем есть две формы. На одной форме создаютса динамические елементы. Как с другой форми к ним обратитса.
пишу в форме 2:
C++
1
 #include "Unit1.h"
не помогает..
Как правильно?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
13.02.2013, 23:46
Ответы с готовыми решениями:

Динамические объекты
Помогите разобраться как мне сделать чтобы холст графического редактора был динамическим для пользователя. Т.е. чтобы пользователь сам смог...

Динамические объекты, удаление по клику на объект
На форме расположены динамически созданные объекты с разными тегами и по клику на такой объект нужно удалить его если его тег равен...

Одна кнопка по нажатию присваивало имя другой кнопке на другой форме
Есть две формы: MainForm и TestForm, нужно сделать так, чтобы при нажатии на кнопку на форме MainForm, "Captoin" этой копки...

29
 Аватар для gumi250
435 / 402 / 57
Регистрация: 06.02.2012
Сообщений: 1,384
14.02.2013, 00:12
Остальной код нужен.
0
 Аватар для M9ICHIK
63 / 63 / 23
Регистрация: 09.12.2012
Сообщений: 459
14.02.2013, 00:21
Я так понял, что эти динамические элементы формы 1 не объявлены при описании класса этой формы, если так, то можно использовать функцию FindComponent для поиска необходимого элемента, в коде формы 2 с объявлением аналогичного элемента и присвоением ему найденного компонента.
0
2 / 2 / 0
Регистрация: 09.01.2013
Сообщений: 134
14.02.2013, 00:24  [ТС]
в смысле?

Вы про ето?
Форма1:
обявляю:
C++
1
TRadioButton *Radio[300];
Создаю:
C++
1
2
3
4
5
6
7
8
9
10
11
12
Radio[N] = new TRadioButton(Form1);
         Radio[N]->Parent=KNOPKA[N];
 
          Radio[N]->Left = 5;
        Radio[N]->Top = 50;
        Radio[N]->Name=AnsiString("T")+ AnsiString(N);
        Radio[N]->Caption ="Òàê";
         Radio[N]->Width=80;
         Radio[N]->ParentFont=false;
         Radio[N]->ParentColor=false;
          Radio[N]->Font->Color=clGreen;
         Radio[N]->Font->Size=42;
хочу обратится с формы2:
подключил тот инклуд что я уже писал
Само обращения:
C++
1
2
3
 if(Form1->Radio[i]->Parent==KNOPKA[j]){
        ListBox3->Items->Add(Radio[i]->Caption);
        ListBox4->Items->Add(Radio[i]->Caption);
и ошибка:
[C++ Error] Unit2.cpp(41): E2316 'Radio' is not a member of 'TForm1'.
какую мелочь я не прописал?
0
 Аватар для M9ICHIK
63 / 63 / 23
Регистрация: 09.12.2012
Сообщений: 459
14.02.2013, 00:27
Примером:
C++
1
TListBox *LB=(TListBox *)FindComponent(Form1->"ListBox"+IntToStr(i));
По-скольку *LB указывает на найденный компонент все изменения проводимые с ним будут отображаться в найденном компоненте формы1.
1
2 / 2 / 0
Регистрация: 09.01.2013
Сообщений: 134
14.02.2013, 00:35  [ТС]
капец.... так все сложно?
проще никак?
просто очень много передается и много где крутится.
еще и по названию искать....
0
 Аватар для M9ICHIK
63 / 63 / 23
Регистрация: 09.12.2012
Сообщений: 459
14.02.2013, 00:44
Цитата Сообщение от M9ICHIK Посмотреть сообщение
Примером:
C++
1
TListBox *LB=(TListBox *)FindComponent(Form1->"ListBox"+IntToStr(i));
По-скольку *LB указывает на найденный компонент все изменения проводимые с ним будут отображаться в найденном компоненте формы1.
Немного ошибся
C++
1
TListBox *LB=(TListBox *)Form1->FindComponent("ListBox"+IntToStr(i));
Добавлено через 4 минуты
Это вреде бы еще легко. Хорошо когда названия компонентов закономерно генерируются.
1
 Аватар для gumi250
435 / 402 / 57
Регистрация: 06.02.2012
Сообщений: 1,384
14.02.2013, 00:45
1. где объявленно TRadioButton *Radio[300]?
2. это написано в Unit2.h?
C++
1
#include "Unit1.h"
0
2 / 2 / 0
Регистрация: 09.01.2013
Сообщений: 134
14.02.2013, 00:45  [ТС]
Харашо! тогда почему такая ошибка?

C++
1
[C++ Error] Unit2.cpp(44): E2015 Ambiguity between 'TComponent::operator IInterfaceComponentReference *()' and 'TComponent::operator IInterface *()'
на код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
int j=ListBox2->ItemIndex+1;
  TGroupBox *KNOPKA=(TGroupBox *)Form1->FindComponent("KNOPKA"+IntToStr(j));
  TRadioButton *Radio[300];
  for(int i=1;i<300;i++){
//ïîøóê ðàä³î òàê\í³
 
   Radio[i]=(TRadioButton *)Form1->FindComponent("T"+IntToStr(j));
 
        if(Radio[i]->Parent==KNOPKA[j]){
        ListBox3->Items->Add(Radio[i]->Caption);
        ListBox4->Items->Add(Radio[i]->Caption);
          r=1;                              }
0
 Аватар для gumi250
435 / 402 / 57
Регистрация: 06.02.2012
Сообщений: 1,384
14.02.2013, 00:48
Не надо ничего искать, надо просто правильно подключить и будет все хОрОшо.
1
2 / 2 / 0
Регистрация: 09.01.2013
Сообщений: 134
14.02.2013, 00:49  [ТС]
gumi250, Нет я создаю его на форме1, написал в файле Unit1.cpp
Пробовал подключится ещо так:
C++
1
#include "Unit1.cpp"
Добавлено через 38 секунд
Цитата Сообщение от gumi250 Посмотреть сообщение
2. это написано в Unit2.h?
нет. как ето сделать?
0
 Аватар для gumi250
435 / 402 / 57
Регистрация: 06.02.2012
Сообщений: 1,384
14.02.2013, 00:54
Цитата Сообщение от Best777 Посмотреть сообщение
Нет я создаю его на форме1, написал в файле Unit1.cpp
а надо объявлять в Unit2.h

Цитата Сообщение от Best777 Посмотреть сообщение
нет. как ето сделать?
написать Это в Unit2.h
0
 Аватар для M9ICHIK
63 / 63 / 23
Регистрация: 09.12.2012
Сообщений: 459
14.02.2013, 00:56
Цитата Сообщение от gumi250 Посмотреть сообщение
Не надо ничего искать, надо просто правильно подключить и будет все хОрОшо.
Вот тогда скажи: как ты обратишься к компоненту, который объявляется и инициализируется скажем в
C++
1
void __fastcall TForm2::Button1Click(TObject *Sender)
во время работы программы?
1
 Аватар для gumi250
435 / 402 / 57
Регистрация: 06.02.2012
Сообщений: 1,384
14.02.2013, 01:00
Цитата Сообщение от M9ICHIK Посмотреть сообщение
Вот тогда скажи: как ты обратишься к компоненту, который объявляется и инициализируется скажем в
Не делайте так. Если нужно дотянуться до компонента, то объявляйте его в хидере, а потом подключайте хидер инклудом. В любом случае искать компонент вашим методом куда медленнее, чем просто его подключить.
2
2 / 2 / 0
Регистрация: 09.01.2013
Сообщений: 134
14.02.2013, 01:00  [ТС]
Цитата Сообщение от gumi250 Посмотреть сообщение
написать Это в Unit2.h
написал туда:
C++
1
#include "Unit1.h" или #include "Unit1.сpp"
те самие ошибки..
0
 Аватар для gumi250
435 / 402 / 57
Регистрация: 06.02.2012
Сообщений: 1,384
14.02.2013, 01:02
Цитата Сообщение от Best777 Посмотреть сообщение
#include "Unit1.h" или #include "Unit1.сpp"
инклудиться хидер
и надо еще объявлять в Unit2.h
C++
1
TRadioButton *Radio[300];
0
2 / 2 / 0
Регистрация: 09.01.2013
Сообщений: 134
14.02.2013, 01:05  [ТС]
Цитата Сообщение от gumi250 Посмотреть сообщение
инклудиться хидер
-как понять?(я новичок)
пишу в __published:--ошибка, а нада куда?
0
2 / 2 / 0
Регистрация: 09.01.2013
Сообщений: 134
14.02.2013, 01:32  [ТС]
Хотите сказать что
gumi250, не то советует?
или я не правильно вопрос поставил?
Формулирую по другому:
Нужно обратитса к динамически созданым обьектам на форме1 с формы2.
gumi250 советует подключится к ним.
пишу в Unit2.h
C++
1
#include "Unit1.h"
сверху
и
C++
1
TRadioButton *Radio[300];
в начале класа Form2.
что не так?

Добавлено через 1 минуту
TRadioButton *Radio[300]; не там и нет объявляю, по любом....
0
 Аватар для M9ICHIK
63 / 63 / 23
Регистрация: 09.12.2012
Сообщений: 459
14.02.2013, 02:13
в начале класа Form2.
что не так?

TRadioButton *Radio[300];
Засуньте
C++
1
TRadioButton *Radio[300];
в описание класса Form2 в public: (файл Unit2.h)
C++
1
2
3
4
5
6
7
8
class TForm2 : public TForm
{
__published:    // IDE-managed Components
private:    // User declarations
public:     // User declarations
        __fastcall TForm2(TComponent* Owner);
        TRadioButton *Radio[300];
};
0
Эксперт С++
 Аватар для Avazart
8484 / 6151 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
14.02.2013, 03:04
Цитата Сообщение от Best777 Посмотреть сообщение
Хотите сказать что
gumi250, не то советует?
или я не правильно вопрос поставил?
Формулирую по другому:
Нужно обратитса к динамически созданым обьектам на форме1 с формы2.
gumi250 советует подключится к ним.
пишу в Unit2.h
Хочу сказать что вы тыкаете пальцем в небо... и любые советы тут бесполезны при отсутствии базовых знаний по С++.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
14.02.2013, 03:04
Помогаю со студенческими работами здесь

Редактироваь объекты на другой форме
Помогите пожалуйста. Нужно сделать так чтобы при нажатии кнопки на одной форме редактировались обьекты на другой: private void...

Редактировать объекты на другой форме
Помогите пожалуйста. Нужно сделать так чтобы при нажатии кнопки на одной форме редактировались обьекты на другой: private void...

Как уничтожать динамические объекты и вообще объекты, если это необходимо сделать в их процедурах?
Создать отдельную процедуру CloseObject(Object: TObject) и вызывать ее в конце процедуры или так тоже нельзя? А то бесят эти access...

Динамические объекты js
Здраствуйте. Помогите с кодом в такой задачке. Смена цвета текста с одного цвета на другой и обратно с периодом 1с. Буду благодарен в...

Динамические объекты
Сутки добрые, подскажите чайнику!! Есть код if FNode.selectNodes('//name').item.text = 'check' then begin ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru