Перейти к содержимому

Как закрыть форму c builder

  • автор:

Как закрыть форму вызовом обработчика внутри формы?

Есть форма Form1, на ней кнопка Button1. При загрузке формы происходит обработка некоторой информации и потом форма должна закруться вызовом обработчика Button1Click(0)
Но почему-то форма не закрывается.
Клик по самой кнопке Button1 закрывает форму.
Почему невозможно закрыть форму вызовом обработчика в самой форме?

void __fastcall TForm1 :: FormCreate ( TObject * Sender )
<
//.

Button1Click ( 0 ) ;
>
//———————
void __fastcall TForm1 :: Button10Click ( TObject * Sender )
<
Form1 — > Close ( ) ;
>

Как закрыть форму c builder

Группа: Участник
Сообщений: 22

Здравствуйте! На сей раз, я столкнулся с такой проблемой: приложение состоит из двух форм — Form1 и Form2. Форма Form2 перенесена в список доступных форм и вызывается из Form1 так:

f2=new TForm2(Application);
if (!f2) return;
f2->Show();

На форме Form2 имеется кнопка, которая должна закрывать данную форму (не крестик в правом верхнем углу). Если закрывать форму Form2, нажимая на крестик, то все нормально, а при нажатии на кнопку я получаю исключение:

Access violation at address 401146B3 in module vcl60.bpl. Read of address 00C9CDD8. Кто знает, как «заставить» форму Form2 открываться нормально при нажатии кнопки. подскажите. Заранее благодарен

Группа: Участник
Сообщений: 575

Группа: Модератор
Сообщений: 1583

Группа: Участник
Сообщений: 22

Переменная f2 объявлена в разделе public класса TForm1. Закрывавает форму Form2 функция, которая есть в cpp-файле формы Form1. Вот ее код:

Группа: Участник
Сообщений: 575

Группа: Участник
Сообщений: 22

Группа: Модератор
Сообщений: 1583

Группа: Участник
Сообщений: 22

Группа: Модератор
Сообщений: 1583

Возможно это тот случай когда «сразу delete» делать нельзя. Но учтите, что при закрытии крестиком ( ) вы не освобождаете память если у вас не стоит caFree и, возможно, не очищаете указатель f2.

Группа: Участник
Сообщений: 115

все просто.
в начале ты проверяешь не создана ли форма, создаешь если нет и показываешь ее

CODE
if (Form2)
Form2=new TForm2(Form1);
>
Form2.Show;

вызывая delete Form2; ты освобождаешь память, НО
delete НЕ присваивает NULL переменной

а при закрытии формы не забудь!:

CODE
void __fastcall TForm2::OnDestroy(TObject *Sender)
Form2=NULL;
// а попробуй еще вот так :
// this=NULL;
// помоему это более правильно. или нет?
>

да не забудь:

CODE
void __fastcall TForm2::FormClose(TObject *Sender, TCloseAction &Action)
Action=caFree;
>

Группа: Участник
Сообщений: 115

#include «Unit2.h»
а призакрытии Form1 все прочие формы приложения (если не ошибаюсь) закрываются сами.
все прочее я написал выше.

Как закрыть форму c builder

Проблема такая: при создании формы (В событие OnCreate) проверяется условие. Если false, то необходимо закрыть форму(не приложение). Однако, Close() не работает. Как закрыть форму?

Группа: Модератор
Сообщений: 545

Группа: Участник
Сообщений: 575

Группа: Модератор
Сообщений: 545

Группа: Участник
Сообщений: 575

Группа: Модератор
Сообщений: 545

Группа: Участник
Сообщений: 143

Группа: Участник
Сообщений: 575

Группа: Модератор
Сообщений: 1742

Группа: Участник
Сообщений: 15

Группа: Участник
Сообщений: 143

Закрыть форму и открыть форму

Как закрыть не главную форму и запустить заново с ее начальным состоянием. Поясню. В Form2 у компонента radiobutton изначально checked=false и допустим нажал на него и стал checked=true. Далее закрыл форму From2->Close() и заново открыл ее From2->Show() , компонент radiobutton остался в состоянии checked=true. Как все-таки закрыть эту форму и открыть заново с начальным состоянием, не закрывая полностью программу. Можно ли так?

94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:

Открыть/закрыть форму во вкладке TPageControl
Доброго времени суток! Есть проект с некоторым количеством форм, одна из которых является главной.

Закрыть/открыть форму, перенести переменные
Задача состоит в следующем: 1. Закрыть 1-ю форму, открыть 2-ю. 2. Перенести переменные с 1-й.

Открыть дочернюю форму и тут же закрыть родительскую
Есть 2 формы, на 1-й форме находится кнопка, при нажатии на кнопку открывается 2-я форма а первая.

Закрыть первую форму и открыть вторую при нажатии на клавишу
Как сделать, чтоб при нажатии на клавишу закрывалась первая форма и открывалась вторая?? Если.

435 / 402 / 57
Регистрация: 06.02.2012
Сообщений: 1,384

Переl закрытием формы запомнить radiobutton->checked, а после открытия востановить его. Хотя я думаю, вам подойдет не закрывать форму, а скрывать ее, From2->Visual.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *