2007. december 24., hétfő

Combobox with colors


Problem/Question/Abstract:

Combobox with colors

Answer:

It is quite easy to create a combobox that shows a list of colors. You need to set the property "Style" to "csOwnerDrawFixed". This causes a call of "OnDrawItem" for each item in your combobox. The DrawItem routine draws a color bar..


// in FormCreate:
with ComboBox1.Items do
begin
  Add(IntToStr(clRed));
  Add(IntToStr(clFuchsia));
  Add(IntToStr(clBlue));
  Add(IntToStr(clGreen));
  Add(IntToStr(clYellow));
end;

procedure TForm1.ComboBox1DrawItem(Control: TWinControl;
  Index: Integer; Rect: TRect; State: TOwnerDrawState);
begin
  with Control as TComboBox, Canvas do
  begin
    // fill the rectangle first with white
    Brush.Color := clWhite;
    FillRect(Rect);
    // then reduce it and fill it with the color
    InflateRect(Rect, -2, -2);
    Brush.Color := StrToInt(Items[Index]);
    FillRect(Rect);
  end;
end;

Nincsenek megjegyzések:

Megjegyzés küldése