formları kapatma

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
erdogan_ozkaya
Üye
Mesajlar: 839
Kayıt: 03 Eki 2007 02:00

formları kapatma

Mesaj gönderen erdogan_ozkaya »

arkadaşlar,

form1.. form2.. 3.. 4.. 5.. ...... 20 formlarım var ilk formda bir botton koydum basında tüm açık formları kapatmasını istiyorum nasıl yapabilirim

teşekkürler
erdogan_ozkaya
Üye
Mesajlar: 839
Kayıt: 03 Eki 2007 02:00

Re: formları kapatma

Mesaj gönderen erdogan_ozkaya »

aşağıdaki kod işimi görüyor fakat ilk formuda kapatıyor (giris_kontrol diye bir form)

Kod: Tümünü seç

procedure TANA_PENCERE.Image3Click(Sender: TObject);
var
  I: Integer;
begin

    ANA_PENCERE_SUNUCU.Connected:=False;
    ANA_PENCERE_SUNUCU.Database:='';
    ANA_PENCERE_SUNUCU.Server:='';
    ANA_PENCERE_SUNUCU.Username:='';
    ANA_PENCERE_SUNUCU.Password:='';
    Edit1.Text:='';
    Edit9.Text:='';
     Label11.Caption:='Çevrimdışı   ';
     Label11.Font.Color:=clRed;

     Panel3.Caption:='Lütfen Firma Seçiniz';

     Image3.Visible:=False;
     Image2.Visible:=True;

    for I := Application.ComponentCount - 1 downto 0 do
    begin

    if Application.Components[I] is  TANA_PENCERE then
    begin

    end else
    if Application.Components[I] is THintWindow then
    begin
    end else
    try
    (Application.Components[I] as TForm).Close;
    except
    end;
  end;
end;
end; 
Kullanıcı avatarı
Battosai
Üye
Mesajlar: 1316
Kayıt: 01 Eki 2007 12:02
Konum: Ankara

Re: formları kapatma

Mesaj gönderen Battosai »

Kod: Tümünü seç

for i := 0 to Screen.Formcount - 1 do begin
 if(Screen.Forms[i].name <> 'giris_kontrol') then
  Begin
    Screen.Forms[i].close;
  end;
end;

erdogan_ozkaya
Üye
Mesajlar: 839
Kayıt: 03 Eki 2007 02:00

Re: formları kapatma

Mesaj gönderen erdogan_ozkaya »

ilk fom form1, form1 açıldıktan sonra form2 geçiyor ve form2 de button ile birden fazla pencere açılıyor verdiğin kod çalışıyor ama her şeyi kapatıyor form2 kapatmayacak (ilk form form1 olduğu için onuda kapatmamalı yoksa program tamamen kapanıyor)

ilginize teşekkürler
Kullanıcı avatarı
SimaWB
Üye
Mesajlar: 1316
Kayıt: 07 May 2009 10:42
Konum: İstanbul
İletişim:

Re: formları kapatma

Mesaj gönderen SimaWB »

erdogan_ozkaya yazdı:ilk fom form1, form1 açıldıktan sonra form2 geçiyor ve form2 de button ile birden fazla pencere açılıyor verdiğin kod çalışıyor ama her şeyi kapatıyor form2 kapatmayacak (ilk form form1 olduğu için onuda kapatmamalı yoksa program tamamen kapanıyor)

ilginize teşekkürler
O zaman bir zahmet @Battosai'nin gönderdiği koda bir "if" daha ekleyin :evil:
There's no place like 127.0.0.1
erdogan_ozkaya
Üye
Mesajlar: 839
Kayıt: 03 Eki 2007 02:00

Re: formları kapatma

Mesaj gönderen erdogan_ozkaya »

?? nereye ne ekleyeyim ?
Kullanıcı avatarı
SimaWB
Üye
Mesajlar: 1316
Kayıt: 07 May 2009 10:42
Konum: İstanbul
İletişim:

Re: formları kapatma

Mesaj gönderen SimaWB »

Kod: Tümünü seç

if (Screen.Forms[i].name <> 'giris_kontrol') and (Screen.Forms[i].name <> 'Form2') then
yada

Kod: Tümünü seç

with Screen.Forms[i] do
  if (name <> Application.Mainform.Name) and (name <> Form2.Name) then
There's no place like 127.0.0.1
erdogan_ozkaya
Üye
Mesajlar: 839
Kayıt: 03 Eki 2007 02:00

Re: formları kapatma

Mesaj gönderen erdogan_ozkaya »

listindex(37) die hata veriyor :(
Kullanıcı avatarı
SimaWB
Üye
Mesajlar: 1316
Kayıt: 07 May 2009 10:42
Konum: İstanbul
İletişim:

Re: formları kapatma

Mesaj gönderen SimaWB »

erdogan_ozkaya yazdı:listindex(37) die hata veriyor :(
Nerede hata veriyor?
Debug yapıp baktınız mı?
Kodlar?
Verilen kodları tam olarak nasıl kullandınız?
There's no place like 127.0.0.1
erdogan_ozkaya
Üye
Mesajlar: 839
Kayıt: 03 Eki 2007 02:00

Re: formları kapatma

Mesaj gönderen erdogan_ozkaya »

basında hatan veriyor


KOD AŞAĞIDAKİ GİBİ

TEŞEKKÜR EDERİM :)

Kod: Tümünü seç

procedure TANA_PENCERE.Image3Click(Sender: TObject);
var
  I: Integer;
begin

    ANA_PENCERE_SUNUCU.Connected:=False;
    ANA_PENCERE_SUNUCU.Database:='';
    ANA_PENCERE_SUNUCU.Server:='';
    ANA_PENCERE_SUNUCU.Username:='';
    ANA_PENCERE_SUNUCU.Password:='';
    Edit1.Text:='';
    Edit9.Text:='';
     Label11.Caption:='Çevrimdışı   ';
     Label11.Font.Color:=clRed;

     Panel3.Caption:='Lütfen Firma Seçiniz';

     Image3.Visible:=False;
     Image2.Visible:=True;

    with Screen.Forms[i] do
    if (name <> Application.Mainform.Name) and (name <> ANA_PENCERE.Name) then

    for I := Application.ComponentCount - 1 downto 0 do
    begin

    if Application.Components[I] is  TANA_PENCERE then
    begin

    end else
    if Application.Components[I] is THintWindow then
    begin
    end else
    try


    (Application.Components[I] as TForm).Close;
    except
    end;
  end;
end;
ikra
Üye
Mesajlar: 901
Kayıt: 28 Nis 2005 01:26
Konum: Simdilik Topragin Üstü

Re: formları kapatma

Mesaj gönderen ikra »

Kod: Tümünü seç

procedure TANA_PENCERE.Image3Click(Sender: TObject);
var
  I: Integer;
begin

    ANA_PENCERE_SUNUCU.Connected:=False;
    ANA_PENCERE_SUNUCU.Database:='';
    ANA_PENCERE_SUNUCU.Server:='';
    ANA_PENCERE_SUNUCU.Username:='';
    ANA_PENCERE_SUNUCU.Password:='';
    Edit1.Text:='';
    Edit9.Text:='';
     Label11.Caption:='Çevrimdışı   ';
     Label11.Font.Color:=clRed;

     Panel3.Caption:='Lütfen Firma Seçiniz';

     Image3.Visible:=False;
     Image2.Visible:=True;

    with Screen.Forms[i] do ----->>> buradaki sayac (I) degerini nereden aliyor?

    if (name <> Application.Mainform.Name) and (name <> ANA_PENCERE.Name) then

    for I := Application.ComponentCount - 1 downto 0 do
    begin

    if Application.Components[I] is  TANA_PENCERE then
    begin

    end else
    if Application.Components[I] is THintWindow then
    begin
    end else
    try


    (Application.Components[I] as TForm).Close;
    except
    end;
  end;
end;

Kod: Tümünü seç

for i := pred(screen.formcount) downto 0 do
  if screen.forms[i].name <> application.mainform.name then
    screen.forms[i].close;
kıdemsiz üye
erdogan_ozkaya
Üye
Mesajlar: 839
Kayıt: 03 Eki 2007 02:00

Re: formları kapatma

Mesaj gönderen erdogan_ozkaya »

arkadaşlar örnek ekte verdiğiniz kodlar olmadı demiyorum beceremedim diyorum :)

ilginize teşekkürler
Dosya ekleri
ornek.rar
(168.67 KiB) 47 kere indirildi
Kullanıcı avatarı
SimaWB
Üye
Mesajlar: 1316
Kayıt: 07 May 2009 10:42
Konum: İstanbul
İletişim:

Re: formları kapatma

Mesaj gönderen SimaWB »

Gönderdiğiniz örnekte Form1'i Hide yaparak Form2'yi açıyorsunuz. Form1 daha sonra ne zaman görünsün istiyorsunuz?
Form1'den Form2'yi açarken Form1.Hide yapmadan sadece Form2.ShowModal yapsanız ve Form2'deki buton4'ün onClick olayını aşağıdaki yapsanız işinizi görür sanırım:

Kod: Tümünü seç

procedure TForm2.Button4Click(Sender: TObject);
var
  I: Integer;
begin
  for I := 0 to Screen.FormCount - 1 do
    with Screen.Forms[i] do
      if (name <> Self.Name) and (name <> Application.Mainform.Name) then
        Close;
end;
En son SimaWB tarafından 22 Haz 2012 12:37 tarihinde düzenlendi, toplamda 2 kere düzenlendi.
There's no place like 127.0.0.1
erdogan_ozkaya
Üye
Mesajlar: 839
Kayıt: 03 Eki 2007 02:00

Re: formları kapatma

Mesaj gönderen erdogan_ozkaya »

kardeş verdiğin kod çalışıyor çok teşekkür ederim ama ben soruyu eksik sormuşum çok özür dilerim :)

for1.show dediğimde çalışıyor fakat aşağıdaki kod ile açıncaçalışmıyor :(

Kod: Tümünü seç

procedure TANA_PENCERE.RzGroup2Items3Click(Sender: TObject);
var
   r : TRect;
begin
    if (ANA_PENCERE_SUNUCU.Connected=False)
    then ShowMessage('         Lütfen Önce Bağlantı Kurunuz        ') else

    if edit1.Text=''
    then ShowMessage('         Lütfen Çaılışılacak Firma Seçiniz       ') else
begin
        Windows.SetParent(ONAYLANAN_SIPARISLER.Handle, Panel1.Handle);
        GetWindowRect(Panel1.Handle, r);
        ONAYLANAN_SIPARISLER.WindowState :=  wsMaximized;
        ONAYLANAN_SIPARISLER.Show;
        GetWindowRect(ONAYLANAN_SIPARISLER.Handle, r);
  end;
end;
Cevapla