bool ICanCloseMyForm=false;
void __fastcall TForm1::FormKeyDown(TObject *Sender, WORD &Key,
TShiftState Shift)
{
if (Key == 'P')
{
ICanCloseMyForm=true;
Close();
}
}
void __fastcall TForm1::FormCloseQuery(TObject *Sender, bool &CanClose)
{
CanClose=ICanCloseMyForm;
}
Как зделать чтобы форма не закрывалась на ALT+F4
пробывал при нажатии игнорировать, все равно закрывает
Судя по задаче, тебе необходимо запретить пользователю закрыть приложение до выполнения какого-либо действия.
Если так, то это делается легко - в событии OnCloseQuery ставишь параметр Close(по-моему) в false, если закрывать нельзя, иначе - либо ставишь в true, либо ничего не делаешь!!
Кстати, Вы видимо пытаетесь запретить пользователю закрывать Ваше приложение. Вы учитываете, что это можно сделать и, например, из диспетчера задач, просто завершив соответствующий процесс? Простая защита от ALT+F4 Вам в этом случае не поможет.
можно примерно так в OnPressKey
if(Key==(0x50)){Close();}
else {
OnCloseQuery([COLOR="#ff0000"]чото там...[/COLOR]){CanClose=false;}
}
Начнем сначала: при попытке закрыть форму вызывается метод CloseQuery. Чтобы закрыть форму, он должен вернуть значение true. Для проверки этого условия этот метод вызывает обработчик OnCloseQuery, возвращающий значение переменной CanClose (по умолчанию = true). Если переменная CanClose установлена в false, Вы форму закрыть не сможете (кроме как завершить процесс). Не сможете Вы и вызвать обработчик OnCloseQuery из if. Поэтому можно сделать так :
токо надо еще дописать было в заголовке private: bool ICanCloseMyForm;
;)