Delphi XE2 VCL样式-滚动条绘制
当应用VCL样式时,DelphiXe2中的文本编辑器有问题。如果我在表单上放置了两个TMemo控件(Memo1和Memo2),并且Memo1部分位于Memo2后面,则Memo1的边框将绘制在Memo2上 我试图创建一个从TScrollingStyleHook继承的样式挂钩,但没有找到任何方法来解决这个问题。有人知道如何修复这个bug吗 顺便说一句:我也在DelphiXe5中测试了它,它的行为方式也一样 以下是.dfm和.pas文件的源代码: DFM: 考绩制度:Delphi XE2 VCL样式-滚动条绘制,delphi,scrollbar,delphi-xe2,vcl-styles,Delphi,Scrollbar,Delphi Xe2,Vcl Styles,当应用VCL样式时,DelphiXe2中的文本编辑器有问题。如果我在表单上放置了两个TMemo控件(Memo1和Memo2),并且Memo1部分位于Memo2后面,则Memo1的边框将绘制在Memo2上 我试图创建一个从TScrollingStyleHook继承的样式挂钩,但没有找到任何方法来解决这个问题。有人知道如何修复这个bug吗 顺便说一句:我也在DelphiXe5中测试了它,它的行为方式也一样 以下是.dfm和.pas文件的源代码: DFM: 考绩制度: Vcl样式引擎不正确支持滚动条,
Vcl样式引擎不正确支持滚动条,在备注中,滚动条是从TWinControl类继承的TScrollWindow类创建的。标准滚动条(不带vcl样式)作为备注的一部分绘制。 当使用vcl样式时,memo的滚动条会变成一个顶部窗口,这就是导致前面问题的原因。 如果查看
TScrollingStyleHook.UpdateScroll
事件,您会发现样式引擎使用SetWindowPos
将滚动条置于其他控件的顶部以显示滚动条
SetWindowPos(FVertScrollWnd.Handle, HWND_TOP, Control.Left + Left,
Control.Top + Top, Right - Left, Bottom - Top, SWP_SHOWWINDOW);
如果要解决此问题,需要在TMemo类内的
WM_NCPAINT
消息中绘制滚动条。Vcl样式引擎不正确支持滚动条。在备注中,滚动条是从TWinControl类继承的TScrollWindow类创建的。标准滚动条(不带vcl样式)作为备注的一部分绘制。
当使用vcl样式时,memo的滚动条会变成一个顶部窗口,这就是导致前面问题的原因。
如果查看TScrollingStyleHook.UpdateScroll
事件,您会发现样式引擎使用SetWindowPos
将滚动条置于其他控件的顶部以显示滚动条
SetWindowPos(FVertScrollWnd.Handle, HWND_TOP, Control.Left + Left,
Control.Top + Top, Right - Left, Bottom - Top, SWP_SHOWWINDOW);
如果要解决此问题,需要在TMemo类内的
WM_NCPAINT
消息中绘制滚动条。Vcl样式引擎不正确支持滚动条。在备注中,滚动条是从TWinControl类继承的TScrollWindow类创建的。标准滚动条(不带vcl样式)作为备注的一部分绘制。
当使用vcl样式时,memo的滚动条会变成一个顶部窗口,这就是导致前面问题的原因。
如果查看TScrollingStyleHook.UpdateScroll
事件,您会发现样式引擎使用SetWindowPos
将滚动条置于其他控件的顶部以显示滚动条
SetWindowPos(FVertScrollWnd.Handle, HWND_TOP, Control.Left + Left,
Control.Top + Top, Right - Left, Bottom - Top, SWP_SHOWWINDOW);
如果要解决此问题,需要在TMemo类内的
WM_NCPAINT
消息中绘制滚动条。Vcl样式引擎不正确支持滚动条。在备注中,滚动条是从TWinControl类继承的TScrollWindow类创建的。标准滚动条(不带vcl样式)作为备注的一部分绘制。
当使用vcl样式时,memo的滚动条会变成一个顶部窗口,这就是导致前面问题的原因。
如果查看TScrollingStyleHook.UpdateScroll
事件,您会发现样式引擎使用SetWindowPos
将滚动条置于其他控件的顶部以显示滚动条
SetWindowPos(FVertScrollWnd.Handle, HWND_TOP, Control.Left + Left,
Control.Top + Top, Right - Left, Bottom - Top, SWP_SHOWWINDOW);
如果你想解决这个问题,你需要在TMemo类中的
WM_NCPAINT
消息中绘制滚动条。你能包含这个问题的图片吗?我是这个网站的新成员,不允许在帖子中添加图片,但是我在描述中添加了.pas和.dfm代码。你能包含问题的图像吗?我是此网站的新成员,不允许在帖子中添加图像,但我在描述中添加了.pas和.dfm代码。你能包含问题的图像吗?我是此网站的新成员,不允许在帖子中添加图像,但是我在描述中添加了.pas和.dfm代码。你能提供该问题的图片吗?我是该网站的新成员,不允许在帖子中添加图片,但我在描述中添加了.pas和.dfm代码。谢谢S.Mahdi!你是对的。我修改了WM_NCPAINT,看起来就是这样,但它也需要其他修改,因为滚动条的绘制并不完全正确。谢谢S.Mahdi!你是对的。我修改了WM_NCPAINT,看起来就是这样,但它也需要其他修改,因为滚动条的绘制并不完全正确。谢谢S.Mahdi!你是对的。我修改了WM_NCPAINT,看起来就是这样,但它也需要其他修改,因为滚动条的绘制并不完全正确。谢谢S.Mahdi!你是对的。我修改了WM_NCPAINT,看起来就是这样,但它也需要其他更改,因为滚动条的绘制并不完全正确。