编辑器

优化标签关闭
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,19 +2317,13 @@ type TEditer=class(TCustomcontrol) //
end end
EditerCaretChanged(it.FEditer,nil); EditerCaretChanged(it.FEditer,nil);
end end
function PageMenuClick(o,e); function docloseapageitem(it);
begin
it := GetCurrentItem();
if not it then return;
case o.Caption of
"关闭":
begin begin
if it.fisnewfile then //单独处理新建关闭 if it.fisnewfile then //单独处理新建关闭
begin begin
f := it.OrigScriptPath; f := it.OrigScriptPath;
DeletePageItem(it); DeletePageItem(it);
if fileexists("",f) then filedelete("",f); if fileexists("",f) then filedelete("",f);
return ; return ;
end end
if JudgeItemState(it)then return; if JudgeItemState(it)then return;
@ -2345,6 +2345,49 @@ type TEditer=class(TCustomcontrol) //
end end
DeletePageItem(it); DeletePageItem(it);
end end
function PageMenuClick(o,e);
begin
it := GetCurrentItem();
if not it then return;
case o.Caption of
"关闭":
begin
docloseapageitem(it);
end
"关闭左侧所有":
begin
its := GetAllPageItems();
itss := array();
for i := 0 to its.Length()-1 do
begin
iti := its[i];
if iti=it then break ;
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 ;
end
end
"关闭其他标签": "关闭其他标签":
begin begin
Cit := it; Cit := it;