button ile onclose olayını tetikleme

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
akuyumcu63
Üye
Mesajlar: 386
Kayıt: 02 Tem 2007 09:43

button ile onclose olayını tetikleme

Mesaj gönderen akuyumcu63 »

merhaba;

formun onclose olayına biraz komut yazmışım. forma eklediğim bir button ile formun onclose olayında bulunan komutları tetiklemek istiyorum.

Kod: Tümünü seç

form1.onclose( sender)
form1.formclose( sender ) 
gibi komutlar denedim. bir sonuç üretemedim. yardımcı olan arkadaşlara şimdiden teşekkür ederim.
İsteyen, yapabildiğinden daha fazlasını yapar.
PROGRAMADOR
Üye
Mesajlar: 239
Kayıt: 04 Oca 2008 01:53
Konum: Karşıyaka/İzmir

Re: button ile onclose olayını tetikleme

Mesaj gönderen PROGRAMADOR »

Form1.Close; ile çağırarısnız ancak formunuz kapanır.

Bunun yerine bir procedure kodları yazıp hem form.onclose'dan çağırabilirsiniz hem de button.onclick'ten.
In dubio pro reo...
Şüpheden sanık/özgürlük yararlanır...
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Re: button ile onclose olayını tetikleme

Mesaj gönderen mrmarman »

Merhaba.

- 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. :idea:
Resim
Resim ....Resim
akuyumcu63
Üye
Mesajlar: 386
Kayıt: 02 Tem 2007 09:43

Re: button ile onclose olayını tetikleme

Mesaj gönderen akuyumcu63 »

merhaba;

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.
İsteyen, yapabildiğinden daha fazlasını yapar.
Kullanıcı avatarı
xozcanx
Üye
Mesajlar: 362
Kayıt: 05 Oca 2012 12:55

Re: button ile onclose olayını tetikleme

Mesaj gönderen xozcanx »

Merhaba;
Yapmak istediğiniz Form çıkışında kullanıcıya soru sordurmak mıdır?
Yanlışlıkla kapatmasını önlemek amacıyla vs.

Eğer benim anladığım şekildeyse yapmanız gereken Formun OnClose değilde OnCloseQuery olmalı.

Kod: Tümünü seç

procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
Begin
  CanClose := MessageDlg('Çıkış Yapmak İstediğinze Emin misiniz?'
            , mtCustom, [mbYes, mbNo], 0) = mrYES;
end;
Bu şekilde Hayır derse Formunuz kapanmaz.
Kaynak
Nasibinde varsa, alırsın karıncadan bile ders, Nasibinde yoksa, bütün cihan önüne serilse, sana ters..
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Re: button ile onclose olayını tetikleme

Mesaj gönderen mrmarman »

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.

Kod: Tümünü seç

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;
Resim
Resim ....Resim
akuyumcu63
Üye
Mesajlar: 386
Kayıt: 02 Tem 2007 09:43

Re: button ile onclose olayını tetikleme

Mesaj gönderen akuyumcu63 »

merhaba;

değerli arkadaşlar sorun halloldu. Güzel bir beyin fırtınası oldu. Herkese çok teşekkür ederim.
İsteyen, yapabildiğinden daha fazlasını yapar.
Cevapla