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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.08.2008, 18:00   #1
tiger
Пользователь
 
Регистрация: 30.03.2008
Сообщений: 52
По умолчанию вывод сообщения при закрытии программы

Я сейчас делаю курсовой проєкт про кассовые операции. если кто знает подскажите, можно ли реализовать вывод сообщения при закрытии программы такого типа :"Сохранить изменения таблицы в файл?", но чтобы это сообщение выводилось только в том случае если пользователь перед закрытием программы не нажимал на кнопку или пункт меню "Сохранить изменения", и конечно изменял в процессе работы программы данные в таблице StringGrid. короче закрытие наподобие того как в ворде. Помогите пожалуйста реализовать , если это возможно
tiger вне форума Ответить с цитированием
Старый 27.08.2008, 18:38   #2
FaTaL
Участник клуба
 
Аватар для FaTaL
 
Регистрация: 09.11.2007
Сообщений: 1,761
По умолчанию

Вот так:
Код:
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
{Здесь реализовываешь проверку файла был ли он изменен}
  If MessageBox (Handle, 'Файл был изменен. Сохранить?', 'Закрытие', mb_YesNoCancel or mb_IconQuestion)=mrYes then
    begin
      {Процедура сохранения}
    end;
end;
FaTaL вне форума Ответить с цитированием
Старый 27.08.2008, 18:40   #3
eoln
Старожил
 
Аватар для eoln
 
Регистрация: 26.04.2008
Сообщений: 2,645
По умолчанию

Примерно так.
Код:
var
  IsEdit: boolean = false;//глобальная переменная (изменялись ли данные)
...
procedure TForm1.StringGrid1KeyPress(Sender: TObject; var Key: Char);
begin
  IsEdit := true;
end;

procedure TForm1.Save; //допустим это процедура сохранения
begin
  IsEdit := false;
  ...
end;

procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
  If IsEdit then
  If MessageDlg('Текст был изменён. Хотите сохранить изменения?', mtConfirmation,[mbYes,mbNo,mbCancel],0)=mrYes then
  Save;
  CanClose := true
end;

Последний раз редактировалось eoln; 27.08.2008 в 18:43.
eoln вне форума Ответить с цитированием
Старый 27.08.2008, 19:06   #4
Terran
Участник клуба
 
Аватар для Terran
 
Регистрация: 28.11.2007
Сообщений: 1,521
По умолчанию

Я ещё добавлю ко всему выше написанному, что бы не писать длинных строк при выводе сообщения, можно использовать оператор Case:

Код:
Procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
Begin
CanClose:=False;
Case MessageBox(0,'Сохранить изменения таблицы в файл?','Внимание!',67) Of
IdYes: Save; //Сохранение
IdNo: CanClose:=True;
IdCancel: ;
End;
End;
Всегда рад помочь!
Terran вне форума Ответить с цитированием
Старый 27.08.2008, 23:31   #5
tiger
Пользователь
 
Регистрация: 30.03.2008
Сообщений: 52
По умолчанию

spasibo ogromnejshee vsem!stol'ko otzyvov! zavtra budu probovat'
tiger вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
База тормозит при закрытии muu БД в Delphi 1 14.06.2008 20:47
Вывод сообщения на экран при выборе из списка определенного значения MaGistR Microsoft Office Excel 1 31.01.2008 09:10
Передача сообщения из программы в свою Dll SergeySK Общие вопросы Delphi 3 01.11.2007 14:42
ошибка при закрытии adoquery Банзай БД в Delphi 7 03.09.2007 19:31
Нужен вывод сообщения на экран: ну типа создать файл? Максим-2 Общие вопросы Delphi 7 28.07.2007 14:45