2011-05-27 9 views

Odpowiedz

10

Korzystanie ze zwykłych kontrolek VB6 niestety nie jest możliwe. Możesz zmienić kolor wszystkie tekst pola/listbox/etykiety przy użyciu .ForeColor, ale nie części z nich, i to naprawdę nie jest dobre dla ciebie. Na szczęście, istnieją dwa rozwiązania:

  1. Pierwszym z nich jest nadal korzystać z listbox jak trzeba, ale dodać w podpisie z czytaniem tekstu czerwony „- Pending” obok tekstu, który chcesz. To nie jest piękne, ale możesz sprawić, żeby działało.

  2. Lepszym rozwiązaniem jest zaznajomienie się z formantem RichTextBox. Będzie to działać tylko, jeśli masz wersję VB6 Professional lub Enterprise. Zakładając, że robisz, w menu VB6, kliknij Project -> Components, a następnie w nowym oknie, które się pojawi, na karcie Controls zaznacz "Microsoft Rich TextBox Control 6.0", a następnie kliknij OK. Opcja RichTextBox powinna pojawić się w przyborniku Toolbox, można ją dodać do formularza jak każdy inny obiekt, a będzie ona działać jak kombinacja listbox/pole tekstowe ... jest bardzo przydatna. Jeśli potrzebujesz dokumentacji na ten temat, check out the MSDN.

    Niestety, RichTextBox trochę śmierdzi, jeśli chodzi o zmianę koloru tekstu. Można to zrobić, ale nie za pomocą prostego polecenia. Musisz znaleźć żądany tekst, wybrać go, a następnie ustawić kolor. (Dotyczy to również, jeśli chcesz zmienić kolor całego tekstu - trzeba to wszystko najpierw zaznaczyć.) W każdym razie, sposobem na to byłoby:

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

Mam nadzieję, że to wszystko pomoże. Powodzenia!

0

Po prostu muszę pokazać jakiś tekst na etykiecie, a następnie zmienić kolor na tylko jedną lub dwiema literami:.

Utworzono kontrolkę Label XLabel(0) i ustaw .Visible = False i .Autosize = True. Potem zasadniczo czytam jeden ciąg na raz z tablicy i ładuję nowe kontrolki XLabel(), po jednym dla każdej litery w ciągu.

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 

Ponieważ funkcja Autosize jest włączona, wszystkie etykiety znajdują się blisko siebie w taki sam sposób, w jaki znajdowałyby się wewnątrz pojedynczego elementu sterującego etykietami.

Ale w ten sposób można zmodyfikować pojedynczą literę tak, jak trzeba.

Pamiętaj, aby wyładować wszystkie elementy sterujące przed przejściem, jeśli w ogóle.