28. december 2000 - 23:57
Der er
1 løsning
Markørposition i Rich Edit bokse?
Kan det lade sig gøre at få fat i markørens position (linje og kolonne) i en Rich Edit boks og skrive output i et statuspanel?
Jeg har nemlig længe savnet en lille, hurtig editor som var lidt mere avanceret end Notepad, så jeg besluttede selv at lave en!
Er der noget der ved hvordan gør dette?
30. december 2000 - 10:26
#1
Lav et modul og sæte dette ind der:
Public Declare Function SendMessage Lib \"user32\" Alias \"SendMessageA\" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Public Const EM_GETLINE = &HC4
Public Const EM_GETLINECOUNT = &HBA
Public Const EM_LINEINDEX = &HBB
Public Const EM_LINELENGTH = &HC1
På formen indsætte denne kode:
Option Explicit
Private Sub Command1_Click()
Unload Me
End Sub
Private Sub Form_Load()
RichTextBox1.LoadFile \"c:\\setuplog.txt\"
MainSub
End Sub
Private Sub RichTextBox1_Change()
MainSub
End Sub
Private Function getLineNumber() As Long
getLineNumber = 1 + RichTextBox1.GetLineFromChar(RichTextBox1.SelStart)
End Function
Private Function getPosNumber() As Long
Dim i As Long
Dim lStart As Long
Dim lLine As Long
lStart = RichTextBox1.SelStart + 1
lLine = 1 + RichTextBox1.GetLineFromChar(RichTextBox1.SelStart)
i = SendMessage(RichTextBox1.hwnd, EM_LINEINDEX, ByVal lLine - 1, ByVal 0&)
getPosNumber = lStart - i
End Function
Private Sub MainSub()
StatusBar1.Panels(\"lines\").Text = \"Line No. \" & getLineNumber
StatusBar1.Panels(\"pos\").Text = \"Position No. \" & getPosNumber
End Sub
Private Sub RichTextBox1_Click()
MainSub
End Sub
Private Sub RichTextBox1_GotFocus()
MainSub
End Sub
Private Sub RichTextBox1_KeyUp(KeyCode As Integer, Shift As Integer)
MainSub
End Sub
Private Sub RichTextBox1_LostFocus()
MainSub
End Sub
Private Sub RichTextBox1_Validate(Cancel As Boolean)
MainSub
End Sub