怎样将字符串转化成引用一个对象的指针?例如要从"Form1"转换成Form1,怎么搞定?谢谢(50分)

  • 主题发起人 主题发起人 ildg
  • 开始时间 开始时间
I

ildg

Unregistered / Unconfirmed
GUEST, unregistred user!
如果f是一个窗口,就是一个tform的类,就可以用
f.show,但如果f是一个字符串(和某个窗口的名字一样的字符串)就不行,
但是我现在就是要用一个字符串打开一个窗口,比如说我现在有一个
字符串s,它的值是"Form2",怎么根据s来打开form2?
谢谢
 
findcomponent('String')返回一个TComponent

function FindComponent(const AName: string): TComponent;
 
这方法不错,但findcomponent 好象 是 TComponent 的一个成员函数,
要查找,首先要知道 要查找控件的 Owner ,然后在Owner中查找,
TForm 的Owner 是谁???是 DeskTop 吗?
 
查找窗口名字onwer简单取nil就可以
 
但是这个 nil 怎么来调用 findcomponent?
 
Findcomponent函数的原理很简单,就是循环遍历!
下面是delphi中的源码!
function TComponent.FindComponent(const AName: string): TComponent;
var
I: Integer;
begin
if (AName <> '') and (FComponents <> nil) then
for I := 0 to FComponents.Count - 1 do
begin
Result := FComponents;
if SameText(Result.FName, AName) then Exit;
end;
Result := nil;
end;
 
function FindComponent(const AName: string): TComponent;
 
一般来说,Form的Owner是Application,如程序自动创建的Form
 
function FindComponent(const AName: string): TComponent;
 
该结了吧?
 
TForm(Application.FindComponent(s)).Show;
 

Similar threads

回复
0
查看
864
不得闲
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
913
SUNSTONE的Delphi笔记
S
后退
顶部