📄 proset.pas
字号:
//--------------------------------
//共用过程单元集
//--------------------------------
unit proset;
interface
uses
SysUtils,Forms,shlobj,qureyf;
procedure finddir;//搜索文件夹
procedure readinif;//读INI文件
procedure saveinif;//保存/更新INI文件
Function delext(Fn:string):string; //获取没有扩展名的文件名
function BrowseFolder:string;//打开文件夹选择窗口
function evpos(c:char;s:string):integer;
function GetFieldName(pathstr:string):string;//从路径中提取文件夹名
implementation
uses mainform;
procedure finddir;//搜索文件夹
//var
//Srec:TSearchRec;
//Retuv:integer;
begin
{Retuv:=findfirst(workpath+'*.*',FaDirectory,Srec);
while Retuv=0 do
begin
If (SRec.Attr and faDirectory)<>0 Then //是目录
if (Srec.Name<>'.') and (Srec.Name<>'..') then
with mainwin.listview1.Items.Add do
begin
caption:= Srec.Name;
SubItems.add(datetimetostr(Srec.Time));
imageindex :=5;
end;
retuv:=findnext(srec);
end;}
end;
//----------------打开文件夹选择窗口
function BrowseFolder:string;
var
Info:TBrowseInfo;
Dir:array[0..260] of char;
ItemId:PItemIDList;
begin
with Info do
begin
hwndOwner:=application.Handle;
pidlRoot:=nil;
pszDisplayName:=nil;
lpszTitle:='请选择一个文件夹:';
ulFlags:=0;
lpfn:=nil;
lParam:=0;
iImage:=0;
end;
ItemId:=SHBrowseForFolder(Info);
if ItemId<>nil then
begin
SHGetPathFromIDList(ItemId,@Dir);
Result:=string(Dir);
end;
end;
//----------------从路径中提取文件夹名
function GetFieldName(pathstr:string):string;
var ns:byte;
begin
if (pathstr='A:\') or (pathstr='B:\') or (pathstr='C:\') or
(pathstr='D:\') or (pathstr='E:\') or (pathstr='F:\') or
(pathstr='G:\') or (pathstr='H:\') or (pathstr='I:\') or
(pathstr='J:\') or (pathstr='K:\') or (pathstr='L:\')
then result:='drive_'+pathstr[1]
else
begin
ns:=evpos('\',pathstr);
result:=copy(pathstr,ns+1,length(pathstr)-ns);
end;
end;
{在字符中查找指定字符最后一次出现的位置,
如果找到,返回实际位置,没有找到返回0}
function evpos(c:char;s:string):integer;
var sl,n:integer;
begin
if s='' then result:=0;
sl:=length(s);
for n:=sl downto 1 do if s[n]=c then break;
if n<=1 then result:=0 else result:=n;
end;
//-------------移除文件扩展名
Function delext(Fn:string):string;
var va:integer;
begin
va:=evpos('.',Fn);
if va=0 then result:=fn;
delete(fn,va,255);
result:=fn;
end;
procedure readinif;//读INI文件
begin
//-----读窗口位置
mainwin.top:=inifn.readInteger('mformsize','mformtop',mainwin.top);
mainwin.left:=inifn.readInteger('mformsize','mformleft',mainwin.left);
mainwin.height:=inifn.readInteger('mformsize','mformheight',mainwin.height);
mainwin.width:=inifn.readInteger('mformsize','mformwidth',mainwin.width);
Winsta:=inifn.ReadInteger('mformsize','mformstart',0);
//-------读各控件状态
mainwin.panel1.width:=inifn.readInteger('control','treeboxwidth',150);
mainwin.Toolbar1.ShowHint:=inifn.readBool('control','toolbarhint',true);
mainwin.RichEdit1.WordWrap:=inifn.ReadBool('control','editautowrap',mainwin.RichEdit1.WordWrap);
mainwin.Toolbar1.visible:=inifn.ReadBool('control','toolbarvisible',true);
mainwin.statusbar1.visible:=inifn.readBool('control','statusvisible',true);
//-----------TREEVIEW属性
mainwin.treeview1.color:=inifn.readinteger('control','treebcolor',mainwin.treeview1.color);
mainwin.treeview1.font.Size:=inifn.Readinteger('control','treebfontsize',mainwin.treeview1.font.Size);
mainwin.treeview1.font.name:=inifn.Readstring('control','treebfontname',mainwin.treeview1.font.name);
mainwin.treeview1.font.color:=inifn.ReadInteger('control','treebfontcolor',mainwin.treeview1.font.color);
mainwin.richedit1.color:=inifn.readinteger('control','richbcolor',mainwin.richedit1.color);
//-------------编辑框字体属性
mainwin.richedit1.font.color:=inifn.readinteger('editfont','fnotcolor',mainwin.richedit1.font.color);
mainwin.richedit1.font.size:=inifn.readinteger('editfont','fnotsize',mainwin.richedit1.font.size);
mainwin.richedit1.font.name:=inifn.readstring('editfont','fnotname',mainwin.richedit1.font.name);
//---------系统属性
mainwin.Timer2.Enabled:=inifn.ReadBool('Sysoption','autosave',true);
mainwin.Timer2.Interval:=inifn.Readinteger('Sysoption','autosavetime',300000);
exteditpro:=inifn.Readstring('Sysoption','exteditfile','Notepad.exe');
end;
procedure saveinif;//保存\更新INI文件
var wst:byte;
begin
wst:=0;
if mainwin.WindowState=wsMaximized then wst:=1;
//-----窗口位置
if mainwin.WindowState=wsNormal then //如果窗口不是最大化的
begin
inifn.WriteInteger('mformsize','mformtop',mainwin.top); //保存主窗口顶部位置
inifn.WriteInteger('mformsize','mformleft',mainwin.left); //保存主窗口左部位置
inifn.WriteInteger('mformsize','mformheight',mainwin.height); //保存主窗口高度
inifn.WriteInteger('mformsize','mformwidth',mainwin.width);//保存主窗口宽度
end;
inifn.WriteInteger('mformsize','mformstart',wst); //保存主窗口启动状态
//-------各控件状态
if mainwin.panel1.width >0 then //如果标题窗口可见
inifn.WriteInteger('control','treeboxwidth',mainwin.panel1.width)
else inifn.WriteInteger('control','treeboxwidth',80);
inifn.WriteBool('control','toolbarhint',mainwin.Toolbar1.ShowHint); //保存工具栏提示状态
inifn.WriteBool('control','editautowrap',mainwin.RichEdit1.WordWrap);//保存是否自动换行
inifn.WriteBool('control','toolbarvisible',mainwin.Toolbar1.visible); //保存工具栏是否可见
inifn.WriteBool('control','statusvisible',mainwin.statusbar1.visible); //保存状态栏是否可见
//-----------TREEVIEW属性
inifn.Writeinteger('control','treebcolor',mainwin.treeview1.color); //标题窗背影色
inifn.Writeinteger('control','treebfontsize',mainwin.treeview1.font.Size); //标题窗字体大小
inifn.Writestring('control','treebfontname',mainwin.treeview1.font.name); //保存标题窗字体名
inifn.Writeinteger('control','treebfontcolor',mainwin.treeview1.font.color); //保存标题窗了体颜色
inifn.Writeinteger('control','richbcolor',mainwin.richedit1.color); //保存编辑窗背影色
//-------------编辑框字体属性
inifn.Writeinteger('editfont','fnotcolor',mainwin.richedit1.font.color); //编辑窗字体色
inifn.Writeinteger('editfont','fnotsize',mainwin.richedit1.font.size);//编辑窗字体大小
inifn.Writestring('editfont','fnotname',mainwin.richedit1.font.name); //编辑窗字体名
//---------系统属性
inifn.WriteBool('Sysoption','autosave',mainwin.Timer2.Enabled);//保存是否自动保存
inifn.Writeinteger('Sysoption','autosavetime',mainwin.Timer2.Interval);//自动存时间
inifn.Writestring('Sysoption','exteditfile',exteditpro); //外部编辑器名称
//----------------------
inifn.free;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -