📄 util.pas
字号:
unit util;
interface
uses inifiles,Windows, SysUtils, Classes,forms,dialogs;
type TContextName = (OVERVIEW_FORM,GRID_FORM,ISOHINT);
function GetIniFile: TIniFile;
procedure LoadFormPosition(Sender: TForm; IniFile : TInifile);
procedure SaveFormPosition(Sender: TForm; IniFile : TInifile);
function SearchReplace(var target : string; search,replace : string) : boolean;
function GetFileLine(filename : string; LineNum : integer) : string;
procedure SavePrmBool(ContextID : integer;PrmName : TContextName;v : boolean);
function LoadPrmBool(ContextID : integer;PrmName : TContextName;pDefault : boolean) : boolean;
procedure SavePrmInt(ContextID : integer;PrmName : TContextName;v : integer);
function LoadPrmIniBool(ContextID : integer;PrmName : TContextName;pdefault : boolean; Myinifile : Tinifile) : boolean;
function LoadPrmIniInt(ContextID : integer;PrmName : TContextName;pdefault : integer; Myinifile : Tinifile) : integer;
procedure SavePrmIniBool(ContextID : integer;PrmName : TContextName;v : boolean;MyIniFile : TIniFile);
procedure SavePrmIniInt(ContextID : integer;PrmName : TContextName;v : integer;MyIniFile : TIniFile);
function ContextStr(ContextID : TContextName; HintNumber : integer) : string;
function ShowIsoHint(HintID : Integer) : boolean;
function BuildExeDirectory : string;
var ExeDirectory : string;
implementation
uses Hint;
function ShowIsoHint(HintID : Integer) : Boolean;
begin
Result := true;
if Form1Hint.HintShown(HintID) then Exit;
Form1Hint.HintNumber := HintID;
Result := False;
if (not Form1Hint.Visible) then
begin
Form1Hint.Show;
Result := True;
end;
end;
function GetIniFile: TIniFile;
var FileName : string;
begin
FileName := ExtractFileName(Application.ExeName);
result := TIniFile.Create(ExtractFilePath(Application.ExeName) + ChangeFileExt(FileName,'.INI'));
end;
procedure LoadFormPosition(Sender: TForm; IniFile : TInifile);
begin
Sender.Width := IniFile.ReadInteger(Sender.name,'Width',Sender.width);
Sender.Height := IniFile.ReadInteger(Sender.Name,'Height',Sender.height);
Sender.Left := IniFile.ReadInteger(Sender.Name,'Left',Sender.left);
Sender.Top := IniFile.ReadInteger(Sender.Name,'Top',Sender.top);
if (Sender.Left > Screen.Width) then Sender.Left := Screen.Width - Sender.Width;
if (Sender.Top > Screen.Height) then Sender.Top := Screen.Height - Sender.Height;
end;
procedure SaveFormPosition(Sender: TForm; IniFile : TInifile);
begin
IniFile.writeInteger(Sender.name,'Width',Sender.width);
IniFile.writeInteger(Sender.Name,'Height',Sender.height);
IniFile.writeInteger(Sender.Name,'Left',Sender.left);
IniFile.writeInteger(Sender.Name,'Top',Sender.top);
end;
function SearchReplace(var target : string; search,replace : string) : boolean;
var p : integer;
begin
p := pos(search,target);
if (p>0) then
begin
delete(target,p,length(search));
insert(replace,target,p);
result := true;
end
else
result := false;
end;
function GetFileLine(filename : string; LineNum : integer) : string;
var f : textfile;
s : string;
begin
s := '';
if FileExists(filename) then
begin
AssignFile(F, filename);
Reset(F);
while LineNum<>0 do
begin
Readln(F, S);
dec(LineNum);
end;
CloseFile(F);
end
else
MessageDlg('"' + filename + '" appears to be missing!',mtError,[mbOK],0);
result := s;
end;
function LoadPrmBool(ContextID : integer;PrmName : TContextName; pdefault : boolean) : boolean;
var MyInifile : TIniFile;
begin
MyInifile := GetIniFile;
result := LoadPrmIniBool(ContextID,PrmName,pdefault,MyInifile);
MyInifile.free;
end;
function LoadPrmInt(ContextID : integer;PrmName : TContextName; pdefault : Integer) : integer;
var MyInifile : TIniFile;
begin
MyInifile := GetIniFile;
result := LoadPrmIniInt(ContextID,PrmName,pdefault,MyInifile);
MyInifile.free;
end;
procedure SavePrmBool(ContextID : integer;PrmName : TContextName; v : boolean);
var MyInifile : TIniFile;
begin
MyInifile := GetIniFile;
SavePrmIniBool(ContextID,PrmName,v,MyInifile);
MyInifile.free;
end;
procedure SavePrmInt(ContextID : integer;PrmName : TContextName; v : integer);
var MyInifile : TIniFile;
begin
MyInifile := GetIniFile;
SavePrmIniInt(ContextID,PrmName,v,MyInifile);
MyInifile.free;
end;
procedure SavePrmIniInt(ContextID : integer;PrmName : TContextName;v : integer;MyIniFile : TIniFile);
begin
MyIniFile.WriteInteger('Prm',ContextStr(PrmName,ContextID),v);
end;
function LoadPrmIniBool(ContextID : integer;PrmName : TContextName; pdefault : boolean; Myinifile : Tinifile) : boolean;
begin
result:= MyiniFile.ReadBool('Prm',ContextStr(PrmName,ContextID),pdefault);
end;
function LoadPrmIniInt(ContextID : integer;PrmName : TContextName;pdefault : integer; Myinifile : Tinifile) : integer;
begin
result:= MyiniFile.ReadInteger('Prm',ContextStr(PrmName,ContextID),pdefault);
end;
procedure SavePrmIniBool(ContextID : integer;PrmName : TContextName;v : boolean;MyIniFile : TIniFile);
begin
MyiniFile.WriteBool('Prm',ContextStr(PrmName,ContextID),v);
end;
function ContextStr(ContextID : TContextName; HintNumber : integer) : string;
begin
case ContextID of
OVERVIEW_FORM : result := 'OverView';
GRID_FORM : result := 'Grid';
ISOHINT : Result := 'Hint';
else
result := '';
end;
if (result <>'') and (HintNumber>=0) then
result := result + '_'+inttostr(HintNumber);
end;
function BuildExeDirectory : string;
var orgpath : string;
i : Integer;
begin
orgpath := Application.ExeName;
i := Length(orgpath);
while(orgpath[i]<>'\') and (i>0) do
Dec(i);
Delete(orgpath,i,999);
Result := orgpath;
end;
begin
ExeDirectory := BuildExeDirectory;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -