有没有办法在禁用的TMemo组件中启用滚动条?我想让用户滚动内容,即使控件的Enabled属性设置为False。 我知道ReadOnly可能的解决方法以及禁用状态下的颜色变化,但这对我有很大帮助。
提前致谢:)
答案 0 :(得分:7)
可以禁用或启用控件,但不能启用半控制和半控制。 (而且,对于我们中间的挑剔者,我认为没有黑客可以这样做:-),原因如下所示。
使用ReadOnly是最简单的解决方案。请注意,虽然颜色更改不会使控件看起来禁用。对于识别启用/禁用控件的用户而言,这也会非常混乱。最好让它看起来像一个可滚动的多行标签。这通常是通过将(背景)颜色设置为等于其父颜色来完成的。
没有使用@HalloDu建议和链接的解决方案,但这看起来是一个不错的选择。
答案 1 :(得分:1)
嗯,这不完全是你想要的,但效果是一样的。看看这篇文章,其中实现了WinControls的ViewOnly属性,多年来我发现它非常有用。 LINK
答案 2 :(得分:0)
这不是完美的方式,但它有效: 使用ScrollBar comp。与备忘录相邻。
procedure TForm9.FormCreate(Sender: TObject);
begin
Memo1.ScrollBars := ssNone;
ScrollBar1.Min := 0;
ScrollBar1.Max := Memo1.Lines.Count div (Memo1.Height div 13);//13 is height of a line in memo
end;
procedure TForm9.ScrollBar1Scroll(Sender: TObject; ScrollCode: TScrollCode;
var ScrollPos: Integer);
begin
if ScrollCode in [scPageDown, scLineDown] then
SendMessage(Memo1.Handle, WM_VSCROLL, SB_PAGEDOWN,0)
else if ScrollCode in [scPageUp, scLineUp] then
SendMessage(Memo1.Handle, WM_VSCROLL, SB_PAGEUP,0);
end;
答案 3 :(得分:0)
有一种方法。
将整个TMemo放在TScrollBox中。
当您使用文本填充备忘录时,请调整高度和宽度以适应文本的大小(这是另一个问题,但我确信可以完成)