界面库

dpi感知
This commit is contained in:
tslediter 2023-11-17 16:09:32 +08:00
parent 93c7cb4629
commit e3917cfa3d
3 changed files with 140 additions and 3 deletions

View File

@ -6609,7 +6609,9 @@ begin
hd := 0;
if(wnd is class(TWincontrol))and wnd.HandleAllocated()then hd := wnd.Handle;
else if ifnumber(wnd)then hd := wnd;
return gettswin32api().MessageBoxA(hd,ifstring(txt)?txt:"",ifstring(title)?title:"",flag >= 0?flag:0);
api := gettswin32api();
api.clipcursor(0);
return api.MessageBoxA(hd,ifstring(txt)?txt:"",ifstring(title)?title:"",flag >= 0?flag:0);
end
function GetCurrentTslDir(); //获得tsl目录以\结尾
begin

View File

@ -2293,6 +2293,141 @@ type tcountlocker = class() //
private
fkernel;
end
//////////////////////字符串文件读取累//////////////////////////////////
type tfileer_rwraw = class() //字符串文件类型
{**
@explan(说明)字符串文件类型,load save,local_changed_check,data %%
**}
function create();
begin
ffilename := "";
fAlias := "";
fdatachanged := false;
inputchanged();
end
function load();//加载
begin
if not(ifstring(ffilename) and fileexists("",ffilename)) then return 0; //文件名不存在
p := 0;
len := filesize(fAlias,ffilename);
tm := filetime(fAlias,ffilename);
if not fdatachanged then //对象数据修改了
begin
if (len=flen) and (tm=floadtime) then return 1; //大小时间没变
end
if 1 = readfile(rwraw(),fAlias,ffilename,p,len,data) then //读文件
begin
fdata := data;
flen := len;
floadtime := tm;
floaded := true;
fdatachanged := false;
return 1;
end
end
function save(); //保存
begin
if not(ifstring(ffilename) and ffilename) then return 0;
if fileexists(fAlias,ffilename) then
begin
tm := filetime(fAlias,ffilename);
if tm=floadtime then return 1;
sz := filesize(fAlias,ffilename);
if sz>length(fdata) then
begin
if filedelete(fAlias,ffilename)<>1 then return 0;
end else
begin
p := 0;
if 1 = readfile(rwraw(),fAlias,ffilename,p,sz,data) then
begin
if fdata=data then
begin
return 1;
end
end
end
end else
begin
exportfile(ftstring(),fAlias,ffilename,"");
end
if 1=writefile(rwraw(),fAlias,ffilename,0,length(fdata),fdata) then
begin
floadtime := filetime(fAlias,ffilename);
flen := length(fdata);
floaded := true;
fdatachanged := false;
return true;
end
return false;
end
function local_changed_check(); //本地文件是否从修改后发生改变
begin
if floaded then
begin
if fileexists(fAlias,ffilename) then
begin
if floadtime<>filetime(fAlias,ffilename) then
begin
return 1; //改变
end
end else
begin
return 2; //删除
end
end
end
property fname read ffilename write setfilename;//文件名
property Alias read fAlias write fAlias; //目录别名
property data read getdata write setdata; //数据集
property ftime read floadtime;//
private
fAlias;
floadtime;
ffilename;
flen;
fdata;
fleadload;
fdatachanged;
private
function getdata();
begin
return fdata;
end
function setdata(s);//设置数据
begin
if ifstring(s) and s<>fdata then
begin
inputchanged();
fdata := s;
fdatachanged := true;
end
end
function setalias(s);
begin
if ifstring(s) and s<>fAlias then
begin
fAlias := s;
inputchanged();
end
end
function setfilename(f); //修改文件名
begin
if f<>ffilename then //文件改变
begin
ffilename := f;
inputchanged();
end
end
function inputchanged();//输入改变
begin
fdata := "";
flen := "";
floadtime := 0;
floaded := false;
end
end
type tinstancemanager = class()
{**
@explan(说明)函数c语言指针管理器 %%

View File

@ -727,10 +727,10 @@ begin
begin
g_windows_proc_handle := makeinstance(thisfunction(tslvclproc));
end
{try
try
SetProcessDpiAwareness(2); //shez dpi¸ÐÖª
except
end }
end
end
function uninit();//Ð¶ÔØ
begin