Açık olan formları ensondan başlayarak kapatma
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
Açık olan formları ensondan başlayarak kapatma
Uygulamamda ana formdan açtığım diğer formları FormAdı.ShowModal diye açıyorum. A1 anaformum,A2 alt form,A3 ise A2'nin alt formu şeklinde alt alta birkaç form açıyorum. Bir timer tutuyorum.Süre dolduğu
zaman bu açılan formların en sondan başlayarak kapatılmasını istiyorum.
Bu işlemi nasıl yapabiliriz?
zaman bu açılan formların en sondan başlayarak kapatılmasını istiyorum.
Bu işlemi nasıl yapabiliriz?
Muttalip TOPTAŞ
Yıldız Teknik Üniversitesi
Bilgi İşlem Dairesi Başkanlığı
Tel: 0212-3832134
Yıldız Teknik Üniversitesi
Bilgi İşlem Dairesi Başkanlığı
Tel: 0212-3832134
merhaba,
kod olarak yardımcı olamayacağım ama mantık olarak bir şeyler demek istiyorum,
timer ın süresi dolduktan sonra aktif olan formu tespit ederek kapatmasını sağlayabilirsin.
en üstteki form aktif form olacağı için kapandıkça sıradaki form en üste ve aktif duruma geleceğinden bu şekilde olabilir diye düşünüyorum.
kolay gelsin
kod olarak yardımcı olamayacağım ama mantık olarak bir şeyler demek istiyorum,
timer ın süresi dolduktan sonra aktif olan formu tespit ederek kapatmasını sağlayabilirsin.
en üstteki form aktif form olacağı için kapandıkça sıradaki form en üste ve aktif duruma geleceğinden bu şekilde olabilir diye düşünüyorum.
kolay gelsin
Şefkat-u Merhamette Güneş Gibi Ol.
Başkalarının Kusurunu Örtmekte Gece Gibi Ol.
Sehavet-u Cömertlikte Akarsu Gibi Ol.
Hiddet-u Asabiyette Ölü Gibi Ol.
Tevazu-u Mahviyette Toprak Gibi Ol.
Ya Olduğun Gibi Görün Ya Göründüğün Gibi Ol.

Başkalarının Kusurunu Örtmekte Gece Gibi Ol.
Sehavet-u Cömertlikte Akarsu Gibi Ol.
Hiddet-u Asabiyette Ölü Gibi Ol.
Tevazu-u Mahviyette Toprak Gibi Ol.
Ya Olduğun Gibi Görün Ya Göründüğün Gibi Ol.

- Trial_Cooder
- Üye
- Mesajlar: 236
- Kayıt: 17 Nis 2006 04:44
Kod: Tümünü seç
(Timer)
A1.Close;
(Timer)
A2.Close;
(Timer)
A3.Close;
- Trial_Cooder
- Üye
- Mesajlar: 236
- Kayıt: 17 Nis 2006 04:44
Bu İşi Görmüyormu Sıra İle Arada Zaman Boşluğu Bırakarak
Kod: Tümünü seç
(Timer)
A3.Close;
(Timer)
A2.Close;
(Timer)
A1.Close; (A1.Ana Formun İse Sadece Close Yazsanda Olur)
coderlord un dediği gibi her OnCreate de TList e ekleyip, OnClose da da TList ten silerek oluşturduğun liste ile yapabilirsin.. Başka bir yol da aktif formu bulun close (yada free) edebilirsin 
Belki buradan yola çıkılabilir

Belki buradan yola çıkılabilir

Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
Üstte verdiğim bağlantıdaki bilgilerden yola çıkarak şöyle bir şey çıktı:
Projedeki ilk başta oluşturulan ana form ve diğer yardımcı formlar dışındaki formlar auto-create olarak oluşturulmamalı. Açarken;
Kapatırken (OnClose da)
şeklinde kapatılmalı.
Burada önemli olan sıfırıncı formun aktif olan form olmasıdır. Bir listBox a ekletilerek bu liste kontrol edilebilir. Eğer aktif form adı ilk form adı ile aynı ise isteğe bağlı olarak kapatmayacak.
Projedeki ilk başta oluşturulan ana form ve diğer yardımcı formlar dışındaki formlar auto-create olarak oluşturulmamalı. Açarken;
Kod: Tümünü seç
procedure TForm1.Button1Click(Sender: TObject);
begin
Form2 := TForm2.Create(Self);
Form2.Show;
end;
Kod: Tümünü seç
procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action := caFree;
end;
Kod: Tümünü seç
procedure TForm1.Timer1Timer(Sender: TObject);
var
i: integer;
begin
if (Screen.FormCount > 0) and (Screen.Forms[0].Name <> 'Form1') then
Screen.Forms[0].Close;
// ListBox1.Items.Clear;
// for i := 0 to Screen.FormCount - 1 do
// ListBox1.Items.Add(Screen.Forms[i].Name);
end;
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!