开发一个控件,需要访问使用该控件的程序实例,进行文件操作,咋办? ( 积分: 100 )

  • 主题发起人 主题发起人 topfast3000
  • 开始时间 开始时间
T

topfast3000

Unregistered / Unconfirmed
GUEST, unregistred user!
我在开发一个控件,里面有一项功能,需要在使用该空间的程序路径下进行文件操作,文件的路径和文件名称都是根据程序实例和控件名称自动命名存储的,请问怎么获得该程序实例和控件实例名称?
 
我在开发一个控件,里面有一项功能,需要在使用该空间的程序路径下进行文件操作,文件的路径和文件名称都是根据程序实例和控件名称自动命名存储的,请问怎么获得该程序实例和控件实例名称?
 
Application.ExeName 就是程序名.
控件实例名,你开发的控件有Name属性.
 
在控件中操作程序实例不是一个好的设计方案,你可以将文件名作为一个参数传入你实现某项功能的方法即可,比如:
TMyControl = class
public
procedure DoFileOperate(AFileName: string);
end;
{ TMyControl }

procedure TMyControl.DoFileOperate(AFileName: string);
begin
//Do File Operation
end;

使用时:
procedure TForm1.Button1Click(Sender: TObject);
begin
with TMyControl.Create do
try
DoFileOperate(Application.ExeName);
finally
Free;
end;
end;
 
Application.ExeName
 
API GetModuleFileName
 
To:dedema,张辉明
因为控件处于设计阶段,还没有application呢。

to:thx1180
这样的做法,主要考虑封装功能,因为这些文件操作都是固定不变的,不需要用户(控件的使用者)再进行处理。你的做法,是把处理放到了控件外。

to :ysai
能详解一些吗?
 
说的简单点,我想开发一个控件,有一项功能(弹出菜单),点击后,判断当前程序路径,并在当前程序路径下创建一个路径,路径名称取程序名,在此路径下创建一个文件,此文件名取控件名。然后进行文件操作。这些路径和文件我都做成隐藏的,终极用户不需要知道。
 
简单啦
控件创建都需要有一个owner的,一般owner就是所属的form(如果手工create参数nil就不行了),而form的owner就是tapplication,你试一下,
showmessage(Tapplication(button1.Owner.owner).title);
 
多人接受答案了。
 
后退
顶部