如何使Windows的Memo不可聚焦或标签高度=其内容的大小?

时间:2010-07-06 09:47:39

标签: c++ delphi winapi

如何使simpe Memo无法聚焦,所以如果用户点击它,焦点将不会移动到它?

如果文本宽度>如何使Label自动自动换行;标签的宽度并使其高度=文本的高度*'可见'行计数?

谢谢!

5 个答案:

答案 0 :(得分:1)

Memo1.Enabled := False;

答案 1 :(得分:1)

你想成功吗?它不能集中注意力,或者你想成功吗?它不能被输入?显然你希望它仍然是可滚动的,没有“禁用外观”。尝试将ReadOnly属性设置为true。它仍然会启用,用户可以滚动它,甚至可以选择和复制文本,但不能编辑内容。

答案 2 :(得分:1)

如何使Label自动换行,请使用此选项

Label1.WordWrap := True;

编辑1:我们必须首先将WordWrap属性设置为false,然后将其设置为True以自动调整高度。

Label1.WordWrap := False;
Label1.Caption := 'This has word wrap This has word wrap';
Label1.Width := 45;
Label1.WordWrap := true;

答案 3 :(得分:0)

这是一个黑客攻击:将焦点移到TMemo.OnEnter的其他控件:

procedure Form1.Memo1Enter(Sender: TObject);
begin
  Button1.SetFocus;
end;

我在Delphi 2010和Windows 7上试过这个,它运行得很好。滚动条已启用,备忘录看起来已启用,但您无法对其进行聚焦,也无法从中选择文本(无法对焦的副作用)。

修改:您实际上可以从中复制文字。右键单击 - 选择全部,然后右键单击复制。它看起来并不像你选择的东西,但确实有效。

答案 4 :(得分:0)

脱离我的头顶:

使备忘录足够高,以容纳所选宽度的所有文字。

隐藏备忘录的滚动条。将备忘录设置为只读

将备忘录放在TScrollbox上,并将autoscroll设置为true。

允许宽度计算中的滚动框垂直滚动条。

让TScrollbox处理滚动。