限制 TRichEdit 的一行的宽度,容易:
sendmessage(form1.RichEdit1.Handle,EM_GETRECT,0,LongInt(@Rect));
//rect.top:=10;
//rect.left:=10;
rect.Right:=610;
//...
sendmessage(form1.RichEdit1.Handle,EM_SETRECT,0,LongInt(@rect));但要在不同环境中字数一样,可能要查一个字体方面的问题...

解决方案 »

  1.   

    用GetCharWidth得到每个字符的宽度,然后自己设置richedit的width
      

  2.   

    其实我的目的需要统计行数。
    如果在2000下一行是15个字。而字98下一行是16个字。
    那么2000下是3行,在98下就是2行了。这样我统计的页数(跟打印有关)就不准确了。而且打印的一样的字数也
    固定了。我不关2000下和98下 RichEdit的具体需要多宽,不一样宽也可以。但要求
    一行的字数一定要相同。我给这个问题再家1000分。回答完了我另开10个体送分。先谢谢大家了。急啊。
      

  3.   

    其实我的目的是要统计RichEdit录入的行数
    如果2000下一行是15个字。98下一行16个字。
    那么在2000下三行的字到了98下就可能是2行了。
    而且统计的行数和打印还有关系。我给这个题再加1000分。解决问题的我会另开10个题送上。先谢谢大家了。急啊。
      

  4.   

    其实我的目的需要统计行数。
    如果在2000下一行是15个字。而字98下一行是16个字。
    那么2000下是3行,在98下就是2行了。这样我统计的页数(跟打印有关)就不准确了。而且打印的一样的字数也
    固定了。我不关2000下和98下 RichEdit的具体需要多宽,不一样宽也可以。但要求
    一行的字数一定要相同。我给这个问题再家1000分。回答完了我另开10个体送分。先谢谢大家了。急啊。
      

  5.   

    这么辛苦,原来为了打印....
    我建议你用用ReportBuilder做报表,你会发现你被解放了...
      

  6.   

    你可以检查当前的操作系统版本。
    根据结果来调整TRichEdit每行的宽度。
      

  7.   

    这样也不太好啊。用户的系统太多了。95/98/98,2版本/NT/2000/XP我不能每个都检测吧。而且我怀疑是与RichEdit 的那两个DLL有关。
    万一用户的RichEdit 版本发生变化那么检测系统类别的方法就不准确了。