3

テキストボックス内に出力している文字列の特定の部分を操作したいVB6アプリケーションがあります。

txtPhoneNums.Text = "Home:  " + strHomeNo + vbCrLf _
                    + "Mobile: " + strMobileNo + vbCrLf + "Work:  " + strWorkNo + vbCrLf

さまざまな検証を実行する if ステートメント内にネストされています。たとえば、上記のスニペットで、「Work」という単語と追加された文字列値「strWorkNo」を赤とフォントの太字で強調表示できるようにしたいと考えています。複数のテキストボックスを作成せずに (そして他の 2 つの値をデフォルトの外観のままにして)、これを簡単に行うことはできますか?

ありがとう。

わかりやすくするために画像を追加しました。2 つのヌル フィールド文字列を赤く太字にしたいと考えています。ここに画像の説明を入力

4

1 に答える 1

4

RichTextBox を使用したい。リッチ テキスト形式 (RTF) 自体をいじろうとするのではなく、標準的な方法を使用することをお勧めします。

コードは次のように変更されます。

Option Explicit

Private Sub Command1_Click()
    WritePhoneNums "01020239", "07749383", "0234394349"
End Sub

Private Sub WritePhoneNums(ByRef strHomeNo As String, ByRef strMobileNo As String, ByRef strWorkNo As String)

    Dim nPosBeginningOfWorkNo As Long
    Dim nPosCurrent As Long

    txtPhoneNums.TextRTF = vbNullString ' Clear existing code.

    ' Clear style to default.
    ApplyNormalStyle txtPhoneNums

    ' Enter standard text. The selection will be at the end of the text when finished.
    txtPhoneNums.SelText = "Home:  " + strHomeNo + vbCrLf _
                         & "Mobile: " + strMobileNo + vbCrLf + "Work:  "

    ' Save the cursor position, write the work number, and then save the cursor position again.
    nPosBeginningOfWorkNo = txtPhoneNums.SelStart
    txtPhoneNums.SelText = strWorkNo
    nPosCurrent = txtPhoneNums.SelStart

    ' From this information, select the preceding text, and make it "selected".
    txtPhoneNums.SelStart = nPosBeginningOfWorkNo
    txtPhoneNums.SelLength = nPosCurrent - nPosBeginningOfWorkNo
    ApplyHighlightedStyle txtPhoneNums

    ' Reset the selection to the end, and reset the text style.
    txtPhoneNums.SelStart = nPosCurrent
    txtPhoneNums.SelLength = 0
    ApplyNormalStyle txtPhoneNums

    txtPhoneNums.SelText = vbCrLf

End Sub

Private Sub ApplyNormalStyle(ByRef txt As RichTextBox)
    txt.SelBold = False
    txt.SelColor = vbBlack
End Sub

Private Sub ApplyHighlightedStyle(ByRef txt As RichTextBox)
    txt.SelBold = True
    txt.SelColor = vbRed
End Sub
于 2012-08-28T15:28:33.307 に答える