我们知道有一个FindComponent(const Name: string): IOTAComponent;可有没有findForm(formname:st

  • 主题发起人 主题发起人 popmailzjw
  • 开始时间 开始时间
P

popmailzjw

Unregistered / Unconfirmed
GUEST, unregistred user!
我们知道有一个FindComponent(const Name: string): IOTAComponent;可有没有findForm(formname:string):tform的东西 (100分)<br />我们知道有一个FindComponent(const Name: string): IOTAComponent;可有没有findForm(formname:string):tform的东西
 
我是这样用的

function FindExistingForm(FFormName: string): TForm;
var
i: integer;
begin
Result := nil;
try
if FFormName = '' then raise Exception.Create('需要类名!');
with Application do
for i := 0 to ComponentCount - 1 do
if Components.ClassName = ('T' + FFormName) then begin
Result := TForm(Components);
Break;
end;
except
on E: Exception do
ShowMessage(E.Message)
else raise;
end;
end;
 
嗯...有吗?

我是用的comparetext()来进行比较的....
 
function findForm(formname:string):tform;
begin
result:=application.findForm(formname) as tform
end;
 
不好意思,没说清楚。
procedure openform(formclass: TFormclass);
begin
with formclass.Create(application) do
begin
Lockwindowupdate(0);
show;
end;
end;

要是能把参数改为string就好了
 
procedure CreateForm(FFormName: string);
type
TFormClass = class of TForm;
var
AFormClass: TFormClass;
begin
try
if FFormName = '' then raise Exception.Create('需要类名!');
AFormClass := TFormClass(FindClass('T' + FFormName));
with AFormClass.Create(application) do
begin
Lockwindowupdate(0);
show;
end;
except
on E: Exception do
ShowMessage(E.Message)
else raise;
end;
end;
注意:你的类要自注册
例:
initialization
RegisterClass(TForm2);
 
多人接受答案了。
 
后退
顶部