编辑器

优化标签关闭
This commit is contained in:
JianjunLiu 2023-03-21 10:06:51 +08:00
parent 55f110df48
commit 3205732fdf
1 changed files with 71 additions and 28 deletions

View File

@ -258,6 +258,11 @@ type TPage=class(TCustomControl) //
begin begin
CallSelChanged(); CallSelChanged();
end end
end else
if idx<FItemIndex then
begin
FItemIndex := FItemIndex-1;
FCurrentItem := FPageItems[FItemIndex];
end end
InValidateRect(nil,false); InValidateRect(nil,false);
end end
@ -1773,7 +1778,7 @@ type TEditer=class(TCustomcontrol) //
FListPages.Visible := false; FListPages.Visible := false;
//////////////////////////// ////////////////////////////
FPageMenu := new TPopUpMenu(self); FPageMenu := new TPopUpMenu(self);
for i,v in array("关闭","关闭其他标签","复制文件名","复制文件全名","重新加载","打开目录","另存为") do for i,v in array("关闭","关闭其他标签","关闭左侧所有","关闭右侧所有","复制文件名","复制文件全名","重新加载","打开目录","另存为") do
begin begin
mi := new TMenu(self); mi := new TMenu(self);
mi.Caption := v; mi.Caption := v;
@ -1956,6 +1961,7 @@ type TEditer=class(TCustomcontrol) //
begin begin
return FPageEditer.pageitemcount; return FPageEditer.pageitemcount;
end end
function CloseAllPageItems(it); function CloseAllPageItems(it);
begin begin
its := FPageEditer.PageItems; its := FPageEditer.PageItems;
@ -2311,6 +2317,34 @@ type TEditer=class(TCustomcontrol) //
end end
EditerCaretChanged(it.FEditer,nil); EditerCaretChanged(it.FEditer,nil);
end end
function docloseapageitem(it);
begin
if it.fisnewfile then //单独处理新建关闭
begin
f := it.OrigScriptPath;
DeletePageItem(it);
if fileexists("",f) then filedelete("",f);
return ;
end
if JudgeItemState(it)then return;
if it.FEditer.ChangedFlag then
begin
mr := MessageboxA(format("是否保存:%s",it.OrigScriptPath),"提示",3,self);
if mr=IDYES then
begin
if SavePageItem(it)=0 then
begin
it.FEditer.ChangedFlag := true;
return 0;
end
end else
if mr=IDCANCEL then
begin
return;
end
end
DeletePageItem(it);
end
function PageMenuClick(o,e); function PageMenuClick(o,e);
begin begin
it := GetCurrentItem(); it := GetCurrentItem();
@ -2318,32 +2352,41 @@ type TEditer=class(TCustomcontrol) //
case o.Caption of case o.Caption of
"¹Ø±Õ": "¹Ø±Õ":
begin begin
if it.fisnewfile then //单独处理新建关闭 docloseapageitem(it);
end
"关闭左侧所有":
begin
its := GetAllPageItems();
itss := array();
for i := 0 to its.Length()-1 do
begin begin
f := it.OrigScriptPath; iti := its[i];
DeletePageItem(it); if iti=it then break ;
if fileexists("",f) then filedelete("",f); itss[i] := iti;
end
for i,iti in itss do
begin
docloseapageitem(iti);
end
end
"关闭右侧所有":
begin
dodel := 0;
its := GetAllPageItems();
itss := array();
for i := 0 to its.Length()-1 do
begin
itss[i] := its[i];
end
for i,iti in itss do
begin
if dodel then docloseapageitem(iti);
if iti=it then
begin
dodel := 1;
end ;
return ;
end end
if JudgeItemState(it)then return;
if it.FEditer.ChangedFlag then
begin
mr := MessageboxA(format("是否保存:%s",it.OrigScriptPath),"提示",3,self);
if mr=IDYES then
begin
if SavePageItem(it)=0 then
begin
it.FEditer.ChangedFlag := true;
return 0;
end
end else
if mr=IDCANCEL then
begin
return;
end
end
DeletePageItem(it);
end end
"¹Ø±ÕÆäËû±êÇ©": "¹Ø±ÕÆäËû±êÇ©":
begin begin