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


     

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

     

    5.2 Delphi编程(40 http://static.blog.csdn.net/images/arrow_triangle%20_down.jpg

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

        在开发过程中,我们经常需要属于自己的文件类型,自定义的后缀名不仅可以防止用户双击直接改动其中的内容,还可以根据后缀名形象的表示此文件代表的含义。在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,选择创建快捷方式,右键此快捷方式,选择属性,点击更改图标,可以看到如下图所示:

     

     

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

    标签: 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”,选择“创建快捷方式”,右键此快捷方式,选择“属性”,点击“更改图标”,可以看到如下图所示:

  • 相关阅读:
    SaltStack(六) 案例练习
    SaltStack(五) SaltStack与ZeroMQ
    SaltStack(四) 配置管理
    SaltStack(三) 远程执行
    js 阳历、阴历互转
    把一个服务器的数据库导入到另一台服务器中
    vue项目 px自动转vw
    oracle创建自增序列和触发器
    svn 无法clean up的解决方案
    vue 后台获取路由表,addRouters动态路由
  • 原文地址:https://www.cnblogs.com/zhangzhifeng/p/5368831.html
Copyright © 2020-2023  润新知