小编Mic*_*ann的帖子

Delphi High DPI在自身缩放和Windows缩放之间切换

我的一些客户希望能够手动扩展我的应用程序(当Windows dpi设置为96时),因此我必须实现扩展.不幸的是,这些客户不能将Windows DPI设置为其他值,并让WIndows扩展我的应用程序,因为他们使用的一些非常重要的应用程序在<> 96 DPI的分辨率下表现不佳.

我设法使我的Delphi 10.1应用程序规模相当好,即使在200%,但因素越高,一些比例变得"不太好看".许多第三方组件需要特殊的缩放处理,即使这样也不能100%准确地扩展.虽然按窗口缩放的应用程序在高分辨率下看起来有点模糊,但所有比例都是100%准确,并且应用程序看起来更专业.

所以我问自己是否有可能创建一个允许告诉Windows将扩展作为默认设置的设置,如果客户想要一个与当前Windows扩展不同的扩展,则只能自行扩展.此设置托管在应用程序启动时读取的可执行文件的Windows清单中.有没有办法在运行时更改它(应用程序的早期启动)?创建具有不同清单的两个可执行文件肯定不是一个好的解决方案.

谢谢你的帮助

delphi dpi hdpi

4
推荐指数
1
解决办法
6227
查看次数

Delphi“免费”TStringDynArray

是否不需要在创建时释放 TStringDynArray,例如 SplitString?尝试释放它失败,因为它不是对象。

当我在后台进程中使用它时,我担心在没有明确释放内存的情况下使用它会造成内存泄漏。

delphi

3
推荐指数
1
解决办法
1175
查看次数

迁移到 10.4 Sydney 后出现 Delphi Indy SSL 错误

使用 Delphi 10.4 编译我的 win32 客户端/服务器应用程序(使用 INDY 和 TMS Sparkle)后,出现 ssl 错误。我在服务器端使用 Indy 并使用自签名证书,在客户端使用 Indy。错误消息是(翻译自德语):

SSL 连接错误。EOF 遇到违反协议的情况。

从 10.3 开始,我没有更改任何代码或环境,它运行得很好。我可以将其分解到服务器端,因为旧服务器(在 10.3 中编译)与新客户端(在 10.4 中编译)一起运行,但在尝试连接到新服务器时旧客户端也会中断。

这是我初始化 SSL 的方式:

    SecureServer := TIndySparkleHTTPServer.create(nil);
    SecureServer.DefaultPort := SecurePort;
    // Initialize SSL with self signed certificate
    SSLHandler := TIdServerIOHandlerSSLOpenSSL.create(SecureServer);
    SSLHandler.SSLOptions.CertFile := SharedVals.ServerPath + 'appcert.pem';
    SSLHandler.SSLOptions.RootCertFile := SharedVals.ServerPath + 'approot.pem';
    SSLHandler.SSLOptions.KeyFile := SharedVals.ServerPath + 'appkey.pem';
    SSLHandler.SSLOptions.Method := sslvSSLv23;
    SecureServer.IOHandler := SSLHandler;
Run Code Online (Sandbox Code Playgroud)

Emba 在 10.3 中成功打破了 Indy,也许这是另一个类似的案例?

delphi ssl indy

3
推荐指数
1
解决办法
2878
查看次数

如何在运行时访问 dfm 资源 (Delphi 11, 12)

如何在运行时通过代码访问Delphi项目中表单的DFM资源?

背景:我希望能够在运行时解析表单的 DFM,以根据需要创建 HTML 和其他表示形式。当然,我可以在构建项目之前解析它们并创建额外的资源。但当它们被编译到软件中并在运行时使用时,我相信它们也应该可以在代码中以某种方式访问​​。

我目前使用 Delphi 11,很快就会使用 Delphi 12。

delphi embedded-resource dfm delphi-11-alexandria delphi-12-athens

2
推荐指数
1
解决办法
102
查看次数

Delphi Windows - 确定关闭请求源

是否可以确定 Windows 应用程序(Delphi)中关闭请求的来源?

背景:我可以选择路由关闭请求以最小化窗口,以保持应用程序“在后台”运行。

procedure TfrmMain.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
    ...  different checking stuff e.g. unsaved changes
    // Redirect Close to minimize but allow close if requested from minimized state
    if FMinimize and (WindowState <> wsMinimized) then
    begin
        logger.debug('... closing main form redirected to minimize');
        WindowState := wsMinimized;
        CanClose := false;
        exit;
    end;
end;
Run Code Online (Sandbox Code Playgroud)

这效果很好,并且允许通过右键单击任务栏(如果已经最小化)来关闭窗口。作为锦上添花,我想确定关闭请求是否来自右键单击任务栏图标以立即关闭,即使窗口尚未最小化。有没有办法确定关闭请求的来源?

windows delphi

0
推荐指数
1
解决办法
390
查看次数