2017-12-10 4 views
1

Ich versuche, die Schriftfarbe eines ListBoxItems zur Laufzeit zu ändern. Ich bin in der Lage, die Farbe ohne Problem zur Entwurfszeit zu ändern, indem ich die FontColor-Eigenschaft verwende, aber ich muss die Schriftfarbe zur Laufzeit ändern. Im folgenden Beispiel wird die Schriftfarbe nicht geändert.Ändern der Listbox-Elementschriftfarbe zur Laufzeit

var 
    ListBoxItem : TListboxItem; 
begin 
    ListBoxItem := TlistBoxItem.Create(ListBox1); 

    ListBoxItem.Text := Edit1.Text; 
    ListBoxItem.ItemData.Detail := Edit2.Text; 
    ListBoxItem.StyleLookup := 'listboxitembottomdetail'; 
    ListBoxItem.TextSettings.FontColor := TAlphaColorRec.Blue; 
    ListBoxItem.Height := 34; 
    ListBox1.AddObject(ListBoxitem); 

end; 

Der obige Code sollte ein Element zu ListBox1 mit der definierten Farbe hinzufügen, aber es kommt noch hinzu, das Element mit der Standardschriftfarbe.

+3

hinzufügen 'ListBoxItem.StyledSettings: = ListBoxItem.StyledSettings - [TStyledSetting.FontColor];'. – Victoria

Antwort

0

Das Folgende ist für Delphi 10.1 Berlin getestet

Um sowohl die Farbe normal und Detail Schriftart ändern Sie die Nutzung der StyleLookup Eigenschaft mit Ihrem eigenen Stil machen.

Zur Entwurfszeit in Ihrem Hauptformular eine TListBox erstellen und eine TListBoxItem hinzufügen. Gehen Sie zu den TListBoxItem Eigenschaften und stellen Sie die StyleLookup zu listboxitembottomdetail. Danach klicken Sie mit der rechten Maustaste auf die TListBoxItem und wählen Edit custom style...

Nun im Stil Designer öffnen Sie den Baum ListBoxItem1Style1. Hier finden Sie die Text- und Detailelemente. Dort kann die Schriftfarbe beliebig eingestellt werden. Stellen Sie sicher, dass Sie speichern.

Dann, nach dem Stil hinzufügen, können Sie Ihren Code so etwas wie dies einstellen:

var 
    ListBoxItem : TListboxItem; 
begin 
    ListBoxItem := TListBoxItem.Create(ListBox1); 
    ListBoxItem.Text := Edit1.Text; 
    ListBoxItem.ItemData.Detail := Edit2.Text; 
    ListBoxItem.StyleLookup := 'ListBoxItem1Style1'; 
    ListBoxItem.Height := 34; 
    ListBox1.AddObject(ListBoxitem); 
end; 
Verwandte Themen