如果用户看不到选项卡,如何将所有VCL样式选项卡表控件绘制到给定画布?

时间:2017-06-16 14:31:08

标签: delphi c++builder vcl vcl-styles

使用C ++ Builder 10.2,VCL& VCL风格......

我的每个TPageControl都有TFrames TTabsheets。其中一个框架包含一些TEdit控件,用于显示从设备读取的数据。获取读数并更新帧后,系统可以创建此帧的屏幕截图并将其存储在jpeg文件中。

由于创建jpeg时TTabsheetTPageControl的{​​{1}} TEdit可能无法显示,因此jpeg可能没有TEdit的文本内容控制画。这让我很适合。

我发现通过使用样式化的TStaticText,文本出现在jpeg中。这似乎是由于TStaticTextStyleHook.Paint(在VCL.StdCtrls.pas中)绘制控件而不是让Windows执行它。

使用TStaticText有两个问题。选择SystemStyle选项(Windows)会导致TStaticTextStyleHook.Paint跳过绘制控件本身并委托给Windows(我认为)。此外,TStaticText的外观并不是我想要的,但我可能不得不忍受它。

Windows是否拒绝绘制TEdit控件内容,因为父级不是Visible

在这种情况下,有没有办法强制Windows绘制TEdit控件?

UpdateWindow()RedrawWindow()不起作用。

0 个答案:

没有答案