konu ile ilgisi var diye soruyorum

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
oguthan
Üye
Mesajlar: 34
Kayıt: 30 May 2005 10:23

konu ile ilgisi var diye soruyorum

Mesaj gönderen oguthan »

Esselamun Aleyküm arkadaşlar,

programımın ana formu MDIForm ve bir menü formum var bu menu formum da MDIChildForm.

MDIChildForm 'um ana formla birlikte creat edilecek şekilde ayarlandı yani Project ---> options menüsünde Auto Creat Forms kısmında solda.


sistem normal çalışıyor ve programım çalışınca menü formumda otomatik olarak creat ediliyor sorun yok. menü formuma bir boton koydum ve butonun onclick olayına close; kodu var ve menü formunun onClose olayında ise;
begin
Action:=caFree;
frm_menu:=nil;
end;

ana formumda menüyü göster diye bir butonum var ve ben oyle bişiy yapmak istiyorum ki eğer frm_menu formum yani child formum zaten creat edilmişse etmeyecek ama close edilip serbest bırakıldıysa(caFree ve nil) yeniden creat edecek.

İlgi ve alakanız için şimdiden teşekkür ederim...
oguthan
palandoken
Üye
Mesajlar: 151
Kayıt: 16 Eki 2006 10:43
Konum: ERZURUM

Mesaj gönderen palandoken »

Ve Aleyküm Selam Kardeşim,

Ana Form'un Unit'inin Var bloğunda bir tane değişken tanımla.Mesela :

Kod: Tümünü seç

Deger : Boolean = True ;
Sonra frm_menu ' nün OnClose olayına

Kod: Tümünü seç

Deger := False ;
satırını ekle.

Sonra Ana Form'daki menüyü göster butonuna şunu yaz

Kod: Tümünü seç

if Deger = True then
   frm_menu.Show ;
else
   begin
      frm_menu := Tfrm_menu.Create(Self) ;
      frm_menu.Show ;
   end ;
frm_menu'nün OnShow'unada

Kod: Tümünü seç

Deger := True ;
yaz.Kolay gelsin...
akıllanma , aklını başına toplama , toparlanma , kendisini derleme bu dünyaya ait bir vazife.
ahirette nasıl olsa aklın başına gelecek.
oguthan
Üye
Mesajlar: 34
Kayıt: 30 May 2005 10:23

alaka gösterdiğin için sağol kardeşim ama ...

Mesaj gönderen oguthan »

sanırım gözden kaçırmış olmalısın frm_menu formumun close olayında o formu bellekten siliyorum yani
Action:=caFree;
Frm_Menu:=nil;
komutu bence o boolean değerin içerisindeki bilgiyi siler diye düşünüyorum hem silmese bile sonuça ben frm_menu formunu ceFree dediğim için tekrar showla çağıramam yani yeniden creat etmem gerekir..
neden bellekten sildiğim konusuna gelince eğer oyle yapmayıp da direk close dersem formu kapatmıyor sadece alta atıyor bu de cok amatörce geliyor bana..

yinede cok teşekkür ederim alakan için.
Allah Razı olsun..
oguthan
oguthan
Üye
Mesajlar: 34
Kayıt: 30 May 2005 10:23

eyvahhhhh !!!!

Mesaj gönderen oguthan »

Kardeşim hakkını helal et dikatli okumamışım dikkatli bir şekilde okuduğum zaman mantıklı geldi büyük ihtimalle çalışacak hemen deniyorum.

Özür dilerim..
oguthan
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Mesaj gönderen aslangeri »

s.a.
şöyle bir fonksiyon işini görür sanırım.

Kod: Tümünü seç

Function TFMain.TanimformunuGoster(fc: TFormclass; fa: string):TForm;
var
  i:integer;
begin
  for i:=0 to FMain.MDIChildCount-1 do
  begin
    result:=fmain.MDIChildren[i];
    if result.Name=fa then
    begin
      result.BringToFront;
      result.SetFocus;
      if result.WindowState=wsminimized then
         result.WindowState:=wsNormal;
      exit;
    end;
  end;
  result:=fc.Create(application.MainForm);
end;
fonksiyon parametre olarak verilen formclasında ve isminde bir form varmı kontrol ediyor yoska create ediyor varsa geriye oformu referans döndürüyor.
kullanımı

Kod: Tümünü seç

TanimformunuGoster(Tfrm_menu,'frm_menu');
kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Cevapla