一个工程中有form1,form2,form3,form4,form5,form6,form7这些窗体。数据表tb1的字段为:
id(number) ,name(varchar)
1,form1
2,form2
....
7,form7.
然后一个输入框,根据输入框中的数,来显示对应的窗体。
假如查到的窗体名字放在变量sname中,我这样做不行。
sf:array[0..9] of tform;
sf[0].name:=sname;
sf[0].showmodle;请问要怎么做呢?
id(number) ,name(varchar)
1,form1
2,form2
....
7,form7.
然后一个输入框,根据输入框中的数,来显示对应的窗体。
假如查到的窗体名字放在变量sname中,我这样做不行。
sf:array[0..9] of tform;
sf[0].name:=sname;
sf[0].showmodle;请问要怎么做呢?
sf[0].name := sname;
((TForm)FindComponent(sf[0].name)).showmodle;
for i:=0 to Application.Components.Count-1 do
begin
if (Application.Components[i] is TForm)
and ((Application.Components[i] as TForm).Caption = vName) then
begin
(Application.Components[i] as TForm).Show;
break;
end;
end;
的方法應該 ok
unit uAllUserOperation;interfaceuses windows, forms, classes, sysutils, dialogs;
procedure ShowForm(FFormName: string);
function CreateForm(FFormName: string): TCustomForm;implementationuses uUserVindicate, uPublicFun, Uprovider,
uBargain, uPurchQuery, uOrder, uQuery, uinput, uoutput;function CreateForm(FFormName: string): TCustomForm;
var
AFormClass: TFormClass;
begin
result := nil;
try
if FFormName = '' then raise Exception.Create('Need Class Name!');
AFormClass := TFormClass(FindClass('T' + FFormName));
result := AFormClass.Create(application);
except
on E: Exception do
Msg1(E.Message)
else raise;
end;end;procedure ShowForm(FFormName: string);
var
AFormClass: TFormClass;
begin
try
if FFormName = '' then raise Exception.Create('Need Class Name!');
AFormClass := TFormClass(FindClass('T' + FFormName));
with AFormClass.Create(application) do
begin
Lockwindowupdate(0);
showmodal;
free;
end;
except
on E: Exception do
Msg1(E.Message)
else raise;
end;
end;
initialization
RegisterClass(tuserVindicateFrm1);
RegisterClass(TproviderFrm1);
RegisterClass(Torderfrm1);
RegisterClass(TQueryfrm1);
RegisterClass(TBargainfrm1);
RegisterClass(tinputfrm1);
RegisterClass(toutputfrm1);
//RegisterClass(TPaperDatafrm);
//RegisterClass(TBargainfrm);
//RegisterClass(TPurchQueryfrm0);end.