对 TMonthCalendar 使用 ScaleBy 方法

Posted

技术标签:

【中文标题】对 TMonthCalendar 使用 ScaleBy 方法【英文标题】:using ScaleBy method for TMonthCalendar 【发布时间】:2013-10-29 01:22:41 【问题描述】:

我正在使用 ScaleBy 方法在运行时放大/缩小我的应用程序的表单。它适用于几乎所有组件,但不适用于 TMonthCalendar。 有没有办法使用 ScaleBy 或任何其他方法来放大 TMonthCalendar?

【问题讨论】:

v6 控件考虑视觉样式的字体大小。在尝试缩放之前尝试调用 SetWindowTheme(MonthCalendarHandle, '', '') 以获得 v5 控件。 例如:ScaleBy(200, 100);MonthCalendar1.RecreateWnd;SetWindowTheme(MonthCalendar1.Handle, '', ''); 嘿@Sertac,你的回答很有帮助。我曾尝试禁用主题,但它不起作用。 MonthCalendar 也不会 RecreatWnd。也许它受到保护。无论如何,我找到了解决方案并将其作为答案发布,但是我失去了视觉风格,但总比没有好!谢谢。 不客气!实际上,访问受保护的 RecreateWnd 方法需要一些技巧,您的解决方案很好。 【参考方案1】:

它可以工作;如果你禁用主题。您还需要更改尺寸以使其正常工作

SetWindowTheme(MonthCalendar1.Handle, '', '');
MonthCalendar1.ScaleBy(190, 100);
MonthCalendar1.Width := MonthCalendar1.Width + 1;
MonthCalendar1.Width := MonthCalendar1.Width - 1;

感谢@Sertac 的提示

【讨论】:

【参考方案2】:

MonthCalendar 控件具有固定大小,您无法更改此大小.. 低宽尺寸定义为 225 像素,高宽尺寸定义为 450 像素。

【讨论】:

TMonthCalendarMonth Calendar Windows 控件的包装器,它取决于系统的大小。 是的,我认为这是真的,我提到了从我的系统获得的值。

以上是关于对 TMonthCalendar 使用 ScaleBy 方法的主要内容,如果未能解决你的问题,请参考以下文章

在 Delphi 中更改 TMonthCalendar 的状态/格式

TMonthCalendar 行为已更改

对条形图中的 x 轴使用序数刻度 ('d3.scale.ordinal')

R语言使用caret包的preProcess函数进行数据预处理:对所有的数据列进行scale标准化(数据列中的数值除以标准差)设置method参数为scale

R语言使用caret包的preProcess函数进行数据预处理:对所有的数据列进行scale标准化(数据列中的数值除以标准差)设置method参数为scale

R语言使用magick包的image_scale函数对图像进行缩放(resize)可以自定义从宽度或者高度角度进行缩放