关于textbox控件的几个问题

zd3824812 2007-06-08 08:47:34
vb 中的textbox控件:1.哪个属性可以提供它的总行数
2.是否可得到光标的位置,怎样得到?
3.怎样从文件中读到内容
...全文
209 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
junki 2007-06-09
  • 打赏
  • 举报
回复
用API实现,如楼上的所示
VBAdvisor 2007-06-08
  • 打赏
  • 举报
回复
You can find UEFLoadTextFile Function at the following link:

中国最佳原创:[VB6]支持UTF文本文件访问的模块
http://blog.csdn.net/zyl910/archive/2006/05/30/762693.aspx

转贴:[VB6]支持UTF文本文件访问的模块
http://chenoe.com/blog/article.asp?id=2030
VBAdvisor 2007-06-08
  • 打赏
  • 举报
回复
1.哪个属性可以提供它的总行数
Dim lhWnd as long
lhWnd =Text1.hwnd
LineCount = SendMessage(lhWnd , EM_GETLINECOUNT, 0&, 0&)

2.是否可得到光标的位置,怎样得到?
Private Type POINTAPI
x As Long
y As Long
End Type

Private Declare Function GetCaretPos& Lib "user32" (lpPoint As POINTAPI)
Public Property Get CurrentColumn() As Long

Dim lCharPos As Long
Dim lResult As Long
Dim udtPT As POINTAPI

GetCaretPos udtPT
lCharPos = MakeDWord(CInt(udtPT.y), CInt(udtPT.x))
lResult = SendMessage(m_hWndEB, EM_CHARFROMPOS, ByVal 0&, ByVal lCharPos)
lCharPos = LoWord(lResult)
CurrentColumn = lCharPos - SendMessage(m_hWndEB, EM_LINEINDEX, ByVal -1, 0&)

End Property

Function LoWord(ByVal DWord As Long) As Integer

If DWord And &H8000& Then
LoWord = DWord Or &HFFFF0000
Else
LoWord = DWord And &HFFFF&
End If

End Function

Function HiWord(ByVal DWord As Long) As Integer

HiWord = (DWord And &HFFFF0000) \ 65536

End Function

Function MakeDWord(wHi As Integer, wLo As Integer) As Long

If wHi And &H8000& Then
MakeDWord = (((wHi And &H7FFF&) * 65536) Or (wLo And &HFFFF&)) Or &H80000000
Else
MakeDWord = (wHi * 65536) + wLo
End If

End Function

3.怎样从文件中读到内容
Private Function OpenDoc(ByVal sFIle As String) As Boolean
Dim iFile As Integer
Dim sBuf As String

On Error GoTo ErrorHandler
If sFIle = "" Then
' pick file
If Not m_cComDlg.VBGetOpenFileName(sFIle, , , , , , "Text Files (*.TXT)|*.TXT|Web Pages (*.HTML;*.HTM)|*.HTML;*.HTM|Resource Compiler Files (*.RC)|*.RC|VB Files (*.VBP;*.FRM;*.BAS;*.CLS;*.CTL)|*.VBP;*.FRM;*.BAS;*.CLS;*.CTL|C Files (*.H;*.C;*.CPP)|*.H;*.C;*.CPP|SQL Files (*.SQL)|*.SQL|Report Files (*.RPT)|*.RPT|All Files (*.*)|*.*", 1, , "Pick File to Open", "TXT", Me.hwnd) Then
Exit Function
End If
End If

iFile = FreeFile
Open sFIle For Binary Access Read Lock Write As #iFile
sBuf = Space$(LOF(iFile))
Get #iFile, , sBuf
Close #iFile
iFile = 0
m_sFileName = sFIle
txtTest.Text = UEFLoadTextFile(pvStripNulls(m_sFileName)) 'sBuf
SetTitle

Exit Function

ErrorHandler:
Dim lErr As Long, sErr As String
lErr = Err.Number: sErr = Err.Description
If lErr <> 26001 Then ' cd cancel
If iFile <> 0 Then
Close #iFile
End If
MsgBox "An error occurred:" & sErr, vbExclamation
End If
Exit Function
End Function

1,451

社区成员

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

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