我要实现的功能是传一个form的name给这个函数是个string型的,然后实现
var Form:TFormPay; // 我只传入一个string型的FormPay
begin
Form:=TFormPay.Create(nil);
Form.Show;
end;
欢迎大家指点
var Form:TFormPay; // 我只传入一个string型的FormPay
begin
Form:=TFormPay.Create(nil);
Form.Show;
end;
欢迎大家指点
先注册窗体, Form1var TempForm:Tform;
FormName ; String
begin
FormName := 'Tform1'
TempForm := TFormclass(FindClass(FormName)).Create(application);
Try
TempForm.ShowModal;
Finally
TempForm.Free;
End;
---------------------------
Project a.exe raised exception class EClassNotFound with message 'Class Tform1 not found'. Process stopped. Use Step or Run to continue.
现注册窗体
RegisterClasse(Tform1),就可以了
function CreateAndShowFormModal(const AOwner: TComponent; const TfrmClass: TCustomFormClass): TModalResult;
begin
with TfrmClass.Create(AOwner) do
try
Name := ClassName + IntToStr(Handle);
Result := ShowModal;
finally
Free;
end;
end;其中,TCustomFormClass声明如下
type
TCustomFormClass = class of TCustomForm;引用如下:
CreateAndShowFormModal(Self, TFormPay);
FormName ; String
begin
FormName := 'Tform1'
TempForm := TFormclass(FindClass(FormName)).Create(application);
Try
TempForm.ShowModal;
Finally
TempForm.Free;
End;
这样我从数据库里取出来的,formName是个字符串,我怎么解决,而在这个函数中必须是个form类
1、首先注册Form类,譬如你有TForm2,TForm3俩类,可以这样:
...
RegisterClasses([TForm2, TForm3]);
...
2、然后从数据库中取出FormName字符串:
var AForm: TClass;
FormName: string;
...
//从数据库取出FormName
FormName := Table1.FieldByName('FormName').AsString; //假设表为Table1,字段名为FormName
AForm := FindClass(FormName);
if Assigned(AForm) then
CreateAndShowFormModal(Self, TCustomFormClass(AForm));