Изменить цвет определенной части текста VB6? - PullRequest
6 голосов
/ 27 мая 2011

Вот как выглядит мой код

Form1.GRQ.AddItem txtRequest.Text & (" - Pending")

Я просто хочу поменять часть (- Pending) на красный, чтобы она отображалась красным рядом с черным текстом в списке.есть идеи?

Ответы [ 2 ]

10 голосов
/ 27 мая 2011

Используя обычные элементы управления VB6, к сожалению, вы не можете этого сделать. Вы можете изменить цвет all текста текстового поля / списка / метки, используя .ForeColor, но не его части, и это действительно не подходит для вас. К счастью, есть два решения:

  1. Во-первых, продолжать использовать список в том виде, в каком он у вас есть, но добавить подпись с красным текстом с надписью «В ожидании» рядом с нужным текстом. Это не красиво, но вы можете заставить его работать.

  2. Лучшее решение - познакомиться с элементом управления RichTextBox. Это будет работать только в том случае, если у вас есть версия Professional или Enterprise VB6. Предполагается, что в этом случае в меню VB6 выберите «Проект» -> «Компоненты», а затем в новом всплывающем окне на вкладке «Элементы управления» установите флажок «Microsoft Rich TextBox Control 6.0» и нажмите кнопку «ОК». Параметр RichTextBox должен появиться на панели инструментов, вы можете добавить его в форму, как и любой другой объект, и он будет действовать как комбинация listbox / textbox ... это очень полезно. Если вам нужна документация, посмотрите MSDN .

    К сожалению, RichTextBox вроде воняет с точки зрения изменения цвета текста. Это можно сделать, но не с помощью простой команды. Вы должны найти нужный текст, выделить его, а затем установить цвет. (Это также происходит, если вы хотите изменить цвет всего текста - сначала вы должны выбрать все это.) В любом случае, способ сделать это будет:

    RichTextBox1.SelStart = RichTextBox1.Find(" - Pending")
    RichTextBox1.SelLength = 10
    RichTextBox1.SelColor = vbRed

Надеюсь, все это поможет. Желаем удачи!

0 голосов
/ 10 июня 2016

Мне просто нужно показать текст в метке, а затем изменить цвет только на одну или две буквы .

Я создал элемент управления XLabel(0) Label и установил.Visible = False и .Autosize = True.Затем я в основном читаю по одной строке за раз из массива и загружаю новые XLabel() элементы управления, по одному для каждой буквы в строке.

For z = 1 To Len(a)
    Load XLabel(z)
    With XLabel(z)
        .Caption = Mid(a, z, 1)
        .Left = XLabel(z - 1).Left + XLabel(z - 1).Width
        .BackColor = vbWhite
        .Visible = True
    End With
Next z

Поскольку Autosize включен, все метки располагаются близко к одномудругой, как внутри одного элемента управления Label.

Но таким образом вы можете изменить одну букву так, как вам нужно.

Не забудьте выгрузить все элементы управления, прежде чем продолжать, если вообще.

...