本帖最后由 冥界3大法王 于 2026-5-8 16:34 编辑
从零开始打造一款(吾爱破解-北冥神功_文件管理器)之一基础搭建
![]()
费话说完直接开干!
RAD Studio 13.1 绿色版.html https://share.weiyun.com/sQa6Xrrs
Delphi 13.1 精简绿色版.html https://share.weiyun.com/d1VKfW7f
注册机应版主姥佛爷要求已经和谐。。。请自行探索~~
上来你需要电脑上安装Delphi+ 资源管理器的组件( https://www.jam-software.com/shellbrowser_delphi)
上面提供几个下载了!安装过程就略过了!
为了配合我们完成任务,我们还需要几个安装几个得力干将!VS Code 和 一些AI大模型 。
等我忙完了,B着做个语音视频吧。。。
![]()
我们的总体设计思路是这样的: 抄、扒、挪、改、修!不断的和AI对话完成目标。
具体就是觉得哪个文件管理器有特色功能,我们就试着模仿借鉴一下、它的一些插件什么的、尽可能多的拿来用用不重新画轱辘完成创意和改良。
目前已实现功能皆在截图中。。。多标签。。。下方详。
模仿PicaView实现的右键预览图片功能哟~~
还有全屏看图,和使用(space/PageDown/Right/下一张) PageUp/Up上一张,ESC退出图片浏览器就不一一截图了。
![]()
首先万事开头难,我们上来必须有一个合理的规划,这样才能有了好的架构,设计出比较丰满的功能:
我们的整体思路上面已经交待了一部分,下面具体来实现:
Delphi的开发速度那是相当相当的牛逼和恐怖,尤其在Windows平台上快速构建IDE(主界面)那是向来相当的霸道的快速,不像使用VS2022+MFC(时你拖动一个TAB
后面对应的不能再行编辑和修改,只能用代码来完成)
![]()
New=>Windows VCL Application - Delphi
把工程模式选择为=》发布(这样一会F9编译出的就不是调试版本了)
拖入 一个 MainMenu1,拖入一个 PageControl1, 拖入一个StatusBar1
再把PageControl1的对齐设置为平铺撑满整个窗口
StatusBar1对齐设置默认为居底不用设置
最后再拖入一个JamExplorerBrowser1 把对齐设置为平铺撑满整个窗口
这样用时不到30秒,整体框架就搭建好了。
![]()
你可以直接F9编译一下:
默认就是这样的,因为没有设置,所以没有 后退、前进、返回上一级按钮、地址栏,搜索栏
双击MainMenu1依次添加上面的 菜单项。。(找到Caption输入文字)
如果想出现下一级菜单按Ctrl+Right。。。再次依次输入
如果想出现水平菜单分割线还是找到Caption再输入 - (减号键)
![]()
依次找到上面的 【新建标签 】双击写入完成的事件代码
[Pascal] 纯文本查看 复制代码 procedure TForm35.NewTab1Click(Sender: TObject);
var
TabSheet: TTabSheet;
Browser, SrcBrowser: TJamExplorerBrowser;
begin
SrcBrowser := GetActiveBrowser;
TabSheet := TTabSheet.Create(PageControl1);
TabSheet.PageControl := PageControl1;
Browser := TJamExplorerBrowser.Create(TabSheet);
Browser.Parent := TabSheet;
Browser.Align := alClient;
Browser.VisiblePanes := [epNavigation, epAddressBar, epHistory, epSearchEdit, epRefreshButton];
Browser.OnPathChanged := JamExplorerBrowser1PathChanged;
Browser.ShowHidden := True;
if Assigned(SrcBrowser) then
Browser.Path := SrcBrowser.Path
else
Browser.Path := '我的电脑';
TabSheet.Caption := ExtractFileName(ExcludeTrailingPathDelimiter(Browser.Path));
if TabSheet.Caption = '' then
TabSheet.Caption := Browser.Path;
PageControl1.ActivePage := TabSheet;
UpdateStatus;
end;
在
private
function GetActiveBrowser: TJamExplorerBrowser;
function GetActiveTabSheet: TTabSheet;
下面:
[Delphi] 纯文本查看 复制代码 function TfrmMain.GetActiveBrowser: TJamExplorerBrowser;
var
ts: TTabSheet;
i: Integer;
begin
Result := nil;
ts := GetActiveTabSheet;
if ts <> nil then
begin
for i := 0 to ts.ControlCount - 1 do
if ts.Controls[i] is TJamExplorerBrowser then
begin
Result := TJamExplorerBrowser(ts.Controls[i]);
Break;
end;
end;
end;
下面再添加函数:
function TForm35.GetActiveTabSheet: TTabSheet;
begin
if PageControl1.ActivePage <> nil then
Result := PageControl1.ActivePage
else
Result := nil;
end;
procedure TForm35.JamExplorerBrowser1PathChanged(Sender: TObject);
var
Browser: TJamExplorerBrowser;
ts: TTabSheet;
i: Integer;
begin
if Sender is TJamExplorerBrowser then
begin
Browser := TJamExplorerBrowser(Sender);
for i := 0 to PageControl1.PageCount - 1 do
begin
if PageControl1.Pages.ControlCount > 0 then
begin
if PageControl1.Pages.Controls[0] = Browser then
begin
ts := PageControl1.Pages;
ts.Caption := ExtractFileName(ExcludeTrailingPathDelimiter(Browser.Path));
if ts.Caption = '' then
ts.Caption := Browser.Path;
Break;
end;
end;
end;
UpdateStatus;
end;
end;
procedure TForm35.UpdateStatus;
var
Browser: TJamExplorerBrowser;
begin
Browser := GetActiveBrowser;
if Assigned(Browser) then
begin
StatusBar1.Panels[0].Text := 'Path: ' + Browser.Path;
end;
end;
最后,我再把设置一下该控件/组件 默认的显示内容,按F9编译看下效果吧。
这次 NewTab就正常了。
|