Form açık mı?

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
Serhat
Üye
Mesajlar: 203
Kayıt: 27 Tem 2014 11:10

Form açık mı?

Mesaj gönderen Serhat »

Selam bir formu show ile açıyorum sürekli üste kalması içinde (FormStyle := fsSTAYONTOP;) komutu kullanıyorum fakat butona tekrar tıklandığında aynı form ikici kez açılıyor bunu nasıl genelleyebilirim...




Kod: Tümünü seç

procedure TForm1.ToolButton18Click(Sender: TObject);
begin
  Form5.Show;
  Form5 := TForm5.Create(Nil);
  Application.ProcessMessages;
end;
Kullanıcı avatarı
cinarbil
Üye
Mesajlar: 109
Kayıt: 18 Mar 2014 09:26

Re: Form açık mı?

Mesaj gönderen cinarbil »

Kod: Tümünü seç

procedure TForm1.ToolButton18Click(Sender: TObject);
begin
  if (form5.Showing) then exit  // form5 gösteriliyorsa çık 
  
   Form5.Show;
  Form5 := TForm5.Create(Nil);
  Application.ProcessMessages;
end;
"…De ki: "Hiç bilenlerle bilmeyenler bir olur mu? Şüphesiz, temiz akıl sahipleri öğüt alıp-düşünürler" (Zümer Suresi, 9)
Kullanıcı avatarı
Serhat
Üye
Mesajlar: 203
Kayıt: 27 Tem 2014 11:10

Re: Form açık mı?

Mesaj gönderen Serhat »

Bu şekilde kullandı değişen bir şey olmadı.


if (Form6.Showing) then
begin
Exit;
end
else
begin
Form6.Show;
Form6 := TForm6.Create(Nil);
Application.ProcessMessages;
end;
end;
Kullanıcı avatarı
freeman35
Admin
Mesajlar: 2381
Kayıt: 12 Haz 2003 04:05
Konum: merkez camii yanı

Re: Form açık mı?

Mesaj gönderen freeman35 »

create etmediğin bir formu nasıl show ediyorsun?
if assigned() kullan sağlıklı olabilmesi içinde onclose da action := caFree; ondestroyda da form6 := nil; ekle autocreate form sa zaten girmez manual create edeceksende
initialization
form6 := nil;
kolay gele
ZAGOR TENAY TÜRK'tür... TÜRK kalacak...
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5

Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!
thelvaci
Kıdemli Üye
Mesajlar: 770
Kayıt: 11 Tem 2010 07:17
Konum: Istanbul
İletişim:

Re: Form açık mı?

Mesaj gönderen thelvaci »

Ben bu tarz durumlar için; ilgili formun OnClose'unda form değişkeninini Action := caFree'den sonra nil'e eşitliyorum. Formu create ederken ise;

Kod: Tümünü seç

  try
    MyForm.Show;
  except
    MyForm := TMyForm.Create(Application);
    MyForm.Show;
  end;
gibi bir yapı kullanıyorum. Form daha önce create edilmedi ise; MyForm.Show çağrımı bir hataya neden olacak, dolayısı ile form create edilecek ardından da show edilecek. Form daha önce create edildi ise bu sefer hata vermeden direkt Show işlemi gerçekleşecek.
Cevapla