C++Builder FMX TPrintDialog->Copies运行时修改后不生效求助
解决C++Builder 10.4 FMX TPrintDialog Copies属性不更新问题
这是CBuilder 10.4 FMX组件在Windows平台的已知问题,Delphi版本因属性同步机制差异可正常获取值,C版本需通过以下方式处理:
方法一:直接读取Win32打印对话框底层数据
绕过FMX组件的Copies属性,直接从Win32 API的打印对话框结构体中获取用户设置的份数:
#include <Winapi.PrintDlg.hpp> if (!PrintDialog1->Execute()) return; // 转换对话框句柄为PRINTDLGEX结构体指针 PRINTDLGEX* pPrintDlg = reinterpret_cast<PRINTDLGEX*>(PrintDialog1->DialogHandle); if (pPrintDlg != nullptr) { int copyCount = pPrintDlg->nCopies; ShowMessage(IntToStr(copyCount)); }
方法二:替换为VCL TPrintDialog(若项目兼容)
如果项目允许混合使用VCL组件,可直接替换为VCL的TPrintDialog,其Copies属性可正常同步用户输入:
// 确保已添加VCL的PrintDialog组件到窗体 if (!Vcl::Dialogs::PrintDialog1->Execute()) return; int cnt = Vcl::Dialogs::PrintDialog1->Copies; ShowMessage(IntToStr(cnt));
内容的提问来源于stack exchange,提问作者Максим Афиногенов
相关产品推荐
相关产品推荐

