Guest |
Отправлено: 28.01.2004, 15:12 |
|
Не зарегистрирован
|
Привет!
Подскажите как сделать так, чтобы при нажатии на крестик (Х) в форме, она не закрывалась, а только сворачивалась (пряталась)
Если можно с примером кода.
Заранее благодарен
|
|
Admin |
Отправлено: 28.01.2004, 18:20 |
|
Владимир
Группа: Администратор
Сообщений: 1190
|
В событии формы onClose
CODE |
void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)
{
Action = caNone;
Form1->WindowState = wsMinimized;
}
|
или в событии формы onCloseQuery
CODE |
void __fastcall TForm1::FormCloseQuery(TObject *Sender, bool &CanClose)
{
Form1->WindowState = wsMinimized;
CanClose = false;
} |
|
|
Guest |
Отправлено: 28.01.2004, 19:00 |
|
Не зарегистрирован
|
Спасибо.
А знаете ли вы как применить остальные значения Action ???
В хэлпе сказано:
caNone The form is not allowed to close, so nothing happens.
caHide The form is not closed, but just hidden. Your application can still access a hidden form.
caFree The form is closed and all allocated memory for the form is freed.
caMinimize The form is minimized, rather than closed.
Однако на деле работает только caNone.
Почему, когда я пишу:
void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)
{
Action = caHide // или Action = caMinimize
}
ничего не происходит?
и к чему нужно значение caFree, если все равно метод OnClose отработает и форма закроется освободив память?
а если не закроется то смысл её освобождать если приложение еще работает?
Объясните плз. |
|
Admin |
Отправлено: 28.01.2004, 19:32 |
|
Владимир
Группа: Администратор
Сообщений: 1190
|
Создайте вторую форму и увидите как это все работает.
|
|
Guest |
Отправлено: 29.01.2004, 11:30 |
|
Не зарегистрирован
|
Приветствую.
Еще такой вопрос. При таком коде:
void __fastcall TForm1::FormCloseQuery(TObject *Sender, bool &CanClose)
{
Form1->WindowState = wsMinimized;
CanClose = false;
}
форма сворачивается не в панель задач Windows, а какбы на ее поверхность. А как сделать, чтобы форма сворачивалась по-нормальному, на панель задач??? |
|
Asher |
Отправлено: 29.01.2004, 11:35 |
|
Мастер участка
Группа: Модератор
Сообщений: 550
|
QUOTE | форма сворачивается не в панель задач Windows, а какбы на ее поверхность. А как сделать, чтобы форма сворачивалась по-нормальному, на панель задач??? |
замени
WindowState = wsMinimized;
на
Perform(WM_SYSCOMMAND, SC_MINIMIZE, 0);
|
|