|
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.
|