Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Закрытие формы, Запретить закрытие формы для юзера 
V
    Опции темы
segmentation_fault
Дата 9.1.2007, 02:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 82
Регистрация: 14.2.2005
Где: в интернете

Репутация: нет
Всего: 1



Доброго времени суток.
У меня есть форма, я хочу чтобы юзер не мог её закрыть или уменьшить (так как со свёрнутой формой программа смотрится некрасиво), но нужно, чтобы форму можно было закрыть программно, так что просто игнорировать событие OnClose тут не получится. Подскажите пожалуйста, есть ли какой-нибудь способ так сделать (может быть можно как-то определить если FormClose вызвана программно или юзером).
Всем заранее спасибо.
PM MAIL   Вверх
codelord
Дата 9.1.2007, 02:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 777
Регистрация: 7.5.2005
Где: ты моя темноглаза я где?!

Репутация: 16
Всего: 39



чтобы форма не меняла размер, измени свойства формы
BorderStyle = bsSingle
BorderIcon BiMaximize = false
а по поводу закрытия если убрать с формы закрывающие контролы?
Код

HWND hWnd = Form1->Handle; // çäåñü Handle íóæíîãî îêíà
HMENU hMenu = GetSystemMenu(hWnd, false);
if (hMenu)
        {
        EnableMenuItem(hMenu, SC_CLOSE, MF_GRAYED);
        }


Добавлено @ 03:08 
во еще добавь в свойствах формы BorderIcon biMinimize = false
а в событии OnClose формы добавь 
Код

if(GetKeyState(VK_MENU)==-127|| GetKeyState(VK_MENU)==-128) Abort();   

чтобы по Alt+F4 тоже ничего не вышло.



--------------------
Доступен поиск по исходным кодам в GOOGLE.
http://www.google.com/codesearch
PM MAIL   Вверх
codelord
Дата 9.1.2007, 03:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 777
Регистрация: 7.5.2005
Где: ты моя темноглаза я где?!

Репутация: 16
Всего: 39



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

#pragma resource "*.dfm"
TForm1 *Form1;
int Key =0;


Код

void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)
{
if(Key==0) Abort();    
}
//---------------------------------------------------------------------------


а если сами закрываем то
Код

void __fastcall TForm1::Button1Click(TObject *Sender)
{
Key=1;
Close();        
}




--------------------
Доступен поиск по исходным кодам в GOOGLE.
http://www.google.com/codesearch
PM MAIL   Вверх
segmentation_fault
Дата 9.1.2007, 03:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 82
Регистрация: 14.2.2005
Где: в интернете

Репутация: нет
Всего: 1



codelord, большое спасибо за ответы. Вариант с глобальной переменной похоже самый простой, но я сначала, наверное, попробую твой первый совет. Про Alt-F4 действительно, не подумал, но вряд ли они до этого додумаются.
Тему можно закрывать. 

Это сообщение отредактировал(а) segmentation_fault - 9.1.2007, 03:55
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.0543 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.