![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Как при закрытии окна программы сделать проверку типа: Сохранить файл? OnClose чет не работает
|
#2
|
||||
|
||||
![]() Используй OnCloseQuery.
Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#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; Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#7
|
|||
|
|||
![]() Спасибо, а как закрыть все окна програаму и саму программу? From1.Close; Form2.Close; и т.д или как-то правильнее и быстрее можно?
|
#8
|
||||
|
||||
![]() Close закрывает главную форму, автоматом закрываются все подчинённые, если нет никаких дополнительных условий - вроде вопроса темы.
![]() Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#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. |