adını string olarak bildiğin bi formu create etmek
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
adını string olarak bildiğin bi formu create etmek
sevgili abilerim,
forumda hakkatten aradım bulamadım,
şimdi, adı string olarak db den gelen bi formu create etmek, showmodal gösterip free etmek istiyorum,
Yani
Aplication.CreateForm(TDenemeFrm,DenemeFrm) yerine
Aplication.CreateForm(Q1TFRM.Value,Q1FRM.Value)
aynı şey formu show etmek içinde geçerli,
forumda hakkatten aradım bulamadım,
şimdi, adı string olarak db den gelen bi formu create etmek, showmodal gösterip free etmek istiyorum,
Yani
Aplication.CreateForm(TDenemeFrm,DenemeFrm) yerine
Aplication.CreateForm(Q1TFRM.Value,Q1FRM.Value)
aynı şey formu show etmek içinde geçerli,
Merhaba,
Hemen bir uygulama yapalım. Yeni bir proje oluşturup, gelen forma ilave olarak ikinci bir form ekleyin. (Form1)in üzerine bir düğme (Button1) koyun. (Form2)nin üzerine bir adet ListBox koyun.
Öncelikle formları kaydetmelisiniz. Bunun için proje koduna:
Uygulamayı çalıştırın. Düğmeye basınca (Form2) karşınıza gelecektir. Ancak string'den oluşturacağınız her form için RegisterClass yapmalısınız. Bu arada (Form2)ye ListBox koymamızın sebebi sadece test amaçlıdır.
Umarım yardımcı olur.
Ertuğ Kaya
*** Kodlarınızı [ CODE ] tagı içine alın.mege
Hemen bir uygulama yapalım. Yeni bir proje oluşturup, gelen forma ilave olarak ikinci bir form ekleyin. (Form1)in üzerine bir düğme (Button1) koyun. (Form2)nin üzerine bir adet ListBox koyun.
Öncelikle formları kaydetmelisiniz. Bunun için proje koduna:
Kod: Tümünü seç
program Project1;
uses
Forms,
Classes, //<- ilave
Unit1 in 'Unit1.pas' {Form1},
Unit2 in 'Unit2.pas' {Form2};
{$R *.res}
begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
//Application.CreateForm(TForm2, Form2); //<- bu satırı çıkarın
RegisterClass(TForm2); //<- Form2 sınıfını kaydetmek için
Application.Run;
end.
(Form1)deki düğmenin (OnClick) olayına aşağıdaki kodu yazın.
procedure TForm1.Button1Click(Sender: TObject);
var
aForm: TForm;
aFormClass: TFormClass;
begin
aFormClass := TFormClass(FindClass('TForm2'));
aForm := aFormClass.Create(Application);
aForm.Show;
end;
Umarım yardımcı olur.
Ertuğ Kaya
*** Kodlarınızı [ CODE ] tagı içine alın.mege
-
- Kıdemli Üye
- Mesajlar: 574
- Kayıt: 01 Şub 2004 12:29
- Konum: Erdemli - MERSİN
Neden ihtiyaç duydum?
Explorer tarzı bir ana menü var, menü db den geliyor, adam tıkladığı zaman bir seçeneği, onun formu hangisi ise create edilip gösterilmesi lazım, ben form ismini biliyorum, başka bir yolunu bulamadığım içinde hiçte sevmediğim
if MyFormName = 'hede' then Application.CreateForm(THede,Hede);
if MyFormName = 'hodo' then Application.CreateForm(THodo,Hodo);
...
...
...
yolu ile bu işi hallediyorum, e 50 nin üstünde form olduğu için procedure ye her form eklediğimde git bi satır daha ekle,
yani anlayacağınız bi programcı için çok amele bi yöntem,
ne demiş abilerimiz, source şiir gibi olmalıdır...
if MyFormName = 'hede' then Application.CreateForm(THede,Hede);
if MyFormName = 'hodo' then Application.CreateForm(THodo,Hodo);
...
...
...
yolu ile bu işi hallediyorum, e 50 nin üstünde form olduğu için procedure ye her form eklediğimde git bi satır daha ekle,
yani anlayacağınız bi programcı için çok amele bi yöntem,
ne demiş abilerimiz, source şiir gibi olmalıdır...
Ertug yardim
usta yazdığın yöntem işe yarıyor,
ancak gelen formu kendi kapatından kapatmayıpta formun üzerine kapat tuşu koyup
DenemeForm.Close; dersen av geliyor, zannedersem bu formun create sinin farklı olmasından kaynaklanıyor ve ona özel bi close yazmak gerekiyor;
burda bi yardımın gerekiyor zannedersem;
ancak gelen formu kendi kapatından kapatmayıpta formun üzerine kapat tuşu koyup
DenemeForm.Close; dersen av geliyor, zannedersem bu formun create sinin farklı olmasından kaynaklanıyor ve ona özel bi close yazmak gerekiyor;
burda bi yardımın gerekiyor zannedersem;
ertug saol
denemefrm.close yerine sadece close;
çok eskiden hep böyle yapardım, nasılda akıl edemedim,
usta çok saol
çok eskiden hep böyle yapardım, nasılda akıl edemedim,
usta çok saol
-
- Kıdemli Üye
- Mesajlar: 574
- Kayıt: 01 Şub 2004 12:29
- Konum: Erdemli - MERSİN
Kişisel görüşüm, ne işe yaradığını bilmediğiniz kodları çok fazla kafaya takmamanız. Zamanı geldiğinde ne işe yaradığını zaten tecrübe edeceksiniz. Bunun için bu tarz şeyler hakkında çok fazla düşünmeyin, programcılıktan soğuyabilirsiniz. Daha uygun düşünce tarzı, elinizdeki işi nasıl yapabileceğiniz olmalı.oguzozturk74 yazdı:Arkadaşlar, neden böyle bir şeye ihtiyaç oluyor acaba ?
Sorunu çözmüşsünüz ancak genel olarak AV hatasının tanıtılmamış veya yok edilmiş bir nesneye ulaşmaktan kaynaklandığını söylemeliyim.ozz_deniz yazdı:DenemeForm.Close; dersen av geliyor, zannedersem bu formun create sinin farklı olmasından kaynaklanıyor ve ona özel bi close yazmak gerekiyor;
Kod: Tümünü seç
aForm := nil;
aForm.Create(Application); //AV
aForm.Show; //AV
aForm := TForm.Create(Application);
aForm.Show;
aForm.Free;
aForm.Show; //AV
Birşey değil. Esas bu forumun oluşmasında ve yürütülmesinde emeği geçenlere teşekkür edin.ozz_deniz yazdı:çok saol
Ertuğ Kaya