Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/22: Рейтинг темы: голосов - 22, средняя оценка - 4.50
13 / 13 / 3
Регистрация: 24.04.2011
Сообщений: 122

Динамически создать форму и передать ей определенные значения

06.10.2012, 23:22. Показов 4766. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый вечер!
Хочу создать динамическую форму и передать ей определенные значения.
C++
1
Application->CreateForm(__classid(TForm5),&Form5);
На эту строчку ругается [C++ Error] Unit1.cpp(345): E2451 Undefined symbol 'Form5'

Потом будет ли правильным, передать так значение в Memo (которое будет находится на этой динамической форме) :
C++
1
Form5 -> Memo1 -> Lines->Insert(1, //тут моя нужная переменная);
Помогите пожалуйста Просто с динамическими формами и с объектами как-то не сталкивался.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
06.10.2012, 23:22
Ответы с готовыми решениями:

Обращение к динамически созданному объекту на динамически созданной форме
Как, создав динамический объект, TButton, обратиться к нему? Unit1.cpp void __fastcall...

Создать динамический массив и заполнить его элементы определёнными значениями
Здравствуйте! Подскажите пожалуйста в чём может крыться ошибка (суть задачи состоит в том, чтобы...

Перемещение динамически созданной кнопки по динамически созданной сетки
Всем привет!!! Помогите не могу допетрить как сделать. суть моей проблемы в том что, мне необходимо...

12
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
07.10.2012, 00:21
Цитата Сообщение от Frizar Посмотреть сообщение
На эту строчку ругается [C++ Error] Unit1.cpp(345): E2451 Undefined symbol 'Form5'
Попробуй #include "unit5.h"
1
 Аватар для BRcr
4043 / 2333 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
07.10.2012, 00:24
Прямым текстом компилятор говорит - "не знаю, мол, чего такое Form5". Где объявлен этот указатель? Если в другом модуле, то неплохо бы его со спецификатором extern переобъявить...

С memo можно так, а можно и сяк:
C++
1
Form5->Memo1->Lines->Add("текст");
2
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
07.10.2012, 00:34
Цитата Сообщение от Байт Посмотреть сообщение
Попробуй #include "unit5.h"
Конечно, добавить еще
C++
1
extern TForm5 *Form5;
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33400 / 21510 / 8236
Регистрация: 22.10.2011
Сообщений: 36,908
Записей в блоге: 12
07.10.2012, 00:40
Цитата Сообщение от Байт Посмотреть сообщение
Конечно, добавить еще
Масло масляное? Достаточно приинклудить H-файл, в нем уже есть extern-объявление переменной.
1
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
07.10.2012, 09:49
Цитата Сообщение от UI Посмотреть сообщение
Масло масляное? Достаточно приинклудить H-файл, в нем уже есть extern-объявление переменной.
Хмм... У меня Бюлдер 6, в unit5.h есть строка
C++
1
extern PACKAGE TForm5 *Form5;
О ее смысле я как-то не задумывался. Это и есть объявление Form5? Просветите, если можно. и за одно скажите, кто такой PACKAGE ?
0
13 / 13 / 3
Регистрация: 24.04.2011
Сообщений: 122
07.10.2012, 11:34  [ТС]
Цитата Сообщение от BRcr Посмотреть сообщение
Прямым текстом компилятор говорит - "не знаю, мол, чего такое Form5". Где объявлен этот указатель? Если в другом модуле, то неплохо бы его со спецификатором extern переобъявить...

С memo можно так, а можно и сяк:
C++
1
Form5->Memo1->Lines->Add("текст");

Нененене. Эта форма(5), создается динамически. Она не где не записана. include не подходит( так же как и extern PACKAGE TForm5 *Form5; extern TForm5 *Form5. Еще какие варианты будут?)
0
 Аватар для BRcr
4043 / 2333 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
07.10.2012, 12:07
Класс TForm5 у тебя объявлен, иначе и на него ругалось бы.
Для создания экземпляра формы динамически, сперва объяви указатель на него - в классе другой формы или еще где. Вот этот объявленный указатель и подставляй в CreateForm()
C++
1
2
TForm5 * form5_ptr; 
Application->CreateForm( __classid(TForm5), form5_ptr );
0
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
07.10.2012, 12:30
Frizar, Передай Form5 параметром в те места, где он у тебя используется.
0
13 / 13 / 3
Регистрация: 24.04.2011
Сообщений: 122
07.10.2012, 12:35  [ТС]
Цитата Сообщение от BRcr Посмотреть сообщение
Класс TForm5 у тебя объявлен, иначе и на него ругалось бы.
Для создания экземпляра формы динамически, сперва объяви указатель на него - в классе другой формы или еще где. Вот этот объявленный указатель и подставляй в CreateForm()
C++
1
2
TForm5 * form5_ptr; 
Application->CreateForm( __classid(TForm5), form5_ptr );
TForm5 вообще не где не объявлен. Попробовал ввести TForm6, все равно ошибки.
C++
1
TForm6 *Form6; // объявил в глобальных переменных Form1 (с формы 1 и будет создаваться эта динамическая форма
почему то на эту строку ругается [C++ Error] Unit1.cpp(16): E2141 Declaration syntax error

C++
1
Application->CreateForm(__classid(TForm6),Form6); // тут ругается на  "Function call missing )", хотя вроде как все на месте стоит.
C++
1
Form6->Memo1->Lines->Add("Test"); // так же тут ошибку выдает конечно( Undefined symbol 'Form6'
0
 Аватар для BRcr
4043 / 2333 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
07.10.2012, 12:51
И чего, собственно, хочется-то? Чтоб все работало на волшебном синем дыме?
Объявляй класс формы, указатель на него и вперед.
1
13 / 13 / 3
Регистрация: 24.04.2011
Сообщений: 122
07.10.2012, 13:25  [ТС]
Все разобрался. Спасибо за ответы
0
40 / 25 / 7
Регистрация: 04.10.2012
Сообщений: 127
07.10.2012, 14:12
За 100% правоту правильности метода не ручаюсь, но я делаю так.
Создаю новую форму. Builder автоматически создает файлы *.cpp и *.h
Описание формы внутри них.
Далее, в проекте, где требуетс вызвать эту форму динамически, пишу

uMain.cpp
C++
1
2
3
4
5
6
7
8
9
#include <uAbout.h>
...
// Корректное создание и закрытие окна "О программе"
void __fastcall TformMain::btnAboutClick(TObject *Sender)
{
   Application->CreateForm(__classid(TformAbout), &formAbout);
   formAbout->ShowModal();
   formAbout->Free();
}//-----------------------------------------------------------------------------
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
07.10.2012, 14:12
Помогаю со студенческими работами здесь

Передать данные на предыдущую форму которая была создана динамически
Здравствуйте, не могу разобраться с динамическими формами, например, создаем вторую форму ( из...

Создать динамический массив В, вставив элемент с нулевым значением перед минимальным...
Дан массив А размера N. Создать динамический массив В, вставив элемент с нулевым значением перед...

Считывание определённой строки из файла txt, создание потока для считывания из определённой строчки
Мне нужно считать данные с 46542-й строки из файла txt. Затем записать эту строку в переменную....

Как динамически создать массив из динамически конструируемых экземпляров класса?
Есть два класса.Подразумевается ,что первый в конструкторе выделяет интовый массив длинной n,второй...

Создать динамический класс Book, содержащий динамический массив Authors
Мне нужно написать программу,а я не знаю как ее написать. Знаю, тут люди за кого-то не делают,...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной записи. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
Контроль уникальности заводского номера - вариант №2
Maks 24.03.2026
В отличие от предыдущего варианта добавлено прерывание циклов, также добавлены новые переменные для сохранения контекста ошибки перед прерыванием цикла: Процедура ПередЗаписью(Отказ, РежимЗаписи,. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
Контроль уникальности заводского номера - вариант №1
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью в конфигурации КА2. Данные берутся из регистра сведений, по. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru