|
Вопрос # 2 120/ вопрос открыт / |
|
Приветствую, уважаемые эксперты!
помогите мне пожалуйста!
Мне нужно, чтобы при выборе итема в TCheckListBox
цвет итема стал красным, а при следующем клике становился обратно белым. Помогите пожалуйста! Заранее спасибО!
 |
Вопрос задал: Ruslan (статус: 1-ый класс)
Вопрос отправлен: 25 ноября 2008, 18:41
Состояние вопроса: открыт, ответов: 1.
|
Ответ #1. Отвечает эксперт: DNK
Здравствуйте, Ruslan!
Данный код у меня отлично работал. Не забудьте перевести свойство Style в lbOwnerDrawFixed.
Приложение: Переключить в обычный режим- procedure TForm1.CheckListBox1DrawItem(Control: TWinControl;
- Index: Integer; Rect: TRect; State: TOwnerDrawState);
- begin
- with TCheckListBox(Control) do begin
- if cbChecked = State[Index] then
- Canvas.Font.Color := clRed
- else
- Canvas.Font.Assign(Font);
- Canvas.TextRect(Rect, 20, Rect.Top, items[Index]);
- end;
- end;
-
- procedure TForm1.CheckListBox1ClickCheck(Sender: TObject);
- begin
- TCheckListBox(Sender).Repaint
- end;
 |
Ответ отправил: DNK (статус: Студент)
Время отправки: 25 ноября 2008, 22:18
|
Мини-форум вопроса
Всего сообщений: 3; последнее сообщение — 25 ноября 2008, 19:13; участников в обсуждении: 2.
|
Вадим К (статус: Академик), 25 ноября 2008, 18:44 [#1]:
Написать обработчик DrawItem?
Галочка "подтверждения прочтения" - вселенское зло.
|
|
Ruslan (статус: 1-ый класс), 25 ноября 2008, 18:59 [#2]:
вроде бы в процедуре procedure TForm3.CheckListBoxClickCheck(Sender: TObject);
Можно подробнее про DrawItem
|
|
Ruslan (статус: 1-ый класс), 25 ноября 2008, 19:13 [#3]:
Вот процедура, в которой нужно "делать" итем красным либо белым
procedure TForm3.CheckListBoxClickCheck(Sender: TObject);
var
C :tColor;
H :Integer;
begin
with Sender as TCheckListBox do begin
C := clWhite;
if Checked[ItemIndex] then
C := clRed;
H := ItemHeight * (ItemIndex*2 +1) div 2;
with TImage(Tag) do begin
Canvas.Pen.Color := C;
Canvas.Pen.Style:=psSolid;
Canvas.MoveTo(0, Height div 2);
Canvas.LineTo(Width-1, H) ;
end;
end;
end;
в этой процедуре рисуются линии, от изображения к CheckListBoxу,
процедуру нужно дополнить, чтобы еще и итем становился красным или белым!!
Но DrawItem для CheckListBoxa не подходит!
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|