form create ediyom sonra yok ederken hata veriyor.

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
ieski
Üye
Mesajlar: 20
Kayıt: 09 Tem 2003 08:19

form create ediyom sonra yok ederken hata veriyor.

Mesaj gönderen ieski »

S.A.

var
dlg: TForm3;
begin
try
dlg := TForm3.Create(nil);
dlg.ShowModal;

burada çağırıyorum...

FreeAndNil(dlg);



sonra form3'ün içinde

procedure TForm3.DBGrid1CellClick(Column: TColumn);
begin
KeyValue := IBQuery1.FieldByName('FATURA_NO').AsString;
Form3.Free;
end;

burada accesviolation hatası veriyor.

Teşekkür Ederim.
ylmz
Üye
Mesajlar: 110
Kayıt: 18 Mar 2005 02:32
Konum: Antalya

Mesaj gönderen ylmz »

merhaba,

formun close olayında action parametresine

action := cafree;

değerini atarsan daha sağlıklı olur. Böylece form kapanırken bellekten atılacağını garantiye almış olursun.Ayrıca başka bir yerde free çağrısını yapmana gerek kalmaz.İyi çalışmalar.
Kullanıcı avatarı
ieski
Üye
Mesajlar: 20
Kayıt: 09 Tem 2003 08:19

kafayı yiyecem yaaa

Mesaj gönderen ieski »

şimdi ben bir formu creat ediyorum aşağıdaki gibi
dlg := TForm3.Create(Application);
dlg.ShowModal;

sonra açılan formda grid'de bir hücreyi seçince formu kapatıp diğer forma dönmek istiyorum..
şimdi form3 'te iken
form3.close yapıyorum hata veriyor.


sonra o forma zaten.
FreeAndNil(dlg); yokediyorum

teşekkür ederim ilginiz için.
Kullanıcı avatarı
ieski
Üye
Mesajlar: 20
Kayıt: 09 Tem 2003 08:19

form create close porblemi

Mesaj gönderen ieski »

şimdi ben bir formu creat ediyorum aşağıdaki gibi
dlg := TForm3.Create(Application);
dlg.ShowModal;

sonra açılan formda grid'de bir hücreyi seçince formu kapatıp diğer forma dönmek istiyorum..
şimdi form3 'te iken grid'in bir hücersini tıklayınca aşağıdaki gibi
bir değer alıyorum..

KeyValue := 111
form3.close // yapıyorum hata veriyor.


sonra çağırdığım forma geri dönünce zaten.
FreeAndNil(dlg); yokediyorum


burda problemim girid'teki hücre mouse ile tıklanınca formu kendi içinde kapatamıyorum
teşekkür ederim ilginiz için.
Kullanıcı avatarı
ieski
Üye
Mesajlar: 20
Kayıt: 09 Tem 2003 08:19

neyse buldumm :D

Mesaj gönderen ieski »

şimdi şöyle yaptım..

form1'de
dlg := TForm3.Create(nil);
dlg.ShowModal;

create edip gösteriyorum..

form3'te
grid'in cellclick oolayınca

close //dedim

oldu..
:D

teşekkürler
Kullanıcı avatarı
Murat DİCLE
Kıdemli Üye
Mesajlar: 702
Kayıt: 19 Nis 2006 04:12
Konum: İstanbul
İletişim:

Mesaj gönderen Murat DİCLE »

A.S.

Hata vermesinin sebebi, ShowModal işlemi bitmeden önce sen formu içerden free ediyorsun.

bunu şöyle yapmak en doğrusudur.

Kod: Tümünü seç

   F := TForm3.Create(Self); // yada Create(Application)
   if F.ShowModal = mrOK then
      ShowMessage('Bunu seçtin: ' + KeyValue)
   else
      ShowMessage('Form iptal edildi. bişi seçilmedi ki');

   //Şimdi de formu free et.. 
   //Showmodal bir formun OnCLose bölümüne caFree eklemeyin.
   //MDI formlardaki gibi..
   F.Free;
ve Form3 içindeki olay için ise şöyle yapalım.

Kod: Tümünü seç

procedure TForm3.DBGrid1CellClick(Column: TColumn); 
begin 
   KeyValue := IBQuery1.FieldByName('FATURA_NO').AsString; 
   ModalResult := mrOK;
   Close;
end; 
İyi çalışmalar.
Kullanıcı avatarı
ieski
Üye
Mesajlar: 20
Kayıt: 09 Tem 2003 08:19

Mesaj gönderen ieski »

ALLAH Razı Olsun. Teşekkür Ederim.
Kullanıcı avatarı
Murat DİCLE
Kıdemli Üye
Mesajlar: 702
Kayıt: 19 Nis 2006 04:12
Konum: İstanbul
İletişim:

Mesaj gönderen Murat DİCLE »

Senden de ALLAH razı olsun..
Cevapla