void __fastcall TForm1::SpeedButton1Click(TObject *Sender)
{
// Application->CreateForm(__classid(TForm2), &Form2);
TForm2 frm = new TForm2 (Application);
frm->ShowModal();
//Form2->Free();
delete frm;
}
Как соеденить между собой Form.
void __fastcall TForm1::SpeedButton1Click(TObject *Sender)
{
Application->CreateForm(__classid(TForm2), &Form2);
Form2->ShowModal();
Form2->Free();
}
А он выдаёт ошибку.Уже нервы сдают.:mad:
#include <memory>
using namespace std;
в *.cpp:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
auto_ptr<TForm>MyForm(new TForm(this));
MyForm->Show();
}
и так на кнопки вешаешь
Спасибо охотник.Получилось
Код:
Исправленные ошибки:
TObject::Free - служебная функция, про которую чётко сказано в хелпе - не вызывать вручную. Оставлена для совместимости с Delphi. В С++ используются операторы new и delete
Form2 - это глобальная переменная, которую не рекомендуется пользовать в локальных целях. Ведь по логике программы, она может быть уже занята адресом существующего объекта. Следовательно, после выхода из функции неизбежны ошибки доступа при дальнейшем использовании Form2.
И наконец, зачем создавать объект, чтобы его тут же изничтожить? Если окно Form2 будет вызываться каждую минуту работы программы, то операции создания/удаления изрядно озадачат процессор. Проще создать форму один раз, а потом просто прятать - "системных ресурсов" это займёт куда больше, чем хранение.
И еще надо добавлять File -> Include unit header - тоже самое вручную
#include "unitN.h", чтобы текущий юнит видел форму юнита с которым работает.