Form Yönetimi

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
eyalin
Üye
Mesajlar: 126
Kayıt: 09 May 2005 08:08

Form Yönetimi

Mesaj gönderen eyalin »

Merhabalar,

Bir süredir çözemediğim bir konu hakkında desteğinize ihtiyacım bulunuyor.

MDIChild bir formum var bu formun üzerinde query ve dataset nesnesi Datamoduldeki baglantı nesnesine bağlanıyor.
Form create olayında queryi açıyor ,formu close olayında queryi kapatıyorum.Bu forma bağlı bir adet detay formum var bu formu önceki formdan modal açıyorum.Bu formdaki DB nesneleri önceki formdaki datasete bağlı.

Kod: Tümünü seç

procedure TfrmMainform.rbBtnCariClick(Sender: TObject);
begin
if not Assigned(frmCariKart) then
begin
frmCariKart:=TfrmCariKart.Create(self);
frmCariKart.FormStyle :=fsMDIChild;
frmCariKart.Show;
end;
end;
Bu MDIChild formumu başka bir formdan Normal form olarak çağırıyorum.

Kod: Tümünü seç

frmCariKart:=tfrmCariKart.Create(nil);
frmCariKart.FormStyle:= fsNormal;
frmCariKart.Position:= poDesktopCenter;
frmCariKart.Height := 535;
frmCariKart.Width := 1000;
frmCariKart.cagiranForm:='fatura';
frmCariKart.btnSec.Visible :=True;
frmCariKart.Refresh;
try
frmCariKart.ShowModal;
finally
frmCariKart.Free;
end;
Cari kart formunu MDI olarak açtıktan sonra bu açık olarak beklerken.Diğer formumdan Carikart formunu tekrar create ediyorum ve cari bilgileri alıp formu kapatıyorum.

Daha sonra MDI forma geri dönüyorum ve detay formu açmaya çalışıyorum ancak access violation hatası alıyorum.

Burada sormak istediğim.Tekrar yarattığım form neden mevcutta açık olan formu nil ediyor ?
Bu sorunu aşmam için formu nasıl create etmem gerekiyor.

Yardımlarınız için teşekkürler.
Kullanıcı avatarı
csunguray
Üye
Mesajlar: 855
Kayıt: 09 Ara 2006 05:08
Konum: Adana
İletişim:

Re: Form Yönetimi

Mesaj gönderen csunguray »

Çünkü formu create etmek için aynı değişkeni kullanıyorsunuz. iki formu da frmCariKart olarak kullanmak yerine frmCariKart1 ve frmCariKart2 olarak kullanmayı deneyin. tabi bu değişkenleri TfrmCariKart tipinde tanımlamayı unutmayın.
C. Sunguray
csunguray at netbilisim.kom
Net Bilişim Hizmetleri

Sıradan her programcı bilgisayarın anlayabileceği kodlar yazabilir.
Sadece iyi programcılar insanların da anlayabileceği kodlar yazarlar.
Martin Fowler (http://martinfowler.com/)
eyalin
Üye
Mesajlar: 126
Kayıt: 09 May 2005 08:08

Re: Form Yönetimi

Mesaj gönderen eyalin »

Peki bu şekilde create edersem önceki formdaki komponentlere nasıl ulaşacağım?Forumda araştırıyorum findcomponent olayından bahsediliyor ? Çözüm bundamı ?Teşekkürler.
Kullanıcı avatarı
csunguray
Üye
Mesajlar: 855
Kayıt: 09 Ara 2006 05:08
Konum: Adana
İletişim:

Re: Form Yönetimi

Mesaj gönderen csunguray »

Önceki formdaki bileşenlere neden ulaşamayacağınızı anlamadım. Ama basit şekilde TfrmCariKart üzerine bir DataSource koyarsınız. Form üzerindeki bileşenleri bu DataSource a bağlarsınız. Sonra TfrmCariKart ın bir örneğini oluşturduğunuzda

Kod: Tümünü seç

frmCariKart1.DataSource1.DataSet := QCari; 
gibi bir kod kullanarak hangi verileri görüntüleyeceğini belirlersiniz.
C. Sunguray
csunguray at netbilisim.kom
Net Bilişim Hizmetleri

Sıradan her programcı bilgisayarın anlayabileceği kodlar yazabilir.
Sadece iyi programcılar insanların da anlayabileceği kodlar yazarlar.
Martin Fowler (http://martinfowler.com/)
eyalin
Üye
Mesajlar: 126
Kayıt: 09 May 2005 08:08

Re: Form Yönetimi

Mesaj gönderen eyalin »

Yanlış bir düzenleme yapmış olabilirim.Detay formundaki DBeditler doğrudan cariformdaki datasete bağlı ve aynı formun üzerindeki Kaydet butonunun click olayında cariform.qcari.post; şeklinde bir kod var.Dolayısıyla farklı değişken ile form oluşturursam post veya cancel olayını nasıl kodlamalıyım ?

Teşekkürler.
eyalin
Üye
Mesajlar: 126
Kayıt: 09 May 2005 08:08

Re: Form Yönetimi

Mesaj gönderen eyalin »

Showmodal açılan formdan önceki formun üzerindeki dataset nesnesine Post komutunu nasıl gönderebilirim?
Kullanıcı avatarı
csunguray
Üye
Mesajlar: 855
Kayıt: 09 Ara 2006 05:08
Konum: Adana
İletişim:

Re: Form Yönetimi

Mesaj gönderen csunguray »

Açıkladığım çözümü daha dikkatli okuyun.
legolaslee yazdı:Detay formundaki DBeditler doğrudan cariformdaki datasete bağlı
DBEditler'i bir DataSet'e değil DataSource a bağlayabilirsiniz. DataSource u da DataSet e bağlarsınız. Detay formuna bir DataSource koyun ve DetayFormu görüntülerken hangi formun içerisinden görüntülüyorsanız o formdaki DataSeti Detay formdaki DataSource.DataSet e atayın. Detay formunda Kaydet tuşuna basılınca da :

Kod: Tümünü seç

DataSource1.DataSet.Post
yapın olsun, bitsin.
C. Sunguray
csunguray at netbilisim.kom
Net Bilişim Hizmetleri

Sıradan her programcı bilgisayarın anlayabileceği kodlar yazabilir.
Sadece iyi programcılar insanların da anlayabileceği kodlar yazarlar.
Martin Fowler (http://martinfowler.com/)
eyalin
Üye
Mesajlar: 126
Kayıt: 09 May 2005 08:08

Re: Form Yönetimi

Mesaj gönderen eyalin »

Cemil bey,

Cevap için teşekkürler.Meğer kulağımı tersten tutuyormuşum.

İyi çalışmalar.
Cevapla