Q&A

  • 콤포박스에 이미지를 넣을 수 있나요?
콤보박스에 이미지 넣는 방법을 알고 싶습니다.
10개정도의 이미지를 넣어서 인덱스로 사용해야 하는데..
사용하는 델파이는 5.0 버젼입니다.

아시는 분 계시면..부탁 드립니다.
2  COMMENTS
  • Profile
    KDDG_zzang 2002.06.01 01:47

    출처 : Torry's Delphi

    // This code works also with a TListBox

    var
      Bitmap1, Bitmap2, Bitmap3, Bitmap4: TBitmap;

    procedure TForm1.FormCreate(Sender: TObject);
    begin
      ComboBox1.Style := csOwnerDrawVariable;

      //Set height of one item
      ComboBox1.ItemHeight := 20;

      //load all bitmaps

      Bitmap1 := TBitmap.Create;
      Bitmap1.LoadFromFile('chem16.bmp');

      Bitmap2 := TBitmap.Create;
      Bitmap2.LoadFromFile('chip16.bmp');

      Bitmap3 := TBitmap.Create;
      Bitmap3.LoadFromFile('factry16.bmp');

      Bitmap4 := TBitmap.Create;
      Bitmap4.LoadFromFile('skylin16.bmp');

      //assign bitmaps with item objects - caption of the items: Bitmap 1 - Bitmap 4

      ComboBox1.Items.AddObject('Bitmap 1', Bitmap1);
      ComboBox1.Items.AddObject('Bitmap 2', Bitmap2);
      ComboBox1.Items.AddObject('Bitmap 3', Bitmap3);
      ComboBox1.Items.AddObject('Bitmap 4', Bitmap4);
    end;

    procedure TForm1.ComboBox1DrawItem(Control: TWinControl; Index: Integer;
      Rect: TRect; State: TOwnerDrawState);
    var
      Bitmap: TBitmap;
      Offset: Integer;
    begin
      offset := 0;
      with ComboBox1.Canvas do
      begin
        FillRect(Rect);
        Bitmap := TBitmap(ComboBox1.Items.Objects[Index]);
        if Bitmap <> nil then
        begin
          //copy bitmap to combobox coordinate
          BrushCopy(Bounds(Rect.Left + 2, Rect.Top + 2, Bitmap.Width,
            Bitmap.Height), Bitmap, Bounds(0, 0, Bitmap.Width,
            Bitmap.Height), clred);
          Offset := Bitmap.Width + 8;
        end;
        //Set a caption to each item
        TextOut(Rect.Left + Offset, Rect.Top, Combobox1.Items[Index]);
      end;
    end;

    procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
    begin
      //free all bitmap objects
      bitmap1.Free;
      bitmap2.Free;
      bitmap3.Free;
      bitmap4.Free;
    end;

  • Profile
    플러스원 2002.06.01 12:16
    정말 감사합니다. 토리스 델파이에 있었군요~~
    ^^ 너무너무 감사합니다.