Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Помогите раскрасить ComboBox [D7, XP]


03111978 ©   (2010-09-15 07:26:00) 

Необходимо в комбобоксе иметь 4 цвета при выборе. Т.е. раскрасить итемсы. Можно такое реализовать ?


Джо   (2010-09-15 16:40:00) [1]

procedure TForm1.ComboBox1DrawItem(Control: TWinControl; Index: Integer;
 Rect: TRect; State: TOwnerDrawState);
var
 Clr: TColor;
begin
 case Index of
   0: Clr := clRed;
   1: Clr := clYellow;
   2: Clr := clBlue;
   3: Clr := clGreen;
 end;
 TComboBox(Control).Canvas.Brush.Color := Clr;
 TComboBox(Control).Canvas.FillRect (Rect);
end;


Четыре строки только в комбо добавить в дизайнере.


Джо   (2010-09-15 16:34:00) [2]

Style := csOwnerDrawFixed и в OnDrawItem хоть черта лысого можно рисовать.


03111978   (2010-09-15 08:51:00) [3]

Сделал вот так :


var
i : integer;
begin
 i := 0;
 with colorbox1.Items do
   while i <= Count - 1 do
     if (Strings[i] <> 'clFuchsia') and (Strings[i] <> 'clYellow') and (Strings[i] <> 'clGreen') and (Strings[i] <> 'clWhite') then
       colorbox1.Items.Delete(i)
     else
       inc(i);
end;


Вроде то что надо, но как еще от названий цветов избавиться и эти квадратики с цветами растянуть на все полу комбобокса ?


Ega23   (2010-09-15 08:46:00) [4]


> Там все стандартные цвета, а мне хотелось бы только 4 моих
> цвета.

TColorBox.Style ?


03111978   (2010-09-15 08:35:00) [5]


> Чем TColorBox не устраивает?
>


Там все стандартные цвета, а мне хотелось бы только 4 моих цвета. Можно в нем как то такое реализовать ? Я все облазил, ничего не нашел. Подскажите плиз ....


Ega23   (2010-09-15 08:19:00) [6]

Чем TColorBox не устраивает?


Наверх

Титульная страница Поиск, карта сайта Написать письмо