Re: Как отменить обработку события?
От: AlexandrN Россия  
Дата: 06.08.03 08:19
Оценка: +2
Здравствуйте, APTЁM, Вы писали:

APT>При определённых параметрах события OnClose формы необходимо не закрывать форму. Т.е. в функции FormClose творится следующее:


APT>
Код...
APT>


APT>Поделитесь, пжлста, мыслями по поводу...


Я думаю, что тебе лучше использовать OnCloseQuery вместо OnClose,
намного всё будет попроще...
С уважением.
AlexandrN
Re: Как отменить обработку события?
От: panther  
Дата: 06.08.03 22:19
Оценка: -1
Здравствуйте, APTЁM, Вы писали:

APT>При определённых параметрах события OnClose формы необходимо не закрывать форму. Т.е. в функции FormClose творится следующее:


APT>
APT>switch (MessageBox(NULL, "Сохранить изменения в файле?", "Предупреждение", MB_ICONWARNING|MB_YESNOCANCEL)){
APT>     case IDNO:{
APT>               static int I;

APT>               static TComponent *Temp;

APT>               for (I = Panel->ComponentCount - 1; I >= 0; I--)
APT>               {
APT>               Temp = Panel->Components[I];

APT>               delete Temp;
APT>               };
APT>               break;
APT>               }
APT>     case IDYES:{
APT>               Save_Panel_2_Form();
APT>               break;
APT>               }
APT>     case IDCANCEL:{
APT>                   //Вот здесь хочется что-то написать, а что - никак не могу понять  :xz: 
APT>                   break;
APT>                   }
APT>   }
APT>


APT>Поделитесь, пжлста, мыслями по поводу...


Обычно в конце обработки события вызывается предопределённая функция для обработки (например DefWindowPro в API). ПОна, собственно и закрывает окно. Просто нужно её не вызывать.
Как отменить обработку события?
От: APTЁM  
Дата: 06.08.03 06:03
Оценка:
При определённых параметрах события OnClose формы необходимо не закрывать форму. Т.е. в функции FormClose творится следующее:

switch (MessageBox(NULL, "Сохранить изменения в файле?", "Предупреждение", MB_ICONWARNING|MB_YESNOCANCEL)){
     case IDNO:{
               static int I;

               static TComponent *Temp;

               for (I = Panel->ComponentCount - 1; I >= 0; I--)
               {
               Temp = Panel->Components[I];

               delete Temp;
               };
               break;
               }
     case IDYES:{
               Save_Panel_2_Form();
               break;
               }
     case IDCANCEL:{
                   //Вот здесь хочется что-то написать, а что - никак не могу понять  :xz: 
                   break;
                   }
   }


Поделитесь, пжлста, мыслями по поводу...
Re: Как отменить обработку события?
От: grs Россия  
Дата: 06.08.03 09:18
Оценка:
Здравствуйте, APTЁM, Вы писали:

APT>При определённых параметрах события OnClose формы необходимо не закрывать форму. Т.е. в функции FormClose творится следующее:


APT>
APT>switch (MessageBox(NULL, "Сохранить изменения в файле?", "Предупреждение", MB_ICONWARNING|MB_YESNOCANCEL)){
APT>     case IDNO:{
APT>               static int I;

APT>               static TComponent *Temp;

APT>               for (I = Panel->ComponentCount - 1; I >= 0; I--)
APT>               {
APT>               Temp = Panel->Components[I];

APT>               delete Temp;
APT>               };
APT>               break;
APT>               }
APT>     case IDYES:{
APT>               Save_Panel_2_Form();
APT>               break;
APT>               }
APT>     case IDCANCEL:{
APT>                   //Вот здесь хочется что-то написать, а что - никак не могу понять  :xz: 
APT>                   break;
APT>                   }
APT>   }
APT>


APT>Поделитесь, пжлста, мыслями по поводу...


А тут мыслей никаких и быть не должно. Тут надо залезть в документацию и увидеть, что при вызове обработчика onClose второй параметр ссылка на объект TCloseAction& Action . Если тебе не надо закрывать форму, этот Action надо установить равным caNone.
Re: Как отменить обработку события?
От: DanilB Россия  
Дата: 06.08.03 10:51
Оценка:
Здравствуйте, APTЁM, Вы писали:

APT>При определённых параметрах события OnClose формы необходимо не закрывать форму. Т.е. в функции FormClose творится следующее:


APT>
APT>switch (MessageBox(NULL, "Сохранить изменения в файле?", "Предупреждение", MB_ICONWARNING|MB_YESNOCANCEL)){
APT>     case IDNO:{
APT>               static int I;

APT>               static TComponent *Temp;

APT>               for (I = Panel->ComponentCount - 1; I >= 0; I--)
APT>               {
APT>               Temp = Panel->Components[I];

APT>               delete Temp;
APT>               };
APT>               break;
APT>               }
APT>     case IDYES:{
APT>               Save_Panel_2_Form();
APT>               break;
APT>               }
APT>     case IDCANCEL:{
APT>                   //Вот здесь хочется что-то написать, а что - никак не могу понять  :xz: 
APT>                   break;
APT>                   }
APT>   }
APT>


APT>Поделитесь, пжлста, мыслями по поводу...


На скока я сзнаю из BCB при обработке данного события есть параметр Action который надо приравнять caNone.
в делфях так же должно.
Re: Action = caNone;
От: APTЁM  
Дата: 06.08.03 11:30
Оценка:
Спасибо grs и DanilB, действительно, стоило быть понастойчивей с документацией, там всё подробно написано о том, что вы говорили.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.