我为Delphi制作了一个日历组件。现在我想在更改月份时添加视觉效果(如Windows Vista标准日历)。
现在我想创建一个不可见的组件副本,并在画布上绘制一个副本以将其用于视觉效果。我尝试了BitBlt
函数但它不起作用,因为控件是不可见的。有没有办法在画布上绘制一个不可见的控件?
答案 0 :(得分:5)
调用控件的PaintTo
方法。那是TWinControl
的后代。
我没有看到TGraphicControl
后代的类似方法,但由于这些方法总是需要TWinControl
父级,因此您只需在父控件上调用PaintTo
即可获得TGraphicControl
孩子。
答案 1 :(得分:2)
除了Rob的correct answer之外,我可以提出两种选择吗?
箭头和月份名称似乎不会滚动,因此我们将它们称为组件的标题,并使其成为组件的子控件。随后,让日子也成为一个子控制。现在可以在显示的那个旁边放置两个日控件。因为它们超出了组件的范围,所以这些旁边放置的日期控件是隐藏的,但一旦移动就会变得可见。在滚动操作结束时,将最外侧移动到另一侧并适当地设置其月份。
将日期的绘画移动到具有类似月份参数的单独例程。滚动时,请调用该例程两次。