Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.03.2008, 08:07   #1
Патрон
Форумчанин
 
Аватар для Патрон
 
Регистрация: 07.03.2008
Сообщений: 151
По умолчанию Сохранение

Как сделать сохранение документа по закрытию программы? Т.е. по типу стандартного блокнота WINDOWS.
Патрон вне форума Ответить с цитированием
Старый 24.03.2008, 09:07   #2
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

обрабатывать у формы OnCloseQuery, где выдавать запрос сохранять или нет. если пользователь жмет отмена, типа передумал выходить, то просто CanClose := false;
pu4koff вне форума Ответить с цитированием
Старый 24.03.2008, 09:20   #3
_Dmitry
Участник клуба
 
Аватар для _Dmitry
 
Регистрация: 02.09.2007
Сообщений: 1,193
По умолчанию

Код:
//Введите глобальную переменную
var
  Change: boolean = false;
//если текст в редакторе изменялся, то
Change:=true;
//анализируйте эту переменную при закрытии программы
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
var
  code: integer;
begin
  if Change then
    begin
      code:=Application.MessageBox('Текст в файле был изменен'#13#10#13#10+
        'Сохранить изменения?','Блокнот',mb_YesNoCancel+mb_IconExclamation);
      case code of
      idYes: //сохраняем файл
        if SaveDialog1.Execute then
          Memo1.Lines.SaveToFile(SaveDialog1.FileName);
      idCancel: Action:=caNone; //не сохраняем и не закрываем программу
      end;
    end;
end;
_Dmitry вне форума Ответить с цитированием
Старый 24.03.2008, 11:01   #4
Патрон
Форумчанин
 
Аватар для Патрон
 
Регистрация: 07.03.2008
Сообщений: 151
По умолчанию

Цитата:
Сообщение от _Dmitry Посмотреть сообщение
Код:
//Введите глобальную переменную
var
  Change: boolean = false;
//если текст в редакторе изменялся, то
Change:=true;
//анализируйте эту переменную при закрытии программы
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
var
  code: integer;
begin
  if Change then
    begin
      code:=Application.MessageBox('Текст в файле был изменен'#13#10#13#10+
        'Сохранить изменения?','Блокнот',mb_YesNoCancel+mb_IconExclamation);
      case code of
      idYes: //сохраняем файл
        if SaveDialog1.Execute then
          Memo1.Lines.SaveToFile(SaveDialog1.FileName);
      idCancel: Action:=caNone; //не сохраняем и не закрываем программу
      end;
    end;
end;
с процедурой закрытия программы я разобрался, а вот с:
//Введите глобальную переменную
var
Change: boolean = false;
//если текст в редакторе изменялся, то
Change:=true;
//анализируйте эту переменную при закрытии программы


я не могупонять куда это прописать?
Патрон вне форума Ответить с цитированием
Старый 24.03.2008, 11:59   #5
Makarov
Форумчанин
 
Аватар для Makarov
 
Регистрация: 03.01.2008
Сообщений: 102
По умолчанию

Как я понял глобальная переменная отвечает за изменение текста! То есть, при каком-либо изменении текста в Memo это переменная принимает значение true! Но при создании формы это переменная должна иметь значение false!
Теория без практики мертва и бесплодна, практика без теории невозможна и пагубна.
Makarov вне форума Ответить с цитированием
Старый 24.03.2008, 12:29   #6
Патрон
Форумчанин
 
Аватар для Патрон
 
Регистрация: 07.03.2008
Сообщений: 151
По умолчанию

нее, я про то что куда эти параметры прописать? вот это я не понимаю. Я еще только учусь программированию так что не судите строго.
Патрон вне форума Ответить с цитированием
Старый 24.03.2008, 13:29   #7
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Вроде понял вопрос.
так называемая "глобальная" переменная - это совсем на страшно. Помните, в модуле есть описание типа:
Цитата:
var
Form2: TForm1;
Ну, прямо перед implementation - это некая разделительная черта между тем, что вам создано автоматом, и тем, что вы сами вносите...
Так вот, все переменные, которые вы там объявите - они будут "глобальными", то есть их любая процедура может изменить. И воспринять как некую "внешнюю" переменную.
Надеюсь, понятно ? (Аж сам засомневался )
mihali4 вне форума Ответить с цитированием
Старый 24.03.2008, 13:47   #8
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

Если речь идёт о произвольном документе, то самое логичное место для этой переменной (в рамках ООП) - класс окна (формы), содержащего этот документ, благо в Delphi этот класс всегда "перед глазами", или даже класс самого документа, если он объявлен явно. Если речь идет о наследнике стандартного Edit-контрола (как TEdit или TMemo, скажем), то он должен поддерживать стандартный флажок, показывающий наличие изменений. Его можно прочитать через сообщение EM_GETMODIFY (и установить через EM_SETMODIFY), осталось только, чтобы кто-нибудь уточнил, какое ему соответствует свойство Delphi.
B_N вне форума Ответить с цитированием
Старый 24.03.2008, 14:00   #9
Патрон
Форумчанин
 
Аватар для Патрон
 
Регистрация: 07.03.2008
Сообщений: 151
По умолчанию

неа говорит ошибка в Change. может кто попробует все это сделать???
Патрон вне форума Ответить с цитированием
Старый 24.03.2008, 14:09   #10
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Цитата:
Если речь идет о наследнике стандартного Edit-контрола (как TEdit или TMemo, скажем)
Всегда очень уважительно отношусь к вашим высказываниям (чувствуется глубокое знание предмета). Но в данном случае, возможно, либо я вас не понял, либо (что этому и поспособствовало) вы слишком сильно завуалировали тему...
При чем тут "TEdit или TMemo, скажем"? Решительно - не понимаю ход ваших мыслей... Увы...
mihali4 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
сохранение 1234 Общие вопросы Delphi 11 30.08.2008 11:47
TClientSocket - сохранение JRcoker Общие вопросы Delphi 4 03.08.2008 00:37
Сохранение страницы Патрон PHP 3 28.03.2008 00:00
Сохранение Lonix Общие вопросы Delphi 1 22.04.2007 00:15
Сохранение в TXT фйл M@rsel Общие вопросы Delphi 6 22.12.2006 16:12