在窗体上放一个RichEdit控件,设置大小为100*100.设置自动换行并且不显示滚动条。
然后让用户随便设置字体大小,随便怎么输入,当输入的字宽度或者高度超出RichEdit的时候,就提示用户,你输的字已经太多了。这种效果要怎么做?不是那种简单设置 richedit的maxlength就行的,因为字体大小变了以后,没办法计算能输多少 行/列 字了。希望有高手帮忙解决下~~~
然后让用户随便设置字体大小,随便怎么输入,当输入的字宽度或者高度超出RichEdit的时候,就提示用户,你输的字已经太多了。这种效果要怎么做?不是那种简单设置 richedit的maxlength就行的,因为字体大小变了以后,没办法计算能输多少 行/列 字了。希望有高手帮忙解决下~~~
输入文本高度不超过richedit的可见高度的解决思路:
1、用RichEdit1.Perform(EM_GETFIRSTVISIBLELINE, 0, 0)取richedit的第一个可见
行的行号。
2、当此行号不等于0时表示输入的文本超过了richedit的可见高度;则删除最后输入的字符;
3、提示用户。
用户做了更改后,判断richedit的第一个可见行的行号,如此行号不等于0时,
删除最后行richedit1.Lines.Delete(richedit1.Lines.Count-1);
循环之。
现在用户输入是不会超出了,但是用户输入完以后,只要把字体设置大一点,就肯定会超出了。
因为这时候可见行号一直都是0,那么是不会删除超出的部分的,用户只要按下向下的箭头,就可以看到超出的部分。你可以做个试验44看。
我就是不清楚要怎么算嘛。我用RichEdit1.Font.Height得到的字体高度都是负数哦~~~比如8号字的字体高度一般都是-11。我的RichEdit1的高度是100,100/11=9左右,但其实只能输差不多5行。
因为行和行之间还有间距,但是这个间距是多少呢?字体变大了以后行间距会不会变大。有什么函数可以得到行间距的?
if Length(RichEdit1.Text)>X then
begin
ShowMessage{' '};
...
exit;
end;试试