TComboBox 에서 Item 별로 폰트색 등을 다르게 하는 법.
1. ComboBox1.Style:=csOwnerDrawFixed;
2. ComboBox1.DrawItem 함수를 떠덕 만든다.
3. DrawItem 함수를 아래처럼 작성
procedure TForm1.ComboBox1DrawItem(Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState);
var ComboBox: TComboBox absolute Control;
begin
// 선택된 Item 의 배경색을 흰색으로 해주기 위해
if odSelected in State then begin
ComboBox.Canvas.Brush.Color:=clWhite;
ComboBox.Canvas.FillRect(Rect);
end;
// 폰트색을 파란색으로
ComboBox.Canvas.Font.Color:=clBlue;
// Item Add
ComboBox.Canvas.TextOut(Rect.Left, Rect.Top, TComboBox(Control).Items[Index]);
end;
만약 어떤 Flag로 폰트색을 결정해야 한다면 AddObject 를 사용함.
아래의 예는 재직자는 파란색, 퇴사자는 빨간색으로 구분하여 출력하기 위함.
ComboBox Item 추가시
procedure TForm1.Button1Click(Sender: TObject);
begin
// DB에서 사람정보를 가져옴
...
...
// 콤보박스에 넣음.
// AccessPermitFromDB는 Integer형이라고 가정함.
ComboBox1.Items.AddObject(NameFromDB, TObject(AccessPermitFromDB));
end;
DrawItem
procedure TForm1.ComboBox1DrawItem(Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState);
const
재직자=1;
퇴사자=0;
var ComboBox: TComboBox absolute Control;
begin
// 선택된 Item 의 배경색을 흰색으로 해주기 위해
if odSelected in State then begin
ComboBox.Canvas.Brush.Color:=clWhite;
ComboBox.Canvas.FillRect(Rect);
end;
// 재직자, 퇴사자에 따른 폰트색 변경
case Integer(ComboBox.Items.Objects[Index]) of
재직자: ComboBox.Canvas.Font.Color:=clBlue;
퇴사자: ComboBox.Canvas.Font.Color:=clRed;
end;
// Item Add
ComboBox.Canvas.TextOut(Rect.Left, Rect.Top, TComboBox(Control).Items[Index]);
end;
'Delphi' 카테고리의 다른 글
[Delphi] 웹브라우저에 HTML 코드 밀어넣기 (0) | 2009.04.18 |
---|---|
IdHTTP를 이용해 소스 가져와지지 않을 때 (0) | 2009.04.18 |
UTF-8 디코딩 (0) | 2009.04.18 |
[Delphi] TMemo 에서 라인 선택하기 (0) | 2009.04.18 |
[Delphi] 레지스트리 바이너리값 읽기 (0) | 2009.04.18 |