Form İsim Atama

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 İsim Atama

Mesaj gönderen kirve »

Merhabalar
desing time da oluşturmuş olduğum bir formum var. bu formun adına 'FrmA' olarak atatım.

Kod: Tümünü seç

var
frm1:TForm;
metin:string;
begin
	metin:='FrmA';
	//metin.show(); 
	
end
diyebilmem için nasıl bir tip dönüşümü yapmam lazım arkadaslar.
teşekkürler.
Lord_Ares
Üye
Mesajlar: 1070
Kayıt: 15 Eki 2006 04:33
Konum: Çorlu

Re: Form İsim Atama

Mesaj gönderen Lord_Ares »

Tam yapmak istediğiniz anlamadım. Paylaştığınız kod parçası metin değişkenine "FrmA" değerini atamışsınız. Başkada birşey yok. Daha açık ve belirleyici anlatırsanız yardım edebiliriz.


Amacınız !!
1) Metin değişkeni ekranda mesaj olarak göstermek ise

Kod: Tümünü seç

showmessage (Metin)
2)Oluşturduğunuz formun captionına metin değişkenindekini yazdırmaksa

Kod: Tümünü seç

frm1.caption:="FrmA"
3) Oluşturduğunuz formun adını değiştirip göstermek ise , formu oluştururken adını değiştirip formu show etmelisiniz.

Kod: Tümünü seç

var
form_yeni:Tform;
begin
                   form_yeni:=tform.Create(nil);
                   form_yeni.Width:=150;
                   form_yeni.Height:=75;
                   form_yeni.Position:=poScreenCenter;
                   form_yeni.Caption:='Deneme';
                   form_yeni.Show;
end;
Kolay gelsin
kirve
Üye
Mesajlar: 64
Kayıt: 03 Nis 2008 12:40

Re: Form İsim Atama

Mesaj gönderen kirve »

kodlama aşamasında her bir formu acmak için farklı farklı gösterim kodu istemiyordum.

bir procedure yazıp göndermiş oldugum string değişken ile hangi formu çağırırsam onu açmak istedim.
aşağıdaki kod bloğu ile sorunu çözdüm.
ilginiz için teşekkür ederim.




procedure TForm2.FormCreate(Sender: TObject);
begin
RegisterClass(TForm3);

end;

Kod: Tümünü seç

procedure TForm2.btn1Click(Sender: TObject);
var
  a:string;
  frmclass:TFormClass;
  frm:TForm;
begin
  a:='Form3';

  frmclass := TFormClass(FindClass('T'+a));
  frm := frmclass.Create(Application);
  frm.Show;

end;
ertank
Kıdemli Üye
Mesajlar: 1711
Kayıt: 12 Eyl 2015 12:45

Re: Form İsim Atama

Mesaj gönderen ertank »

Merhaba,

Eğer gönderdiğinize benzer kodu birçok buton tıklamasının altına yazacak iseniz aşağıdaki gibi bir yöntem kullanmanız daha az kod yazmanıza/kopyala yapıştır yapmanıza yardımcı olabilir.

Aşağıdaki kodu Utils.Forms.pas olarak kaydedin.

Kod: Tümünü seç

unit Utils.Forms;

interface

uses
  Vcl.Forms,
  System.Classes;


function ShowForm(const AName: string): Boolean;
function ShowModalForm(const AName: string): Boolean;

implementation

function GetForm(const AName: string): TForm;
var
  FormClass: TFormClass;
begin
  try
    FormClass := TFormClass(FindClass('T' + AName));
  except
    Exit(nil);
  end;

  try
    Result := FormClass.Create(Application);
  except
    Exit(nil);
  end;
end;

function ShowForm(const AName: string): Boolean;
var
  Form: TForm;
begin
  Form := GetForm(AName);
  if Form = nil then Exit(False);

  Form.Show();

  Result := True;
end;

function ShowModalForm(const AName: string): Boolean;
var
  Form: TForm;
begin
  Form := GetForm(AName);
  if Form = nil then Exit(False);

  Form.ShowModal();

  Result := True;
end;

end.
Delphi içinde Tools->Options->Delphi Options->Library ekranında Library Path içindeki bir yere kaydedin. Böylece yeni projeleriniz için dosya kopyalama uğraşısı da olmaz.

Hangi formunuzda string değişken ile form açmak istiyorsanız uses kısmına aşağıdaki gibi ekleyin.

Kod: Tümünü seç

uses
  Utils.Forms;
Daha sonra buton tıklamalarında aşağıdaki gibi tek satır kod yazarak kullanabilirsiniz.

Kod: Tümünü seç

procedure TForm1.Button1Click(Sender: TObject);
begin
  if not ShowForm('Form1') then
    ShowMessage('Cannot show form: Form1');
end;
veya "modal" olarak aşağıdaki gibi kullanabilirsiniz.

Kod: Tümünü seç

procedure TForm1.Button2Click(Sender: TObject);
begin
  if not ShowModalForm('Form1') then
    ShowMessage('Cannot show modal form: Form1');
end;
Bu mantıktan yola çıkarak form isimlerini buton tıklamaları yerine TButon.Hint kısmına yazarsanız kodu aşağıdaki şekle çevirmeniz de mümkün

Kod: Tümünü seç

procedure TForm1.Button1Click(Sender: TObject);
begin
  if not ShowForm(TButton(Sender).Hint) then
    ShowMessage('Cannot show form: ' + TButton(Sender).Hint);
end;
Bu şekilde kullanmanın bir avantajı da form gösteren kod ile ilgili değişiklik/hata kontrolü yapmanız gerektiğinde tek bir yere bakmanız yeterli olacaktır.

Tabii ki sizin de örnekte belirttiğiniz üzere bu şekilde kullanmak istediğiniz tüm formlarınızın OnCreate() olayına

Kod: Tümünü seç

procedure TForm1.FormCreate(Sender: TObject);
begin
  RegisterClass(TForm1);
end;
gibi bir kod eklemeniz şart.

NOT: Kod son XE serisi Delphi versiyonlarında çalışacak şekilde yazılmıştır. Delphi 7 için uyarlamalar yapılması gerekmektedir.
Cevapla