form kapatırken global procedure kullanmak

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
mustafasoy
Üye
Mesajlar: 154
Kayıt: 02 Ağu 2013 05:00
Konum: istanbul
İletişim:

form kapatırken global procedure kullanmak

Mesaj gönderen mustafasoy »

delphi ile yeni 2 haftadır uğraşıyorum
sitenizden ve diğer kaynaklardan oldukça fazla bilgi topladım
kendimi biraz daha geliştirebilmek için ufak projeler yapmaya çalışıyorum
ancak kod yazma hammallığından kurtulmak için delphinin ve sizlerin tavsiyeleri üzerine procedure yazmak daha mantıklı geliyor
bu örnek benim diğer kullanacağım özellikler için anahtar niteliğinde
sorum şu ;
form1 : mdiform
form2,form3,form4 vs. mdichild form
ben tüm formların formclose eventına
var
x:Integer;
begin
x:=MessageDlg('Form Kapanacak Eminmisiniz?',mtConfirmation,[mbYes,mbNo],0);
if x=6 then
begin
Action:=caFree ;
Main_Frm := nil;
end
else
Action:=caNone;
end;
yazıyorum bundan sonraki formlarda da bunları yazmak çok mantıklı gelmiyor aklıma parametreler diye bir form düzenleyip bir checkbox koyarak eğer checkbox işaretli ise bu soruları sormaya devam etsin değilse soru sormadan kapatsın
ve ben sadece formların formclose eventına bu procedure'yi ekleyeyim
umarım anlatabilmişimdir

sorum hangi formdan geldiğini nasıl tespit edeceğim (sender ile olacağını tahmin ediyorum procedure içinde nasıl kullanacağım)
procedure nasıl yazacağım

delphi kitabına göre ufak bir şöyle birşey yapmaya çalıştım ama algoritma yeterli olmadığından tıkanıp kaldım

procedure x_kapat;
var
xkapat:integer;
begin
begin
xkapat:=MessageDlg('Form Kapanacak Eminmisiniz?',mtConfirmation,[mbYes,mbNo],0);
if x=6 then
begin
Action:=caFree ;
hangiform?? := nil; // nereden geldi
end
else
Action:=caNone;// hangiform için??
end;
Nasıl ki Soru sorarak öğrendiyseniz , öğrendiklerinizi cevap vererek öğretiniz.
PROGRAMADOR
Üye
Mesajlar: 239
Kayıt: 04 Oca 2008 01:53
Konum: Karşıyaka/İzmir

Re: form kapatırken global procedure kullanmak

Mesaj gönderen PROGRAMADOR »

procedure içine form parametresi atamalısın.
In dubio pro reo...
Şüpheden sanık/özgürlük yararlanır...
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Re: form kapatırken global procedure kullanmak

Mesaj gönderen rsimsek »

FormCloseQuery ile yapabilirsin.

Kod: Tümünü seç

procedure TForm1.FormCloseQuery(Sender: TObject;
  var CanClose: Boolean);
begin  // KapatSorma global değişken olarak tanımlanıp parametre formundan sor / sorma şeklinde değer atanabimeli. True / False yani.
  if KapatSorma or (MessageDlg('Form Kapanacak Eminmisiniz?',mtConfirmation,[mbYes,mbNo],0) = idYes) then
  begin
     CanClose := True;
     Self := nil; // Owner := nil; // de olabilir.
     Action:=caFree;
  end

end;
İlk formun FormCloseQuery sini bu şekilde hazırlayıp, diğer formların OnShow'una

Kod: Tümünü seç

procedure TForm1.FormShow(Sender: TObject);
begin
   FormCloseQuery := Form1.FormCloseQuery;
end;
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
Cevapla