۱۵-اسفند-۱۳۸۶, ۱۵:۵۰:۱۹
۱۶-اسفند-۱۳۸۶, ۱۵:۱۰:۰۴
سوال سختی بود؟؟؟؟؟؟
اگه منظورمو متوجه نشدید این جوری توضیح بدم :
مثلا وقتی توی یک کامپایلر مثلا ویژوال بیسیک یک خط خطا پیدا می کنه
کلا قرمز می شه یا در هنگام اجرا زرد می شه حالا من نمی خوام رنگی
بشه اگر هم بشه طوری نیست ولی کل اون خط خطادار Select بشه
اگه منظورمو متوجه نشدید این جوری توضیح بدم :
مثلا وقتی توی یک کامپایلر مثلا ویژوال بیسیک یک خط خطا پیدا می کنه
کلا قرمز می شه یا در هنگام اجرا زرد می شه حالا من نمی خوام رنگی
بشه اگر هم بشه طوری نیست ولی کل اون خط خطادار Select بشه
۱۶-اسفند-۱۳۸۶, ۱۷:۳۴:۲۷
اینم یک ساب روتین نوشته شده با کمک توابع API واسه اینکار . کافیه اون رو صدا بزنی و خط مورد نظرت رو به عنوان آرگومان بهش بفرستی :
کد:
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" _
(ByVal hwnd As Long, ByVal wMsg As Long, _
ByVal wParam As Long, lParam As Any) As Long
Private Const EM_SETSEL = &HB1
Private Const EM_GETLINECOUNT = &HBA
Private Const EM_LINEINDEX = &HBB
Private Sub SelectLine(pLineNumber As Long)
Dim chrsToStart As Long, chrsToEnd As Long, lineCount As Long
With RichTextBox1
lineCount = SendMessage(.hwnd, EM_GETLINECOUNT, 0, ByVal 0&)
If pLineNumber > lineCount - 1 Then Exit Sub
chrsToStart = SendMessage(.hwnd, EM_LINEINDEX, pLineNumber, ByVal 0&)
chrsToEnd = SendMessage(.hwnd, EM_LINEINDEX, pLineNumber + 1, ByVal 0&)
.SetFocus
Call SendMessage(.hwnd, EM_SETSEL, chrsToStart, ByVal chrsToEnd)
End With
End Sub
۱۷-اسفند-۱۳۸۶, ۱۳:۰۹:۴۳
کد:
Declare Function SendMessage Lib "user32" Alias "SendMessageA" _
(ByVal hwnd As Long, ByVal wMsg As Long, _
ByVal wParam As Long, lParam As Any) As Long
Private Const EM_SETSEL = &HB1
Private Const EM_GETLINECOUNT = &HBA
Private Const EM_LINEINDEX = &HBB
Public Sub SelectLine(pLineNumber As Long, RichTextbox As RichTextbox)
Dim chrsToStart As Long, chrsToEnd As Long, lineCount As Long
With RichTextbox
lineCount = SendMessage(.hwnd, EM_GETLINECOUNT, 0, ByVal 0&)
If pLineNumber > lineCount - 1 Then Exit Sub
chrsToStart = SendMessage(.hwnd, EM_LINEINDEX, pLineNumber, ByVal 0&)
chrsToEnd = SendMessage(.hwnd, EM_LINEINDEX, pLineNumber + 1, ByVal 0&)
.SetFocus
Call SendMessage(.hwnd, EM_SETSEL, chrsToStart, ByVal chrsToEnd)
End With
End Sub
ممنون از کدهایی که گذاشتید ولی من اونا را به صورت زیر در آوردم که
باید در یک ماژول نوشته بشه و برای انتخاب خط درست باید به این صورت
کد ها را تعریف کنید:
کد:
SelectLine Line,RichTextbox
که به جای Line خط مورد نظر که باید منهای 1 بشه را قرار دهید
و به جای Richtextbox باید نام RichTextbox مورد نظر را قرار بدید
مثال برای توضیحات:
کد:
SelectLine 1,Rich1