Форум: "Основная";
Текущий архив: 2007.07.08;
Скачать: [xml.tar.bz2];
Вниз[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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.05 c