类似DreamweaverMX代码窗体中的行号栏与代码栏的同步是怎样实现的?

biozafeng 2004-03-17 11:53:53
DWMX代码窗口中,左侧的行号是固定不可编辑的,右侧是可以进行编辑的代码栏。无论是键盘还是招标对代码栏进行操作,左侧的行号栏都会与之同步。请问各位大侠这是如何实现的?
...全文
46 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
biozafeng 2004-03-19
  • 打赏
  • 举报
回复
明白。
实在没办法,偶只能做一个没这种功能的界面了。不爽,有机会一定好好分析一下。
biozafeng 2004-03-18
  • 打赏
  • 举报
回复
谢谢各位。
从文本框中获得当前的行号是个很简单的问题。小弟我的编程能力解决这个问题还是很容易的。
而我不能想通的问题是:如何在文本框的滚动条拖动时,左侧的行号栏也随之一起滚动并显示行号。另外行号栏显示应该是多行的。
supergreenbean 2004-03-18
  • 打赏
  • 举报
回复
涉及到窗口滚动和文字高度获得等问题
qyii 2004-03-18
  • 打赏
  • 举报
回复
得到当前光标所在的行号.............
在 Form 中放入一个 TextBox 并将 Multiline 属性设为 True,放入一个 Label 用来显示目前光标所在的行数。只列出了键盘事件,你可以相应加入鼠标事件!

Private Declare Function SendMessageLong Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long

Const EM_LINEFROMCHAR = &HC9

Function LineNo(txthwnd As Long) As Long
On Local Error Resume Next
LineNo = SendMessageLong(txthwnd, EM_LINEFROMCHAR, -1&, 0&) + 1
LineNo = Format$(lineno, "##,###")
End Function

'呼叫这个模组时要导入的是 TextBox 的 hwnd
'实际使用时,必须在 TextBox 的以下几个事件中呼叫这个模组,才会完全正确:
'1. Change事件:输入资料时可侦测计算
'2. Click 事件:用鼠标移动光标时可侦测计算
'3. KeyUp 事件:用上下左右键移动光标时可侦测计算

Private Sub Text1_Change()
Label1 = LineNo(Text1.hwnd)
End Sub

Private Sub Text1_Click()
Label1 = LineNo(Text1.hwnd)
End Sub

Private Sub Text1_KeyUp(KeyCode As Integer, ShIft As Integer)
Label1 = LineNo(Text1.hwnd)
End Sub
biozafeng 2004-03-18
  • 打赏
  • 举报
回复
自已顶一下。
kmzs 2004-03-18
  • 打赏
  • 举报
回复
有点像cmax
biozafeng 2004-03-18
  • 打赏
  • 举报
回复
同志们再给我点启发!
staronline 2004-03-18
  • 打赏
  • 举报
回复
onchange 时候 得到 当前 行号 更新左面的标注 我做过的很简单就可以实现

7,763

社区成员

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

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