![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Как при закрытии окна программы сделать проверку типа: Сохранить файл? OnClose чет не работает
|
|
#2
|
||||
|
||||
|
Используй OnCloseQuery.
|
|
#3
|
|||
|
|||
|
Цитата:
Потому что правильное событие для этого - OnCloseQuery. |
|
#4
|
|||
|
|||
|
неа, не работает. Закрываю программу и он закрывает программу)
|
|
#5
|
|||
|
|||
|
Код:
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean); begin Form3.Show; Form1.Enabled:= False; end; |
|
#6
|
||||
|
||||
|
Не хотим закрыть программу:
Код:
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean); begin CanClose := False; end; Код:
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean); begin CanClose := True; end; |
|
#7
|
|||
|
|||
|
Спасибо, а как закрыть все окна програаму и саму программу? From1.Close; Form2.Close; и т.д или как-то правильнее и быстрее можно?
|
|
#8
|
||||
|
||||
|
Close закрывает главную форму, автоматом закрываются все подчинённые, если нет никаких дополнительных условий - вроде вопроса темы.
![]() |
|
#9
|
|||
|
|||
|
а если есть?)
|
|
#10
|
||||
|
||||
|
А если есть заведи флаг себе, отвечающий за то, изменялся твой текст (или что ты там собрался сохранять) или нет, и если он будет поднят то перед выходом спрашивать сохранить изменения или нет
. |
|
#11
|
|||
|
|||
|
даже если зведу флаг, то при вопросе: сохранять или нет, программе не закроется...
|
|
#13
|
||||
|
||||
|
просто спрашивает сохранять или нет:
Код:
type
TForm1 = class(TForm)
Memo1: TMemo;
OpenDialog1: TOpenDialog;
procedure FormCreate(Sender: TObject);
procedure Memo1Change(Sender: TObject);
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
procedure TForm1.FormCreate(Sender: TObject);
begin
Tag:=0;
end;
procedure TForm1.Memo1Change(Sender: TObject);
begin
Tag:=$ff;
end;
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
if Tag<>0 then
begin
if (MessageBox(Handle, 'Сохранить твой мусор?', 'Вопросец',
MB_OKCANCEL or MB_ICONQUESTION)=IDOK) and (OpenDialog1.Execute) then
Memo1.Lines.SaveToFile(OpenDialog1.FileName);
end;
end;не закроет программу пока не сохранишь: Код:
type
TForm1 = class(TForm)
Memo1: TMemo;
OpenDialog1: TOpenDialog;
procedure FormCreate(Sender: TObject);
procedure Memo1Change(Sender: TObject);
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
procedure TForm1.FormCreate(Sender: TObject);
begin
Tag:=0;
end;
procedure TForm1.Memo1Change(Sender: TObject);
begin
Tag:=$ff;
end;
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
CanClose:=Tag=0;
if not CanClose then
begin
if (MessageBox(Handle, 'Сохранить твой мусор?', 'Вопросец',
MB_OKCANCEL or MB_ICONQUESTION)=IDOK) and (OpenDialog1.Execute) then
begin
Memo1.Lines.SaveToFile(OpenDialog1.FileName);
CanClose:=True;
end;
end;
end;Последний раз редактировалось NumLock, 04.01.2012 в 09:39. |