TFormClass ın değişken bir string ile kullanılması

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
sky
Üye
Mesajlar: 3
Kayıt: 07 Tem 2005 11:39

TFormClass ın değişken bir string ile kullanılması

Mesaj gönderen sky »

TformClass a değişken bir string atayabilir miyim ? Bunun strtoint gibi bir atama komutu var mı?
t-hex
Kıdemli Üye
Mesajlar: 531
Kayıt: 18 Mar 2005 02:45
Konum: İstanbul/Antalya
İletişim:

Mesaj gönderen t-hex »

Merhaba,

Kod: Tümünü seç

TFormClass = class of TForm
şeklinde tanımlanmıştır. yani bu tipe tayacağınız değerler TForm sınıfı ve alt sınıfları olmak zorundadır. Elinizdeki string değerini kullarak

Kod: Tümünü seç

var
 FC : TFormClass;
begin
  FC := TFormClass(FindClass(FormClassString));
end;
gibi bir kod ile itediğinizi yapabilirsiniz. Eğer FindClass belirrtiğiniz isimde bir sınıf bulamazsa nil döndürecektir, bu durumda da gerekli önlemleri almalısınız
sky
Üye
Mesajlar: 3
Kayıt: 07 Tem 2005 11:39

Mesaj gönderen sky »

Aslında kısayol tuşlarını kullanıcılara göre atamalar yapıp kullanmak istiyorum. O yüzden program isimlerini table dan alıp çalıştırmam gerekiyor. Find ile bulamazsam diye düşünüyorum .

Denemek istedim ama TformClass a atama yapamadım.

FC : TFormClass
FC1 : Tform

Yani FC := 'T' + TABLEPGMNAME.AsString
FC1 := TABLEPGMNAME.AsString

daha sonrada application.createform(FC, FC1) gibi
t-hex
Kıdemli Üye
Mesajlar: 531
Kayıt: 18 Mar 2005 02:45
Konum: İstanbul/Antalya
İletişim:

Mesaj gönderen t-hex »

Yapmanız gerekenler:
Açılacak formların ünitelerinin sonuna:

Kod: Tümünü seç

  initialization
    RegisterClass(TForm2); // Form Adı
  finalization
    UnRegisterClass(TForm2);
ekleyin.

İstediğiniz formu açmak için ise

Kod: Tümünü seç

var
ActiveForm: TForm;
Str : String;
begin
  Str := 'Form2';
  Application.CreateForm(TFormClass(FindClass('T'+Str)),activeform);
  activeForm.ShowModal;
end;
kodunu kullanabilirsiniz
sky
Üye
Mesajlar: 3
Kayıt: 07 Tem 2005 11:39

Mesaj gönderen sky »

T_hex çok teşekkür ederim.

Örneklemeniz çözüm açısından çok doyurucu oldu.

Ellerinize sağlık...
Cevapla