Self Form Create Edilmiş Mi ?

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
PTT
Üye
Mesajlar: 30
Kayıt: 26 Ağu 2011 02:37

Self Form Create Edilmiş Mi ?

Mesaj gönderen PTT »

İyi Akşamlar
Forumdaki birçok yazışmadan sorunumu çözemedim.
Formu oluştururken aşağıdaki kodu kullanıyorum. Kapatırken de sadece Action:=caFree; yapıyorum.

Kod: Tümünü seç

procedure TMainForm.btnAcClick(Sender: TObject);
var
   FrmHesaplar:TFrmHesaplar; 
begin
        FrmHesaplar:=TFrmHesaplar.Create(Self);
                         FrmHesaplar.Show;
end;
Ben hesaplar penceresi sadece 1 kere açılsın istiyorum. Eğer açıksa tekrar açılmasını istemiyorum.
Aşağıdaki şekilde kontrol ettiğimde pencereler hiç açılmıyor.

Kod: Tümünü seç

   if not assigned(FrmHesaplar) then

Kod: Tümünü seç

    if FrmHesaplar=nil then 

Nerede eksik birşeyler uyguladıgımı bulamadım. Nasıl yapabileceğim konusunda yardımcı olmanızı rica ederim

Teşekkürler
Kullanıcı avatarı
SHURZAN
Üye
Mesajlar: 73
Kayıt: 06 Eki 2007 05:34
Konum: İstanbul

Re: Self Form Create Edilmiş Mi ?

Mesaj gönderen SHURZAN »

Ben C++ çıyım ancak sana şöyle yardımcı olabilirim. Eğer FrmHesaplar isimli değişkenin yaratılmışsa birdaha yaratma
sanırım sizde şöyle

Kod: Tümünü seç

if not assigned(FrmHesaplar) then
FrmHesaplar:=TFrmHesaplar.Create(Self);
ende;
mutlaka Show edeceksin budurumda fonksiyonun şöyle olmalı

Kod: Tümünü seç

/* FrmHesaplar değişkenini fonksiyon içinde tanımlamamalısın ya global alanda olmalı yada forum sınıfı içinde olmalı çünkü her defasında fonksiyona girdiğinde kod akışı aynı isimli yeni bir değişken yaratıldığından onu "if not assigned(FrmHesaplar) then"" ile kontrol edemezsin bu heniz yaratıldı o da sanırım sizde şöyle olmalı*/
type
  TForm1 = class(TForm)
  private
    { Private declarations }
  public
    { Public declarations }
      FrmHesaplar:TFrmHesaplar; 
  end;

procedure TMainForm.btnAcClick(Sender: TObject);
var

begin
   if not assigned(FrmHesaplar) then     
   FrmHesaplar:=TFrmHesaplar.Create(Self);
  end;
            FrmHesaplar.Show;
end;
Yardımcı olmaya çalıştım ama ana fikri anlamış olmalısın
PTT
Üye
Mesajlar: 30
Kayıt: 26 Ağu 2011 02:37

Re: Self Form Create Edilmiş Mi ?

Mesaj gönderen PTT »

Sorunumu verdiğiniz bilgiler dogrultusunda çözdüm.
Çok Teşekkür ederim
Kullanıcı avatarı
SHURZAN
Üye
Mesajlar: 73
Kayıt: 06 Eki 2007 05:34
Konum: İstanbul

Re: Self Form Create Edilmiş Mi ?

Mesaj gönderen SHURZAN »

Yardımcı olmuşsam ne mutlu bana
Kullanıcı avatarı
barutali
Üye
Mesajlar: 297
Kayıt: 02 Tem 2007 02:30

Re: Self Form Create Edilmiş Mi ?

Mesaj gönderen barutali »

bir alternatif olarak

Kod: Tümünü seç

if not assigned(FrmHesaplar) then
begin
 FrmHesaplar:=TFrmHesaplar.Create(Self);
 FrmHesaplar.show;
end
 else 
  begin
  FrmHesaplar.bringtofront;
  end;
amatör küme programcı :D
PTT
Üye
Mesajlar: 30
Kayıt: 26 Ağu 2011 02:37

Re: Self Form Create Edilmiş Mi ?

Mesaj gönderen PTT »

SHURZAN yazdı:
FrmHesaplar değişkenini fonksiyon içinde tanımlamamalısın ya global alanda olmalı
Sn Barutali,
İşin püf noktası yukarıda belirtildiği gibi. Bakın ilk mesajımda belirttiğim gibi bende sizin kod bloğunu kullanmıştım.
Ama benim formların global değildi. Bu durumda kod işe yaramıyordu. Sn Shurzanın dediği gibi global tanımlanınca istenilen sonuca ulaşılabildi.
Yinede ek bilgi için teşekkür ederim
Kullanıcı avatarı
barutali
Üye
Mesajlar: 297
Kayıt: 02 Tem 2007 02:30

Re: Self Form Create Edilmiş Mi ?

Mesaj gönderen barutali »

yazmaya üşenipte kopyala yapıştır yaptığım için öyle bir sonuç çıkmış :) Normalde Aşağıdaki gibi kullanırım :)

Kod: Tümünü seç

USES UFRMHESAPLAR;

if not assigned(FRMHESAPLAR) then
begin
 application.createform(TFRMHESAPLAR, FRMHESAPLAR);
 FrmHesaplar.show;
end
 else 
  begin
  FrmHesaplar.bringtofront;
  end;
amatör küme programcı :D
Cevapla