ايران ويج

نسخه‌ی کامل: انتخاب یک خط از RichTextBox
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
سلام به شما دوستان.

من می خواستم بدونم که چه جوری می شه خط مورد نظر در خطوط

یک RichTextBox انتخاب بشه(از راه کدنویسی)
سوال سختی بود؟؟؟؟؟؟

اگه منظورمو متوجه نشدید این جوری توضیح بدم :

مثلا وقتی توی یک کامپایلر مثلا ویژوال بیسیک یک خط خطا پیدا می کنه

کلا قرمز می شه یا در هنگام اجرا زرد می شه حالا من نمی خوام رنگی

بشه اگر هم بشه طوری نیست ولی کل اون خط خطادار 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
که خط دوم از کنترل Rich1 را انتخاب میکنه