2011-12-19 97 views
12

Có thể thay đổi màu tiêu điểm lựa chọn mục và màu văn bản trong TListBox không?Làm cách nào để vẽ mục hộp danh sách đã chọn bằng màu khác?

Khi chủ đề không được bật trong dự án hoặc kiểu hộp danh sách được đặt thành chủ sở hữu, lựa chọn xung quanh mục được tô màu xanh, điều tôi tin là được xác định toàn cục theo cài đặt giao diện của hệ thống.

Tôi muốn thay đổi màu của các mục đã chọn thành màu tùy chỉnh.

Vì vậy, ví dụ, kết quả sẽ là một cái gì đó như thế này:

enter image description here

Note ListBox cuối cùng đã được sửa đổi trong Paint để minh họa cho ví dụ.

Trả lời

18

thử điều này:

procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer; 
    Rect: TRect; State: TOwnerDrawState); 
begin 
    with (Control as TListBox).Canvas do 
    begin 
    if odSelected in State then 
     Brush.Color := $00FFD2A6; 

    FillRect(Rect); 
    TextOut(Rect.Left, Rect.Top, (Control as TListBox).Items[Index]); 
    if odFocused In State then begin 
     Brush.Color := ListBox1.Color; 
     DrawFocusRect(Rect); 
    end; 
    end; 
end; 
+0

công trình nhờ xuất sắc @SimaWB –

+4

@Craig - Đảm bảo người dùng không có tương tự như màu sắc văn bản cửa sổ. –

+0

Cảm ơn @Sertac Tôi sẽ xem xét điều đó. –

0

tôi thấy, bất động sản Phong cách phải được lbOwnerDrawFixed

Các vấn đề liên quan