尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

Lazarus使用cef打开文件和下载设置

Lazarus使用cef打开文件和下载设置
📅 发布时间:2026/6/17 19:39:48

Lazarus使用cef打开文件和下载设置

//下载
procedure TForm1.Chromium1BeforeDownload(Sender: TObject;
const browser: ICefBrowser; const downloadItem: ICefDownloadItem;
const suggestedName: ustring; const callback: ICefBeforeDownloadCallback);
begin
callback.Cont(ExtractFilePath(ParamStr(0)) + suggestedName, True);
end;

//打开文件

procedure TForm1.Chromium1FileDialog(Sender: TObject;
const browser: ICefBrowser; mode: TCefFileDialogMode; const title,
defaultFilePath: ustring; const acceptFilters: TStrings;
selectedAcceptFilter: Integer; const callback: ICefFileDialogCallback; out
Result: Boolean);
var
OpenDialog: TOpenDialog;
SaveDialog: TSaveDialog;
FilterStr: string;
I,DialogType: Integer;
filePaths: TStringList;
begin
Result := True;
DialogType := mode - FILE_DIALOG_C;

// 构建过滤器
if acceptFilters.Count > 0 then
begin
FilterStr := '';
for I := 0 to acceptFilters.Count - 1 do
begin
if FilterStr <> '' then
FilterStr := FilterStr + '|';
FilterStr := FilterStr + acceptFilters[I] + ' (' +
acceptFilters[I] + ')|' + acceptFilters[I];
end;
end;

case DialogType of
FILE_DIALOG_OPEN_MULTIPLE, FILE_DIALOG_OPEN:
try
//打开文件对话框
OpenDialog := TOpenDialog.Create(nil);
if title <> '' then
OpenDialog.Title := title;
OpenDialog.Filter := FilterStr;

// 同步到主线程显示对话框
TThread.Synchronize(nil,
procedure
begin
// 禁用多选
if DialogType = FILE_DIALOG_OPEN then
OpenDialog.Options := OpenDialog.Options - [ofAllowMultiSelect];
if OpenDialog.Execute then
begin
FilePaths := TStringList.Create;
try
FilePaths.Add(OpenDialog.FileName);
callback.Cont(selectedAcceptFilter, FilePaths);
finally
FilePaths.Free;
end;
end
else
callback.Cancel;
end);
finally
OpenDialog.Free;
end;
FILE_DIALOG_SAVE:
begin
try
//保存文件对话框
SaveDialog := TSaveDialog.Create(nil);
SaveDialog.FileName := ExtractFileName(defaultFilePath);
if title <> '' then
SaveDialog.Title := title;

SaveDialog.Filter := FilterStr;
// 同步到主线程显示对话框
TThread.Synchronize(nil,
procedure
begin
if SaveDialog.Execute then
begin
FilePaths := TStringList.Create;
try
FilePaths.Add(SaveDialog.FileName);
callback.Cont(selectedAcceptFilter, FilePaths);
finally
FilePaths.Free;
end;
end
else
callback.Cancel;
end);
finally
SaveDialog.Free;
end;
end;
else
begin
WriteLn('不支持对话窗口');
callback.Cancel;
Exit;
end;
end;
end;

 

相关新闻

  • Pjudge #21741. 【NOIP Round #5】青鱼和区间 题解
  • 完全平方和的推广
  • 2025.11.18

最新新闻

  • 涿州老王匠全屋定制|全系ENF级高端板材硬核解析,高端家装健康选材首选 - GrowthUME
  • TensorFlow图模式实战:@tf.function性能优化与AutoGraph避坑指南
  • 2026上海破坏计算机信息系统罪律师推荐|网络攻击、数据篡改辩护 - 法律资讯
  • MonkeyCode国际化与本地化:支持全球开发者的AI编程工具
  • NXP Layerscape USB 2.0控制器配置实战:主机/设备模式切换与调试指南
  • 服务口碑领先回收榜单,郑州全域上门回收闲置金饰避坑攻略 - 奢侈品回收测评

日新闻

  • 2026年不锈钢卷板厂家推荐排行榜:冷轧热轧/304/201不锈钢卷板,高颜值耐腐蚀源头厂家实力精选 - 企业推荐官【官方】
  • FLUX.1-dev FP8模型实战指南:24GB以下显卡高效部署方案
  • 2026佛山长途搬家价目表:跨省跨市搬家费用完整计算指南 - 从来都是英雄出少年

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号