delphi 给 TComboBox 添加图标  
官方Delphi 学习QQ群: 682628230(三千人)\n
频道

delphi 给 TComboBox 添加图标


本例效果图:

 

代码文件:

unit Unit1;

 

interface

 

uses

  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

  Dialogs, StdCtrls, ImgList, ComCtrls;

 

type

  TForm1 = class(TForm)

    ComboBox1: TComboBox;

    ImageList1: TImageList;

    procedure FormCreate(Sender: TObject);

    procedure ComboBox1DrawItem(Control: TWinControl; Index: Integer;

      Rect: TRect; State: TOwnerDrawState);

    procedure FormDestroy(Sender: TObject);

  end;

 

var

  Form1: TForm1;

 

implementation

 

{$R *.dfm}

 

var

  Bits: array[0..3] of TBitmap;

 

procedure TForm1.FormCreate(Sender: TObject);

var

  i: Integer;

begin

  for i := 0 to Length(Bits)-1 do

  begin

    Bits[i] := TBitmap.Create;

    ImageList1.GetBitmap(i, Bits[i]);

    ComboBox1.Items.Add(Format('Item %d', [i]));

  end;

 

  ComboBox1.Style := csOwnerDrawVariable;

  ComboBox1.ItemHeight := Bits[0].Height + 4;

  ComboBox1.ItemIndex := 0;

end;

 

procedure TForm1.ComboBox1DrawItem(Control: TWinControl; Index: Integer;

  Rect: TRect; State: TOwnerDrawState);

begin

  ComboBox1.Canvas.FillRect(Rect);

 

  ComboBox1.Canvas.BrushCopy(Bounds(Rect.Left+2, Rect.Top+2, Bits[Index].Width, Bits[Index].Height), 

                             Bits[Index],

                             Bounds(0, 0, Bits[Index].Width, Bits[Index].Height),

                             clBlack);

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

end;

 

procedure TForm1.FormDestroy(Sender: TObject);

var

  i: Integer;

begin

  for i := 0 to Length(Bits)-1 do

    Bits[i].Free;

end;

 

end.


推荐分享
图文皆来源于网络,内容仅做公益性分享,版权归原作者所有,如有侵权请告知删除!
 

Copyright © 2014 DelphiW.com 开发 源码 文档 技巧 All Rights Reserved
晋ICP备14006235号-8 晋公网安备 14108102000087号

执行时间: 0.045170068740845 seconds