Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Как соеденить между собой Form.

32K
29 октября 2007 года
Gogool
2 / / 29.10.2007
Все здравствуйте.Я только начал изучать программирование на C++ Builder.Я начал делать своё простенькое приложение и сталкнулся с такой проблемой: не могу свезать несколько Form, ну чтоб нажал на одну кномпку появилось новое окно, на другую ещё одно.Пересмотрел множество книг, так и не нашел ответа.Мой вопрос наверно выглядит глупым, но пожалуйста помогите новичку.Я делаю таку команду:
void __fastcall TForm1::SpeedButton1Click(TObject *Sender)
{

Application->CreateForm(__classid(TForm2), &Form2);
Form2->ShowModal();
Form2->Free();

}
А он выдаёт ошибку.Уже нервы сдают.:mad:
11
29 октября 2007 года
oxotnik333
2.9K / / 03.08.2007
в *.hpp:
#include <memory>

using namespace std;

в *.cpp:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
auto_ptr<TForm>MyForm(new TForm(this));
MyForm->Show();

}
и так на кнопки вешаешь
32K
29 октября 2007 года
Gogool
2 / / 29.10.2007
Спасибо охотник.Получилось
309
30 октября 2007 года
el scorpio
1.1K / / 19.09.2006
 
Код:
void __fastcall TForm1::SpeedButton1Click(TObject *Sender)
{
// Application->CreateForm(__classid(TForm2), &Form2);
 TForm2 frm = new TForm2 (Application);
frm->ShowModal();
//Form2->Free();
delete frm;
}

Исправленные ошибки:
TObject::Free - служебная функция, про которую чётко сказано в хелпе - не вызывать вручную. Оставлена для совместимости с Delphi. В С++ используются операторы new и delete
Form2 - это глобальная переменная, которую не рекомендуется пользовать в локальных целях. Ведь по логике программы, она может быть уже занята адресом существующего объекта. Следовательно, после выхода из функции неизбежны ошибки доступа при дальнейшем использовании Form2.

И наконец, зачем создавать объект, чтобы его тут же изничтожить? Если окно Form2 будет вызываться каждую минуту работы программы, то операции создания/удаления изрядно озадачат процессор. Проще создать форму один раз, а потом просто прятать - "системных ресурсов" это займёт куда больше, чем хранение.
33K
09 ноября 2007 года
smorodov
6 / / 09.11.2007
Либо Project Options Forms переместить формы которые надо показывать в Avialable Forms. Если создаются они по нажатию кнопки.

И еще надо добавлять File -> Include unit header - тоже самое вручную
#include "unitN.h", чтобы текущий юнит видел форму юнита с которым работает.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог