Как закрыть форму вызовом обработчика внутри формы?
Есть форма 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.