• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

Delphi7使用自定义图标关联文件类型

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

 

Delphi 7使用自定义图标关联文件类型

 

5.2 Delphi编程(40 

版权声明:本文为博主原创文章,未经博主允许不得转载。

    在开发过程中,我们经常需要属于自己的文件类型,自定义的后缀名不仅可以防止用户双击直接改动其中的内容,还可以根据后缀名形象的表示此文件代表的含义。在Delphi 7中要实现关联文件图标、关联文件打开,并且关联的图标可以自己指定,而仅非只能使用应用程序的标题图标。
1.
新建一个应用程序工程,准备两个ICO图标,其中一个作为应用程序的图标,另一个作为文件关联显示的图标;

2.在工程目录下新建一个MyIco.rc文件(可参考《Delphi 7资源文件的使用》),写入以下内容:

myIco ICON "LetterB.ico"  

在菜单栏→“Project”→“Add to project...”将此.rc文件加入工程中;
3.
为应用程序设置图标和标题,菜单栏→“Project”→“Options”→”Application“,加载"LetterA.ico"

4.
在窗体上放置两个按钮,单元文件全部代码如下:

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86

 

unit Unit1; 
 
interface 
 
uses 
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, 
  Dialogs, StdCtrls; 
 
type 
  TForm1 = class(TForm) 
    btn1: TButton; 
    btn2: TButton; 
    procedure btn1Click(Sender: TObject); 
    procedure btn2Click(Sender: TObject); 
    procedure FormCreate(Sender: TObject); 
  private 
    { Private declarations } 
  public 
    { Public declarations } 
  end
 
var 
  Form1: TForm1; 
 
implementation 
 
{$R *.dfm} 
uses Registry, ShlObj; 
 
{------------------------------------------------------------------------------- 
 Description: 
窗体创建函数 
-------------------------------------------------------------------------------} 
procedure TForm1.FormCreate(Sender: TObject); 
begin 
  if ParamCount > 0 then           //
当启动参数大于0时,则是双击关联文件启动 
    ShowMessage(ParamStr(1));      //
显示双击的文件全称 
end
{------------------------------------------------------------------------------- 
 Description: 
关联文件类型 
-------------------------------------------------------------------------------} 
procedure TForm1.btn1Click(Sender: TObject); 
var 
  reg: TRegistry; 
begin 
  reg := TRegistry.Create; 
  try 
    reg.RootKey := HKEY_CLASSES_ROOT; 
 
    {
假定要关联的文件类型为.who,指定入口项为WhoFile} 
    reg.OpenKey('.who',True); 
    reg.WriteString('','WhoFile'); 
    reg.CloseKey; 
 
    {
文件打开关联} 
    reg.OpenKey('WhoFile/shell/open/command',True); 
    reg.WriteString('','"' + ParamStr(0) + '" "%1"');  //
带本身路径作为启动参数 
    reg.CloseKey; 
 
    {
文件图标关联} 
    reg.OpenKey('WhoFile/DefaultIcon',True); 
    reg.WriteString('','"' + ParamStr(0) + '",1');   //
0则为LetterA.ico图标,为1LetterB.ico 
    reg.CloseKey; 
  finally 
    reg.Free; 
  end
  SHChangeNotify(SHCNE_ASSOCCHANGED,SHCNF_IDLIST,nil,nil);  //
刷新显示 
end
{------------------------------------------------------------------------------- 
 Description: 
撤销关联文件类型 
-------------------------------------------------------------------------------} 
procedure TForm1.btn2Click(Sender: TObject); 
var 
  reg: TRegistry; 
begin 
  reg := TRegistry.Create; 
  try 
    reg.RootKey := HKEY_CLASSES_ROOT; 
    reg.DeleteKey('.Who'); 
    reg.DeleteKey('WhoFile'); 
  finally 
    reg.Free; 
  end
  SHChangeNotify(SHCNE_ASSOCCHANGED,SHCNF_IDLIST,nil,nil); 
end
 
end

5. 编译运行程序。点击关联按钮,然后Win+R,输入regedit,打开注册表编辑器,定位到HKEY_CLASSES_ROOT/.who,可看到右边有个默认项,其数据指向WhoFile,然后再定位到HKEY_CLASSES_ROOT/WhoFile,可以看到已经为此类型文件绑定了图标和文件打开方式。如下图所示:

6.
在任意地方新建一个文本文档,改其全部名称为test.who,可以看到图标已经变化,双击此文件,效果如下图所示:

7.
另外,也可以通过应用程序的快捷方式查看程序所带的所有图标,右键Project1.exe,选择创建快捷方式,右键此快捷方式,选择属性,点击更改图标,可以看到如下图所示:

 

 

 
标签: delphiformsclass文档
 3361人阅读 评论(1) 收藏 举报
 分类:
 

    在开发过程中,我们经常需要属于自己的文件类型,自定义的后缀名不仅可以防止用户双击直接改动其中的内容,还可以根据后缀名形象的表示此文件代表的含义。在Delphi 7中要实现关联文件图标、关联文件打开,并且关联的图标可以自己指定,而仅非只能使用应用程序的标题图标。
1.新建一个应用程序工程,准备两个ICO图标,其中一个作为应用程序的图标,另一个作为文件关联显示的图标;

2.在工程目录下新建一个“MyIco.rc”文件(可参考《Delphi 7资源文件的使用》),写入以下内容:

myIco ICON "LetterB.ico"  

在菜单栏→“Project”→“Add to project...”,将此.rc文件加入工程中;
3.为应用程序设置图标和标题,菜单栏→“Project”→“Options”→”Application“,加载"LetterA.ico";

4.在窗体上放置两个按钮,单元文件全部代码如下:

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
  unit Unit1; 
 
interface 
 
uses 
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, 
  Dialogs, StdCtrls; 
 
type 
  TForm1 = class(TForm) 
    btn1: TButton; 
    btn2: TButton; 
    procedure btn1Click(Sender: TObject); 
    procedure btn2Click(Sender: TObject); 
    procedure FormCreate(Sender: TObject); 
  private 
    { Private declarations } 
  public 
    { Public declarations } 
  end
 
var 
  Form1: TForm1; 
 
implementation 
 
{$R *.dfm} 
uses Registry, ShlObj; 
 
{------------------------------------------------------------------------------- 
 Description: 窗体创建函数 
-------------------------------------------------------------------------------} 
procedure TForm1.FormCreate(Sender: TObject); 
begin 
  if ParamCount > 0 then           //当启动参数大于0时,则是双击关联文件启动 
    ShowMessage(ParamStr(1));      //显示双击的文件全称 
end
{------------------------------------------------------------------------------- 
 Description: 关联文件类型 
-------------------------------------------------------------------------------} 
procedure TForm1.btn1Click(Sender: TObject); 
var 
  reg: TRegistry; 
begin 
  reg := TRegistry.Create; 
  try 
    reg.RootKey := HKEY_CLASSES_ROOT; 
 
    {假定要关联的文件类型为.who,指定入口项为WhoFile} 
    reg.OpenKey('.who',True); 
    reg.WriteString('','WhoFile'); 
    reg.CloseKey; 
 
    {文件打开关联} 
    reg.OpenKey('WhoFile/shell/open/command',True); 
    reg.WriteString('','"' + ParamStr(0) + '" "%1"');  //带本身路径作为启动参数 
    reg.CloseKey; 
 
    {文件图标关联} 
    reg.OpenKey('WhoFile/DefaultIcon',True); 
    reg.WriteString('','"' + ParamStr(0) + '",1');   //为0则为LetterA.ico图标,为1为LetterB.ico 
    reg.CloseKey; 
  finally 
    reg.Free; 
  end
  SHChangeNotify(SHCNE_ASSOCCHANGED,SHCNF_IDLIST,nil,nil);  //刷新显示 
end
{------------------------------------------------------------------------------- 
 Description: 撤销关联文件类型 
-------------------------------------------------------------------------------} 
procedure TForm1.btn2Click(Sender: TObject); 
var 
  reg: TRegistry; 
begin 
  reg := TRegistry.Create; 
  try 
    reg.RootKey := HKEY_CLASSES_ROOT; 
    reg.DeleteKey('.Who'); 
    reg.DeleteKey('WhoFile'); 
  finally 
    reg.Free; 
  end
  SHChangeNotify(SHCNE_ASSOCCHANGED,SHCNF_IDLIST,nil,nil); 
end
 
end

5. 编译运行程序。点击“关联”按钮,然后Win+R,输入“regedit”,打开注册表编辑器,定位到“HKEY_CLASSES_ROOT/.who”,可看到右边有个默认项,其数据指向“WhoFile”,然后再定位到“HKEY_CLASSES_ROOT/WhoFile”,可以看到已经为此类型文件绑定了图标和文件打开方式。如下图所示:

6.在任意地方新建一个文本文档,改其全部名称为“test.who”,可以看到图标已经变化,双击此文件,效果如下图所示:

7.另外,也可以通过应用程序的快捷方式查看程序所带的所有图标,右键“Project1.exe”,选择“创建快捷方式”,右键此快捷方式,选择“属性”,点击“更改图标”,可以看到如下图所示:


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Delphi中inherited问题发布时间:2022-07-18
下一篇:
在Delphi中静态调用DLL引用外部DllExternalDll导入Dll发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap