form listesi

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
kirve
Üye
Mesajlar: 64
Kayıt: 03 Nis 2008 12:40

form listesi

Mesaj gönderen kirve »

Arkadaşlar merhaba
delphi idesinde viev->form list kısmındaki form listelerini delphi runtime kısmından nasıl ulaşabilirim. bir for dongusu ile sayısını alıp teker teker dolaşmak istiyorum isimler üzerinde.
Kullanıcı avatarı
SimaWB
Üye
Mesajlar: 1316
Kayıt: 07 May 2009 10:42
Konum: İstanbul
İletişim:

Re: form listesi

Mesaj gönderen SimaWB »

Screen.Forms ve Screen.FormCount işinize yarar sanırım.
There's no place like 127.0.0.1
ertank
Kıdemli Üye
Mesajlar: 1716
Kayıt: 12 Eyl 2015 12:45

Re: form listesi

Mesaj gönderen ertank »

Merhaba,

Bir form çalışma zamanında oluşturulmamış ise (otomatik veya manuel olarak) bu formun adını almak çok kolay değil. Ancak otomatik veya manuel oluşturulmuş formların isimlerini aşağıdaki şekilde listelemeniz mümkün.

Kod: Tümünü seç

procedure ListCreatedForms(AList: TStrings);
var
  i: Integer;
begin
  for i := 0 to Screen.FormCount - 1 do
    AList.Add(Screen.Forms[i].Name);
end;
Yukarıdaki prosedürün kullanımı şöyle olacaktır.

Kod: Tümünü seç

procedure TForm1.Button1Click(Sender: TObject);
begin
  ListBox1.Items.Clear();
  ListCreatedForms(ListBox1.Items);
end;
Eğer siz henüz oluşturulmamış formların da listesini almak istiyorsanız farklı bir yöntem geliştirmek gerekli.
kirve
Üye
Mesajlar: 64
Kayıt: 03 Nis 2008 12:40

Re: form listesi

Mesaj gönderen kirve »

evet bende bu konu üzerine yogunlastım. oluşturmadığım formları listelemeye calışıyorum ama henüz yol katedebilmiş değilim.
yapmak istediğim şu aslında. projemde tanımladığım formlar var. yetkilendirme sayfamda bu formların listesini çekip listedeki kullanıcılarıma aktif veya pasif hale gitirmek ve yetki dahilinde forma giriş yapabilmesini sağlamak. manuel olarak formları bir vt ye eklemek geldi ama buda projede ilerde güncelle yaptıgında vt ye tekrar kayıt gerektiricek.
sizce nasıl bir yöntem uygulasam daha sağlıklı olur.
iyi çalışmalar.
thelvaci
Kıdemli Üye
Mesajlar: 770
Kayıt: 11 Tem 2010 07:17
Konum: Istanbul
İletişim:

Re: form listesi

Mesaj gönderen thelvaci »

Delphi'nin hangi sürümünü kullanıyorsunuz bilmiyorum ama; çözüm için RTTI'yi kullanabilirsiniz. Son versiyon Delphi'ler için, TRttiContext üzerinde biraz çalışın; takılır iseniz farklı yardımlar gelecektir.
Kullanıcı avatarı
freeman35
Admin
Mesajlar: 2380
Kayıt: 12 Haz 2003 04:05
Konum: merkez camii yanı

Re: form listesi

Mesaj gönderen freeman35 »

@kirve
Design time da kendi listeni oluştur, sonuçta programı yazan sensin :) dışarıdan biri form ekliyecek değil ya :) form isimleri yada kendi vereceğin caption ları bir constant array içine ekleyebilirsin.
Diyelim ilk versiyonda 10 dimension var, ve bunları db ye kaydettin, yeni sürümde dimension 12 oldu varsayalım, burada db de ile array karşılaştırması yapıp, bulunmadı taktirde bir default yetki verirsen bir sorun çıkmaz. kullanıcı yeni versiyon ile db yi güncellediğinde zaten yeni 12 dimension hali ile kaydedilecek.
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 !!!
kirve
Üye
Mesajlar: 64
Kayıt: 03 Nis 2008 12:40

Re: form listesi

Mesaj gönderen kirve »

haklısın freeman35 :) konu başlığını açtıktan sonra aklıma gelen çözümlerden biri o oldu. form create edildiginde formnamelerini bir dizide saklıyorum ve ordan kullanıyorum. teşekkürler ilginiz için.
Kullanıcı avatarı
csunguray
Üye
Mesajlar: 855
Kayıt: 09 Ara 2006 05:08
Konum: Adana
İletişim:

Re: form listesi

Mesaj gönderen csunguray »

Aşağıdaki linlerde benzer çözümler bulabilirsiniz:

How to list all available form in delphi 7
http://stackoverflow.com/questions/1585 ... n-delphi-7

Dynamically list all forms in a project
http://stackoverflow.com/questions/3280 ... -a-project
C. Sunguray
csunguray at netbilisim.kom
Net Bilişim Hizmetleri

Sıradan her programcı bilgisayarın anlayabileceği kodlar yazabilir.
Sadece iyi programcılar insanların da anlayabileceği kodlar yazarlar.
Martin Fowler (http://martinfowler.com/)
Cevapla