if not Assigned(NomFiche) then Application.CreateForm(NClass, NomFiche); NomFiche.ShowModal;
procedure TFMain.Ouvrir(Sender: TObject); var NomMenu : String ; NomClass : String ; begin NomMenu :=TMenuItem(Sender).Caption; QueryFiche.Close; QueryFiche.SQL.Clear; QueryFiche.SQL.Text :='Select Fiche.NomFiche, Fiche.Class From Menu, Fiche where Menu.CodeFiche=Fiche.CodeFiche and Menu.NomMenu='+QuotedStr(NomMenu); QueryFiche.Open; NomFiche := QueryFiche.FieldByName('NomFiche').AsString ; NomClass := QueryFiche.FieldByName('Class').AsString ; Fiche := TForm(Application.FindComponent(NomFiche)); NClass := TFormClass(Application.FindComponent(NomClass)); if Fiche = Nil then Application.CreateForm(NClass, Fiche); Fiche.ShowModal ; end;
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionvar NClass :Tformclass; NomClass:string; begin try NomClass:= QueryFiche.FieldByName('Class').AsString; NClass := tformclass(findClass(NomClass)); with NClass.create(self) do showModal; except raise; end;
//exemple form1,form2.. RegisterClass(tform1); RegisterClass(tform2); . .
with NClass.create(self) do showModal;
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TMainForm = class(TForm) ListBox1: TListBox; MyCreateButtonForm: TButton; procedure FormCreate(Sender: TObject); procedure MyCreateButtonFormClick(Sender: TObject); private { Déclarations privées } public { Déclarations publiques } end; var MainForm: TMainForm; implementation uses Unit2, Unit3,Unit4; {seule MainForm est créée à l'ouverture, les autres ne doivent pas être créées automatiquement} {$R *.dfm} procedure MyCreateForm(const FormName: string); var MyClass: TFormClass; MyForm: TForm; begin MyClass := TFormClass(FindClass(FormName)); {FindClass pour retrouver une classe d'objet} MyForm := MyClass.Create(Application); MyForm.Show; { ou ShowModal si on veut que le forme soit obligatoire comme une boite de dialogue..) end; procedure TMainForm.FormCreate(Sender: TObject); begin RegisterClass(TForm1); {permet de rencenser la classe} RegisterClass(TForm2); RegisterClass(TForm3); end; procedure TMainForm.MyCreateButtonFormClick(Sender: TObject); var MyStr: string; begin MyStr := ListBox1.Items[ListBox1.ItemIndex]; MyCreateForm(MyStr); {créé dynamiquement la forme dont le nom est sélectionné dans la ListBox} end; // avec items dans ListBox : TForm1, TForm2 et TForm3 end.
MyForm := MyClass.Create(Application);
avec items dans ListBox : TForm1, TForm2 et TForm3
{créé dynamiquement la forme dont le nom est sélectionné dans la ListBox}
procedure TFMain.MyCreateForm(const FormName: string); var MyClass: TFormClass; MyForm: TForm; begin MyClass := TFormClass(FindClass(FormName)); {FindClass pour retrouver une classe d'objet} MyForm := MyClass.Create(Application); MyForm.Show; end;
procedure TFMain.Button16Click(Sender: TObject); Var NomClass : String ; begin NomMenu :=TMenuItem(Sender).Caption; QueryFiche.Close; QueryFiche.SQL.Clear; QueryFiche.SQL.Text :='Select Fiche.NomFiche, Fiche.Class From Menu, Fiche where Menu.CodeFiche=Fiche.CodeFiche and Menu.NomMenu='+QuotedStr(NomMenu); QueryFiche.Open; NomClass := QueryFiche.FieldByName('Class').AsString ; MyCreateForm(NomClass); end;
Initialization RegisterClass(TFTextesLois) . . . RegisterClass(t..); finalization UnRegisterClass(TFTextesLois); . . . UNRegisterClass(T...); end.