MdiChild Formda sorun

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
AReS
Üye
Mesajlar: 86
Kayıt: 25 Haz 2005 04:58

MdiChild Formda sorun

Mesaj gönderen AReS »

Merhabalar ik mesajımızda uyarı yedik inşllah bu sefer dogru sormuşumdur.
Programda MDiChild kullandım butonlar problemsiz çalışıyo sorun yok ama açıkken tekrar bi daha çamaya çalıyorum aktif formu ekran agetiriyo.Ama daha sonra formu kapatıp açmak istersem hata veriyo.Acces violation hatası daha sonra hata bir kaç defa gelince Abstrack hatası veriyo ve Bul Butonu Çalışmıyo.
Yarımdcı olursanız sevinirim..

Kod: Tümünü seç

procedure TPersonelf.Ekle1Click(Sender: TObject);
begin
  if (Soeklef=NIL) then
    Soeklef:=TSoeklef.Create(self);
  Soeklef.WindowState:=wsNormal;
  Soeklef.Show;
end;
procedure TPersonelf.SalkOcaBul1Click(Sender: TObject);
begin
  if (Sobul=NIL) then
  SoBul:=TSoBul.Create(self);
  SoBul.WindowState:=wsNormal;
  SoBul.Show;
end;

end.
Kullanıcı avatarı
husonet
Admin
Mesajlar: 2962
Kayıt: 25 Haz 2003 02:14
Konum: İstanbul
İletişim:

Mesaj gönderen husonet »

Free etmeden Create yapıyorsanız bu hatayı almanız normal.

Kolay Gelsin...

Gazete manşetleri
* DİKKAT :Lütfen forum kurallarını okuyalım ve uyalım...!
* Warez,crack vs. paylaşımı kesinlikle yasaktır.
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Mesaj gönderen aslangeri »

s.a.
mdi child formun onclose olayında

Kod: Tümünü seç

  action:=cafree;
  formadi:=nil;
şeklinde bir atama yaparsanız modal formlarınız tekrar çağırdığınızda hata vermez.
sobul çalışmıyor derken hata mesajı falan mı veriyor yoksa hiç bir mesaj vermeden hiç bir işlem yapmıyormu.

kolay gelsin.
En son aslangeri tarafından 06 Tem 2005 12:59 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Kullanıcı avatarı
AReS
Üye
Mesajlar: 86
Kayıt: 25 Haz 2005 04:58

Tşkler

Mesaj gönderen AReS »

Sorun MDi formda Değil MDi daki child formda ama senin dediğini child forma uygulayacagım .. Sorun Şu SOBul butonu una form acıkken bikaç defa tıklıyom aslında bi defa acık fazla da acmıyo(açmasınıda istemiyom zaten) ama daha sonra sobul un tetiklediği child formu kapatıp tekrar açmaya çalıştıgımda hata veriyo bir kaç defa daha tıklıyom açayım die bu sefer de abstrack diye hata msg veriyo ilgine tşkler...
Kullanıcı avatarı
balsoft
Üye
Mesajlar: 60
Kayıt: 09 Şub 2005 06:01
Konum: ANKARA
İletişim:

Mesaj gönderen balsoft »

aslnagerinin dediği gibi onclose olayına action:=cafree; yazarsan sorun kalmaz sanırım kolay gelsin
Bilgini saklamaki daha fazla öğrenebilesin...
Kullanıcı avatarı
NewMember
Üye
Mesajlar: 990
Kayıt: 29 Haz 2005 06:57
Konum: Bursa

Mesaj gönderen NewMember »

Bu kodları child formun OnClose olayına yaz.

Kod: Tümünü seç

procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  Action:=Cafree;
  Form2:=Nil;
end;
Bu kodlarıda Mdı child formu açmak istediğin buton yada menüye yaz.

Kod: Tümünü seç

procedure TForm1.Button1Click(Sender: TObject);
begin
  if Form2=nil then
  begin
     Application.CreateForm(TForm2,Form2);
     Form2.Show;
  end
  else
  begin
      Form2.Show;
  end;

end;

Kolay gelsin.
Kullanıcı avatarı
vedatkaba
Kıdemli Üye
Mesajlar: 866
Kayıt: 06 Oca 2004 06:50
Konum: DARICA/GEBZE

Mesaj gönderen vedatkaba »

Kod: Tümünü seç

procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction); 
begin 
  Action:=Cafree; 
  Form2:=Nil; 
end;

Kod: Tümünü seç

if not assigned(formun) then
begin
formun:=Tform.create(self);
formun.show;
end
else
formun.show;
end;
Assigned forma nil atanıp atanmadığına bakar ve ona göre işlem yapar.Eğer atanmışsa oluşturur ve açar yok atanmamışsa zaten form hafızada vardır ve varolanı açar.O yüzden assigned yönteminin işe yaramasını istiyorsan forma kapatırken nil atamalısın.
kolay gelsin.
***********************************
Kamil odur ki; koya dünyada bir eser,
Eseri olmayanın, yerinde yeller eser.

***********************************
Cevapla