Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.07.08;
Скачать: CL | DM;

Вниз

[ComboBox] Фон для элементов при открытии   Найти похожие ветки 

 
ins ©   (2007-05-04 19:53) [0]

Есть ли возможность реализовать отображение своего фона для каждого из элементов ComboBox при открытии списка??


 
{RASkov} ©   (2007-05-05 03:28) [1]

Кинь в новом проекте на форму КомбоБокс и пропиши обработчики в ИО

procedure TForm1.FormCreate(Sender: TObject);
var N: Integer;
begin
 Randomize;
 ComboBox1.Style:=csOwnerDrawVariable;
 ComboBox1.Clear;
 for N:=0 to 10 do ComboBox1.AddItem("BLA-BLA", TObject(Random(3)));
 ComboBox1.ItemIndex:=0;
 ComboBox1.DropDownCount:=10;
end;

procedure TForm1.ComboBox1DrawItem(Control: TWinControl; Index: Integer;
 Rect: TRect; State: TOwnerDrawState);
var N: Integer;
begin
 ComboBox1.Canvas.Brush.Color:=RGB(30+Index*15, 30+Index*15, 30+Index*15); //Цвет фона
 ComboBox1.Canvas.FillRect(Rect);

 N:=Integer(ComboBox1.Items.Objects[Index]);
 case N of
  0: INC(Rect.Left, 2);
  1: INC(Rect.Left, 12);
 else INC(Rect.Left, 22);
 end;
 case N of
  0: ComboBox1.Canvas.Font.Color:=clRed;
  1: ComboBox1.Canvas.Font.Color:=clYellow;
 else ComboBox1.Canvas.Font.Color:=clHotLight;
 end;
 INC(Rect.Top);
 if odSelected in State then ComboBox1.Canvas.Brush.Color:=clSkyBlue;
 ComboBox1.Canvas.TextRect(Rect, Rect.Left, Rect.Top, ComboBox1.Items[Index]);
 DEC(Rect.Right, 20);
 ComboBox1.Canvas.Font.Color:=clNavy;
 DrawText(ComboBox1.Canvas.Handle, PChar(IntToStr(Index)), Length(IntToStr(Index)), Rect, DT_RIGHT);
 ComboBox1.Canvas.Pen.Color:=clGreen;
 ComboBox1.Canvas.MoveTo(Rect.Right+7, Rect.Top);
 ComboBox1.Canvas.LineTo(Rect.Right+2, Rect.Bottom-1);
 INC(Rect.Right, 15);
 ComboBox1.Canvas.Font.Color:=clBlue;
 DrawText(ComboBox1.Canvas.Handle, PChar(IntToStr(N)), 1, Rect, DT_RIGHT);
end;

procedure TForm1.ComboBox1MeasureItem(Control: TWinControl; Index: Integer; var Height: Integer);
begin
 Height:=16+Index;
end;


Здесь много чего лишнего(оставил для примера) все - то, что тебе надо, я выделил жирным....


 
{RASkov} ©   (2007-05-05 03:30) [2]

> Здесь много чего лишнего(оставил для примера). Все - то,
> что тебе надо, я выделил жирным....

Но для лучшего понимания, оставь(попробуй) сначала всё как есть....



Страницы: 1 вся ветка

Текущий архив: 2007.07.08;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.028 c
2-1181200742
delphino
2007-06-07 11:19
2007.07.08
Как работать с полем Date?


15-1181307842
Loginov Dmitry
2007-06-08 17:04
2007.07.08
Утечки памяти в Delphi2006


3-1176035051
skichyp
2007-04-08 16:24
2007.07.08
Как заставить БД понимать языки с кракозябрами (армянский и


1-1178550814
Price
2007-05-07 19:13
2007.07.08
Фото в камеру


4-1170336758
Vladix
2007-02-01 16:32
2007.07.08
Завершение некоторых процессов с одинаковым именем