网管第八个程序(多线路切换器)

2007-2-12本站原创admin

本文着重结合了ini的操作和介绍listview及imagelist控件的使用方法。(最底部附源码下载)

其实本程序就是一个简单的可以无限添加项目的游戏菜单。

程序运行后的界面(里面的信息都可以自己定义,通过配置config.ini文件,右下角的天下网吧图片,为程序没有的,是上传时自动生成的):

设置界面:

使用到的图标在imagelist里面:

完整代码如下:

unit main;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ComCtrls, ImgList, ShellApi, IniFiles, WinSkinData;

type
  TFrmMain = class(TForm)
    ImageList1: TImageList;
    ListView1: TListView;
    LbTitle: TLabel;
    procedure ListView1DblClick(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    ExePath: string;
    ini: TiniFile;

    procedure ReadConfig;
    { Private declarations }
  public
    { Public declarations }
  end;

var
  FrmMain                                                             : TFrmMain;

implementation

{$R *.dfm}

procedure TFrmMain.FormCreate(Sender: TObject);
begin
  ExePath := ExtractFilePath(APplication.ExeName);
  if not FileExists(ExePath + 'config.ini') then
  begin
    Showmessage('配置文件config.ini不存在,退出!');
    APplication.Terminate;
  end;
  ini := TiniFile.Create(Exepath + 'Config.ini');                     //创建ini文件类,并让它与配置文件关联
end;

procedure TFrmMain.FormDestroy(Sender: TObject);                      //程序销毁时自动运行的,在这里是是执行销毁ini文件类
begin
  ini.Free;
end;

procedure TFrmMain.ReadConfig;                                        //用ini文件读取配置,里面就是线路配置
var
  Count, i                                                            : Integer;
  tmpStr                                                              : string;
begin
  lbTitle.Caption := ini.ReadString('main', 'LbTitle', '请选择线路:');
  Count := ini.ReadInteger('main', 'LineCout', 0);
  if Count <= 0 then
    Exit;
  for i := 1 to Count do
  begin
    with ListView1.Items.Add do
    begin
      tmpStr := 'line' + inttostr(i);
      Caption := ini.ReadString(tmpStr, 'Title', '未配置');
      SubItems.Add(ini.ReadString(tmpStr, 'batname', tmpStr + '.bat'));
      ImageIndex := ini.ReadInteger(tmpStr, 'LineSupport', 0);        //显示出哪个图标
    end;
  end;

end;

procedure TFrmMain.FormShow(Sender: TObject);
begin
  ReadConfig;
end;

procedure TFrmMain.ListView1DblClick(Sender: TObject);                //双击ListView1事件
var
  strExeFile                                                          : string;
begin
  if ListView1.Selected = nil then                                    //如果当前没有选定里面任何一个图标就退出
    Exit;
  if ListView1.Selected.Caption = '未配置' then                       //如果选定的图标是‘未配置’字样,就退出
    Exit;
  strExeFile := ExePath + ListView1.Selected.SubItems[0];             //组合出执行文件的完整路径
  if FileExists(strExeFile) then                                      //如果文件存在
  begin
    ShellExeCute(Handle, 'open', Pchar(strExeFile), nil,
      Pchar(ExtractFilePath(strExeFile)), 1);                         //执行文件
    Close;
  end
  else                                                                //执行文件并不存在。。显示错误信息
    Showmessage('线路未使用中!');
end;

end.

本调查已过期,点击查看结果

本文来源:本站原创 作者:admin

声明
声明:本站所发表的文章、评论及图片仅代表作者本人观点,与本站立场无关。若文章侵犯了您的相关权益,请及时与我们联系,我们会及时处理,感谢您对本站的支持!联系Email:support@txwb.com,系统开号,技术支持,服务联系QQ:1175525021本站所有有注明来源为天下网吧或天下网吧论坛的原创作品,各位转载时请注明来源链接!
天下网吧·网吧天下
  • 本周热门
  • 本月热门
  • 阅读排行