- Sadece formu close etmeniz yeterli. Bu kodlar otomatik olarak çalışacaktır.
- Yeter ki Application.Terminate veya HALT komutlarını kullanmayın. Sadece CLOSE; veya Form1.Close; deyin yeterli.
Ama diyorsanız ki formu kapatmak istemiyorum sadece içindeki kodlar çalışsın ; O zaman FormClose olayındaki kodları bağımsız bir Procedure altına alın, taşıyın. OnClose olayında bu taşıdığınız procedure hangisi ise onun adını yazıp çalıştırın. Dilediğiniz başka yerlerde de sadece bu yeni Procedure olanı çalıştırın.
formda kapatma işlemi için hem KAPAT butonu kullanılıyor hem de formun kendi kapatma butonu kullanılmaktadır.
çalışacak komutları bir prosedüre aldım.
proceduru KAPAT butonundan çağırıyorum herhangi bir sorun yaşamıyorum. istediğim işlemler uygulanıyor. problem yok
formun kendi kapatma butonuyla kapatma yaptığım zaman;
onclose olayında proceduru çağırmazsam procedurdaki komutlar çalışmıyor. onclose olayında proceduru çağırdığım zaman
form kapanmaması gereken durumda da kapanıyor.
formun kapatma butonunu iptal etmek istemiyorum. bulunması kullanıcı açısından iyi olur diye düşünüyorum.
akuyumcu63 yazdı:formda kapatma işlemi için hem KAPAT butonu kullanılıyor hem de formun kendi kapatma butonu kullanılmaktadır.
@xozcanx doğru yolu söylemiş.
- Bir adım daha ileri götürürsek şöyle bir çalışma yapacağınız işlemi örnekler sanırım.
* Eğer parametre olarak TRUE verir veya hiç vermezseniz TRUE kabul edilir.
* Eğer parametre olarak FALSE verirseniz o zaman içerik çalışır ama kapanmaz.
function CalisacakFonksiyon( boolKapansin: Boolean = True ):boolean;
begin
if boolKapansin
then ShowMessage('Birazdan kapanıyoruz...')
else ShowMessage('Sadece çalıştık...');
Result := boolKapansin;
end;
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
CalisacakFonksiyon(False);
end;
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
CanClose := CalisacakFonksiyon;
end;