动态设置RichTextBox高度

cslf 2004-06-30 02:21:50
怎样根据.text的内容变化,动态设置RichTextBox的高度
不需要显示滚动条,或者隐藏滚动条。
...全文
227 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
cslf 2004-07-05
  • 打赏
  • 举报
回复
下午结贴。
射天狼 2004-07-01
  • 打赏
  • 举报
回复
如果RICHTEXTBOX中没把你说的这些滚动条信息做成接口或者属性,恐怕就不行了.
VB不支持继承,帮你UP吧!!
cslf 2004-07-01
  • 打赏
  • 举报
回复
自己顶!
解决问题立即结贴.
cslf 2004-07-01
  • 打赏
  • 举报
回复
谢谢各位!
//不知道滚动条是捕获一个什么事件来改变滚动条的value。
我的意思是:如果知道RichTextBox1的滚动条的值是怎么实现的可能就好办些。因为在RichTextBox1里高度的任何变化都有可能引起滚动条值的准确变化(值变大或变小)。
通过子类化可以实现监视RichTextBox1的字体和行距的变化吗。
cslf 2004-07-01
  • 打赏
  • 举报
回复
我想用SPy++找到些启示。但好象找不到那些我要的消息。
射天狼 2004-06-30
  • 打赏
  • 举报
回复
Const EM_GETLINECOUNT = &HBA
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long

Private Sub RichTextBox1_Change()
Dim lngRows As Long, lngHeight As Long

ScaleMode = vbCharacters
lngRows = SendMessage(RichTextBox1.hWnd, EM_GETLINECOUNT, 0, 0&)
Caption = lngRows
lngHeight = lngRows * (TextHeight("A") + 0.34)
RichTextBox1.Height = lngHeight
End Sub

这个简单一些,一行的高度与行间距估计的不准,你自己试一下,或者找到更好的求RICHTEXTBOX控件中一行的高度请告知!!
射天狼 2004-06-30
  • 打赏
  • 举报
回复
你为什么要这样,如果RICHTEXTBOX改变后的高度超出窗体高度怎么办!?
你的RICHTEXTBOX控件中的字体与字号是多大,是否所有的字体大小都一致,否则将会增加难度.

Private Sub RichTextBox1_Change()
Dim lngRows As Long, lngHeight As Long
Dim aryTmp() As String

ScaleMode = vbCharacters
aryTmp = Split(RichTextBox1.Text, vbCrLf)
lngRows = UBound(aryTmp) + 1
Erase aryTmp

lngHeight = lngRows * (TextHeight("A") + 0.331)
RichTextBox1.Height = lngHeight
End Sub

这是在宋体9号情况下的调整代码,不过还是有些误差!!
cslf 2004-06-30
  • 打赏
  • 举报
回复
//以前做过,我记得当时好象高度按照:行数*120来计算的
120是什么?
richtextbox.font.size*行数,也不对
如果有滚动条,当richtextbox的内容发生变化时,滚动条的值会发生相应变化。关键是滚动条的值是根据什么发生改变?
解决问题再加分。
cslf 2004-06-30
  • 打赏
  • 举报
回复
//在CHANGE事件里改变!!
谢谢回复,具体怎么实现?
liyan010 2004-06-30
  • 打赏
  • 举报
回复
cslf 2004-06-30
  • 打赏
  • 举报
回复
射天狼 2004-06-30
  • 打赏
  • 举报
回复
在CHANGE事件里改变!!
cslf 2004-06-30
  • 打赏
  • 举报
回复
不知道滚动条是捕获一个什么事件来改变滚动条的value。
问题一:怎样获得整个richtextbox.text的高度(动态,richtextbox.text是不停变化的)从而改变richtextbox的高度。
问题二:什么时候改变richtextbox的高度。
cslf 2004-06-30
  • 打赏
  • 举报
回复
可以得到行数,怎样取得每行(每行里字体可能大小不一,可能插有图片)高度?
mxfeng 2004-06-30
  • 打赏
  • 举报
回复
对头!
rainstormmaster 2004-06-30
  • 打赏
  • 举报
回复
先获得文本的行数,在计算出各行文本的高度,最后改变richtextbox的height


1,451

社区成员

发帖
与我相关
我的任务
社区描述
VB 控件
社区管理员
  • 控件
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧