有没有办法在禁用的 TMemo 组件中启用滚动条?即使控件的 Enabled 属性设置为 False,我也想让用户滚动内容。我知道 ReadOnly 的可能解决方法和禁用状态下的颜色更改,但这对我有很大帮助。
提前致谢 :)
可以禁用或启用控件,但不能半禁用半启用。(而且,对于我们中间的挑剔者,我认为没有黑客应该这样做:-),原因如下)。
使用 ReadOnly 是最简单的解决方案。请注意颜色更改不要使控件看起来被禁用。在识别启用/禁用控件方面,这也会让用户非常困惑。最好让它看起来像一个可滚动的多行标签。这通常是通过将(背景)颜色设置为与其父颜色相同的颜色来完成的。
尚未使用@HalloDu 建议和链接的解决方案,但这看起来是一个不错的选择。
嗯,这不完全是你想要的,但效果是一样的。查看这篇文章,其中实现了 WinControls 的 ViewOnly 属性,多年来我发现它非常有用。关联
这不是完美的方式,但它有效:使用 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;
有一种方法。
将整个 TMemo 放在 TScrollBox 中。
当你用文本填充备忘录时,调整高度和宽度以适应文本的大小(这是另一个问题,但我相信可以做到)