Изменить цвет определенной части текста VB6?

#text #colors #vb6

#текст #Цвет #vb6

Вопрос:

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

 Form1.GRQ.AddItem txtRequest.Text amp; (" - Pending")
  

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

Ответ №1:

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

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

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

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

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

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

Ответ №2:

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

Я создал 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
  

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

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

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