Q&A

  • 콤보박스에 아이콘 넣는 법???
콤보박스의 각 아이템에 아이콘이나 그림을 넣고 싶은데

답을 아무도 안해 주네요.

불가능한가요?

3  COMMENTS
  • Profile
    김영대 1999.11.22 17:30
    장일형 wrote:

    > 콤보박스의 각 아이템에 아이콘이나 그림을 넣고 싶은데

    > 답을 아무도 안해 주네요.

    > 불가능한가요?



    procedure TForm1.ComboBox1DrawItem(Control: TWinControl;

    Index: Integer; Rect: TRect; State: TOwnerDrawState);

    begin

    with ComboBox1.Canvas do

    begin

    FillRect(Rect); { clear the rectangle }

    BrushCopy(Bounds(Rect.Left, Rect.Top, Image1.Picture.Bitmap.Width, Image1.Picture.Bitmap.Height), Image1.Picture.Bitmap,

    Bounds(0,0, Image1.Picture.Bitmap.Width, Image1.Picture.Bitmap.Height), clRed);

    TextOut(Rect.Left+21, Rect.Top+3, ComboBox1.Items[Index]);

    end;

    end;





  • Profile
    장일형 1999.11.22 18:25
    김영대 wrote:

    > 장일형 wrote:

    > > 콤보박스의 각 아이템에 아이콘이나 그림을 넣고 싶은데

    > > 답을 아무도 안해 주네요.

    > > 불가능한가요?

    >

    > procedure TForm1.ComboBox1DrawItem(Control: TWinControl;

    > Index: Integer; Rect: TRect; State: TOwnerDrawState);

    > begin

    > with ComboBox1.Canvas do

    > begin

    > FillRect(Rect); { clear the rectangle }

    > BrushCopy(Bounds(Rect.Left, Rect.Top, Image1.Picture.Bitmap.Width, Image1.Picture.Bitmap.Height), Image1.Picture.Bitmap,

    > Bounds(0,0, Image1.Picture.Bitmap.Width, Image1.Picture.Bitmap.Height), clRed);

    > TextOut(Rect.Left+21, Rect.Top+3, ComboBox1.Items[Index]);

    > end;

    > end;

    >

    >

    김영대님 답변해 주셔서 감사합니다.

    그런데 폼에 콤보와 이미지를 놓고

    실행해 보니 안되네요

  • Profile
    류한규 1999.11.22 18:47
    안녕하십니까?



    ComboBox1.Style := csOwnerDrawFixed; 로 해야 합니다.

    참고로 아이콘크기가 32 * 32라면 ComboBox11.ItemHeight := 32로 설정해야만

    이미지가 짤리지 않겠지요....

    그리고 여러개의 아이콘을 콤보박스에 넣으려면 ImageList를 활용하면 됩니다.













    장일형 wrote:

    > 김영대 wrote:

    > > 장일형 wrote:

    > > > 콤보박스의 각 아이템에 아이콘이나 그림을 넣고 싶은데

    > > > 답을 아무도 안해 주네요.

    > > > 불가능한가요?

    > >

    > > procedure TForm1.ComboBox1DrawItem(Control: TWinControl;

    > > Index: Integer; Rect: TRect; State: TOwnerDrawState);

    > > begin

    > > with ComboBox1.Canvas do

    > > begin

    > > FillRect(Rect); { clear the rectangle }

    > > BrushCopy(Bounds(Rect.Left, Rect.Top, Image1.Picture.Bitmap.Width, Image1.Picture.Bitmap.Height), Image1.Picture.Bitmap,

    > > Bounds(0,0, Image1.Picture.Bitmap.Width, Image1.Picture.Bitmap.Height), clRed);

    > > TextOut(Rect.Left+21, Rect.Top+3, ComboBox1.Items[Index]);

    > > end;

    > > end;

    > >

    > >

    > 김영대님 답변해 주셔서 감사합니다.

    > 그런데 폼에 콤보와 이미지를 놓고

    > 실행해 보니 안되네요