Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
gulcin
Üye
Mesajlar: 6 Kayıt: 12 Nis 2005 09:32
Konum: Eskişehir
Mesaj
gönderen gulcin » 21 Nis 2005 05:32
Kod: Tümünü seç
procedure tform1.mdiformac(gelenform:Tform; gelenformsinif:Tformclass);
begin
if gelenform = nil then
begin
gelenform := gelenformsinif.Create(nil);
end
else
begin
gelenform.show;
end;
end;
Yukarıdaki kodları butonun Click olayına yazarsam doğru sonucu elde ediyorum:
Kod: Tümünü seç
procedure TForm1.Button1Click(Sender: TObject);
begin
if form2 = nil then
begin
form2 := Tform2.Create(nil);
end
else
begin
form2.show;
end;
end;
Fakat procedure olarak kullandığımda
sürekli nil değerini döndürüyor ve formu sürekli açıyor.
Yapmak istediğim , butonun click olayındaki gibi çalışan bir procedure yazmak. Bunun için procedure de ne gibi değişiklikler yapmalıyım.
husonet
Admin
Mesajlar: 2962 Kayıt: 25 Haz 2003 02:14
Konum: İstanbul
İletişim:
Mesaj
gönderen husonet » 21 Nis 2005 08:28
Nil atamaların doğrumu peki
Formları kapattığın zaman Nil ataması yaıyormusun
Kolay Gelsin...
sychorax
Üye
Mesajlar: 206 Kayıt: 20 May 2004 04:29
Mesaj
gönderen sychorax » 22 Nis 2005 12:56
MDI formlar için ayrı sınıf oluşturduğunda inherit ettiğin her forma ayrı ayrı nil ataması yapman gerekiyor.
Kolay gelsin
gulcin
Üye
Mesajlar: 6 Kayıt: 12 Nis 2005 09:32
Konum: Eskişehir
Mesaj
gönderen gulcin » 22 Nis 2005 09:07
MFIChild olan formun onclose olayına aşağıdaki kodu yazdım.
Kod: Tümünü seç
procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
form2 := Nil;
action := CaFree;
end
Fakat form kapatılmadan tekrar procedure u çağıran butonu tıkladığımda form2 den tekrar açıyor.
vedatkaba
Kıdemli Üye
Mesajlar: 866 Kayıt: 06 Oca 2004 06:50
Konum: DARICA/GEBZE
Mesaj
gönderen vedatkaba » 22 Nis 2005 09:24
Formunu oluştururken
Kod: Tümünü seç
if not assigned(Formadı) then
begin
form:=Tform.create(self);
form.show;
end
else
form.show;
end;
assigened le kontrol ettikten sonra formun olup olmadığına göre kontrol ettir ona gör işlem yaptır..
kapatırken ise
Kod: Tümünü seç
action:=cafree;
form:=nil; /// nil ataki assigned yöntemi işe yarasın assigned forma nil atanıp atanmadığını kontrol eder ve kod işe yarar.
kolay gelsin
***********************************
Kamil odur ki; koya dünyada bir eser,
Eseri olmayanın, yerinde yeller eser.
***********************************
gulcin
Üye
Mesajlar: 6 Kayıt: 12 Nis 2005 09:32
Konum: Eskişehir
Mesaj
gönderen gulcin » 22 Nis 2005 10:05
Daha önce yazdığım ve sizden gelen kodlar butonun click olayında gayet düzgün çalışlıyor. Ama ben bu kodlarla procedure oluşturduğumda aynı sonucu elde edemiyorum.
Kod: Tümünü seç
procedure tform1.mdiformac(gelenform:Tform; gelenformsinif:Tformclass);
Procedure ü tanımalrken yanlış bir değer tanımlamasımı yapmaktayım? Yada doğru tanımlama nedir?
Click olayında çalılan bir komut, Procedure olarak çağrıldığında neden çalışmaz?
vedatkaba
Kıdemli Üye
Mesajlar: 866 Kayıt: 06 Oca 2004 06:50
Konum: DARICA/GEBZE
Mesaj
gönderen vedatkaba » 22 Nis 2005 11:16
oluşan hatayı yazarsanız daha çok yardımcı oluruz .
***********************************
Kamil odur ki; koya dünyada bir eser,
Eseri olmayanın, yerinde yeller eser.
***********************************
fduman
Moderator
Mesajlar: 2749 Kayıt: 17 Ara 2004 12:02
Konum: Ankara
Mesaj
gönderen fduman » 22 Nis 2005 11:26
vedatkaba yazdı: Formunu oluştururken
Kod: Tümünü seç
if not assigned(Formadı) then
begin
form:=Tform.create(self);
form.show;
end
else
form.show;
end;
Şöyle olsa daha mantıklı...
Kod: Tümünü seç
if not assigned(Formadı) then
form:=Tform.create(self);
form.show;
mrmarman
Üye
Mesajlar: 4740 Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:
Mesaj
gönderen mrmarman » 22 Nis 2005 11:47
Merhaba...
- Bir de şu şekilde dener misin... Yalnız
GelenForm 'a
Ana Form unun Name'ini gönder...
- Çünkü oluşacak
MDIChild 'ler hep
Ana Form un
MDIChild listesine eklenirler... Gerekli açıklamaları procedure içinde yaptım...
- Yani şu şekilde kullan...
Kod: Tümünü seç
Procedure MDIFormAc(GelenForm: TForm; GelenFormSinif: TFormClass);
var
i: Integer;
begin
// MDI Form olan Ana formumuz GelenForm'a bağlı tüm MDIChild'leri kontrol ediyoruz.
// Bakıyoruz ki belirlediğimiz TypeClass'da ChildForm var mı ?
for i := 0 to GelenForm.MDIChildCount - 1 do
begin
if GelenForm.MDIChildren[i] is GelenFormSinif then
begin
// Mevcut ama minimize ve/veya arkada olanı
// Activate etme işlemleri vesaire...
Exit;
end;
end;
// Mevcut değilse Create et...
GelenFormSinif.Create(GelenForm);
end;
En son
mrmarman tarafından 22 Nis 2005 12:07 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
vedatkaba
Kıdemli Üye
Mesajlar: 866 Kayıt: 06 Oca 2004 06:50
Konum: DARICA/GEBZE
Mesaj
gönderen vedatkaba » 22 Nis 2005 11:48
yerine
kullanıpta denesen
***********************************
Kamil odur ki; koya dünyada bir eser,
Eseri olmayanın, yerinde yeller eser.
***********************************