Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Запрос на сохранение файла! 
V
    Опции темы
RDC
Дата 9.6.2008, 01:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Вот знаете в ворде например есть такая фенька: нажимаешь на закрыть а он спрашивает сохранить файл или нет.
Дак вот надо тоже самое, но проблема: На событии CloseQuery у главного окна поставил ShowModal на формочку с 3 кнопками: да, нет, отмена.
Да - сохраняет и закрывает
Нет - Просто закрывает
Отмена - по идее должна закрывать это окно с запросом, но в месте с ним она закрывает и главную форму!!!
Использую код this->CloseQuery();
Как сделать что бы при нажатии Отмена закрывалось только окно с запросом?
--------------------
Живопись
PM MAIL   Вверх
rrrFer
Дата 9.6.2008, 07:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



RDC
читай про стандартные окна диалога(окошко "сохранить как" там точно есть)
чтобы это использовать надо заполнить структуру OPENFILENAME. Вотпример из Пьетзольда:
Код

void PopFileInitialize (HWND hwnd)
{
    static char szFilter[] = "Text Files (*.TXT)\0*.txt\0"  \
                          "ASCII Files (*.ASC)\0*.asc\0" \
                          "All Files (*.*)\0*.*\0\0" ;
    
    ofn.lStructSize       = sizeof (OPENFILENAME) ;
    ofn.hwndOwner         = hwnd ;
    ofn.hInstance         = NULL ;
    ofn.lpstrFilter       = szFilter ;
    ofn.lpstrCustomFilter = NULL ;
    ofn.nMaxCustFilter    = 0 ;
    ofn.nFilterIndex      = 0 ;
    ofn.lpstrFile         = NULL ;          // Set in Open and Close functions
    ofn.nMaxFile          = _MAX_PATH ;
    ofn.lpstrFileTitle    = NULL ;          // Set in Open and Close functions
    ofn.nMaxFileTitle     = _MAX_FNAME + _MAX_EXT ;
    ofn.lpstrInitialDir   = NULL ;
    ofn.lpstrTitle        = NULL ;
    ofn.Flags             = 0 ;             // Set in Open and Close functions
    ofn.nFileOffset       = 0 ;
    ofn.nFileExtension    = 0 ;
    ofn.lpstrDefExt       = "txt" ;
    ofn.lCustData         = 0L ;
    ofn.lpfnHook          = NULL ;
    ofn.lpTemplateName    = NULL ;
}
BOOL PopFileSaveDlg (HWND hwnd, PSTR pstrFileName, PSTR pstrTitleName)
{
    ofn.hwndOwner         = hwnd ;
    ofn.lpstrFile         = pstrFileName ;
    ofn.lpstrFileTitle    = pstrTitleName ;
    ofn.Flags             = OFN_OVERWRITEPROMPT ;
    
    return GetSaveFileName (&ofn) ;
}


Это сообщение отредактировал(а) rrrFer - 9.6.2008, 08:01
PM MAIL WWW ICQ   Вверх
mrbrooks
Дата 9.6.2008, 08:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: 167
Всего: 306



Цитата(RDC @ 9.6.2008,  01:11)
Вот знаете в ворде например есть такая фенька: нажимаешь на закрыть а он спрашивает сохранить файл или нет.
Дак вот надо тоже самое, но проблема: На событии CloseQuery у главного окна поставил ShowModal на формочку с 3 кнопками: да, нет, отмена.
Да - сохраняет и закрывает
Нет - Просто закрывает
Отмена - по идее должна закрывать это окно с запросом, но в месте с ним она закрывает и главную форму!!!
Использую код this->CloseQuery();
Как сделать что бы при нажатии Отмена закрывалось только окно с запросом?

Зачем свою "формочку" использовать когда есть 
Код

Application->MessageBoxA("Текст","Заголовок",MB_YESNOCANCEL);

В опрераторе switch ты соответственно подтверждаешь сохранение или нет путем сравнения нажатой кнопки:
Код

switch (Application->MessageBoxA("Текст","Заголовок",MB_YESNOCANCEL))
{
    case IDOK: кнока OK нажата; break;
    case IDNO: кнока NO нажата; break;
    case IDCANCEL: кнока CANCEL: нажата; break;
}


Это можно записать в CloseQuery и играть там c параметром CanClose.

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

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

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

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

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


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

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


 




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


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

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