ShowModal form açma hatası

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
mhizar
Üye
Mesajlar: 78
Kayıt: 30 May 2005 11:06

ShowModal form açma hatası

Mesaj gönderen mhizar »

Arkadaşlar mdichild olmayan normal olan bir formumu

Kod: Tümünü seç

Application.CreateForm(Tfrmmusteri,frmmusteri);
      FrmMusteri.ShowModal;
koduyla açmaya çalıştığımda

Kod: Tümünü seç

cannot make a visible window modal
hatası alıyorum.Daha önceden yaptığım bir olayı şimdi yapamıyorum.İki formabakıyorum tüm özellikleri aynı biri showmodal açılıyo diğeri açılmıyo.
Yardım ederseniz sevinirim.
Kullanıcı avatarı
lazio
Moderator
Mesajlar: 1527
Kayıt: 11 Tem 2003 04:55
Konum: İstanbul

Mesaj gönderen lazio »

formun visible ını False yapın

ayrıca :ara yaparsanız sorularınıza daha çabuk cevap alırsınız :wink:
DeveloperToolKit

..::|YeşilMavi|::..
mhizar
Üye
Mesajlar: 78
Kayıt: 30 May 2005 11:06

Mesaj gönderen mhizar »

Teşekkürler.Kusura bakmayın.Arama yaptım ama belki yanlış kelimelerle.Dediğiniz gibi formun visiblesini false yapınca açıldı.Ancak bu seferde kapanışında Application hatası veriyor.Formun onclose yordamında ise

Kod: Tümünü seç

action:=Cafree;
Frmmusteri:=nil; 
yazdım.Derleyici yanımda olmadığından hatayı yanlış yazabilirim ama şöyleydi galiba.

Kod: Tümünü seç

Application violation read at adress 
gibi.
Kullanıcı avatarı
lazio
Moderator
Mesajlar: 1527
Kayıt: 11 Tem 2003 04:55
Konum: İstanbul

Mesaj gönderen lazio »

Kod: Tümünü seç

Frmmusteri := TFrmmusteri.Create(self);
Frmmusteri.ShowModal;
bu şeklide açmayı denermisiniz.
ayrıca Frmmusteri yi Project -> Options dan form sekmesinde Auto-Create ten Available forms a taşıyın.

Kod: Tümünü seç

Action := caFree;
Frmmusteri := nil;
onclode olayı bu şekilde kalsın
DeveloperToolKit

..::|YeşilMavi|::..
mhizar
Üye
Mesajlar: 78
Kayıt: 30 May 2005 11:06

Mesaj gönderen mhizar »

Lazio hocam zaten dediğiniz gib yapıyordum bir farkla formu create ederken

Kod: Tümünü seç

Application.createform(Tfrmmusteri,frmmusteri);
şeklinde yapıyordum ancak sizin söy7lediğiniz çekilde create ettim ama enteresan yine şu hatayı veriyor.

Kod: Tümünü seç

Access violation at adress  0056E62C in module StokTakip.exeread of adress 000003B4
bu hatayı sadece formu showmodal açınca kapatırken veriyor.Formun on close yordamı söylediğiniz gibi ayrıca form availables form bölümünde.
Release yöntemiyle free etmeyi denedim gene olmuyyor.Ayrıca sadece bu formum değil birkaç formumu daha aynı showmodal açmak istedim
hepsindede aynı sorun.Neden olabilir acaba?
İlgilendiğiniz için sağolun.Kolay gelsin.
Kullanıcı avatarı
bobasturk
Kıdemli Üye
Mesajlar: 1387
Kayıt: 20 May 2004 08:39
Konum: Düzce

Mesaj gönderen bobasturk »

merhaba,

ben şöyle bir yol izliyorum. bu yolu yine bu formda ustalardan öğrendim.

Kod: Tümünü seç


button click olayına

if not assigned(form1) then
begin
  form1:=tform1.create(self);
  form1.show; //veya showmodal;
end
else
  form1.bringtofront;
end;

onclose olayına

action:=cafree;

formdestroy olayına

form1:=nil;

bu şekilde sorunsuz çalışıyor bende. tabiki options ta avaliabe tarafına almak şartı ile

kolay gelsin
Şefkat-u Merhamette Güneş Gibi Ol.
Başkalarının Kusurunu Örtmekte Gece Gibi Ol.
Sehavet-u Cömertlikte Akarsu Gibi Ol.
Hiddet-u Asabiyette Ölü Gibi Ol.
Tevazu-u Mahviyette Toprak Gibi Ol.
Ya Olduğun Gibi Görün Ya Göründüğün Gibi Ol.

Resim
Kullanıcı avatarı
lazio
Moderator
Mesajlar: 1527
Kayıt: 11 Tem 2003 04:55
Konum: İstanbul

Mesaj gönderen lazio »

mhizar yazdı:

Kod: Tümünü seç

Access violation at adress  0056E62C in module StokTakip.exeread of adress 000003B4
hocam bu hatayı, formu create etmeden, yada nil ettikten sonra ulaşmaya çalıştığınız için alıyorsunuzdur muhtemelen.
DeveloperToolKit

..::|YeşilMavi|::..
mhizar
Üye
Mesajlar: 78
Kayıt: 30 May 2005 11:06

Mesaj gönderen mhizar »

Haklısınız lazio hocam ama form mdichild olarak açılırsa yada showmodal açılırsa bu hatalar oluşmuyor.Sadece showmodalda.O konıuda yanlız kesinlikle haklısınız.Çünkü formun kapanı ş yordamına formu free etmeden önce kayıt modunda olup olmadığına göre

Kod: Tümünü seç

btKaydet.click;
yada

Kod: Tümünü seç

BtVazgec.click;
yazıyordum.Bunları kaldırdım onun yerine bu butonların içindeki kodları yazdım sorun çözüldü ama kafamada şu takıldı normal açılan formda vermeyen bir hatayı showmodal açınca niye veriyor diye.Çünkü o butonların içinde 15-20 satır kod vardı şimdi hepsini oraya tekrar yazdım.Yani kod kirliliği.Ama teşekkür ederim ilgilendiğiniz için.
Ama bu iki form çeşidi arasındaki hata farkını biliyorsanız yazarsanız sevinirim.Çünkü aynı poblemle başka bir alanda da karşılaşabiliriz.Tekrar teşekkürler iyi çalışmalar.
Cevapla