正在阅读:Delphi学习:在Listbox加背景图Delphi学习:在Listbox加背景图

2004-05-13 10:23 出处:CSDN 作者:chenzhechenge 责任编辑:linjixiong
  1. 建立一个窗体   2. 放一个ComboBox和Listbox   3. 改变Component的Style为csOwnerDrawVariable和ListBox的Style为lbOwnerDrawVariable。   4. 声明5个TBitmap的全局变量   5. 覆盖Form的OnCreate.   6. 覆盖ComboBox的OnDraw.   7. 覆盖ComboBox的OnMeasureItem.   8. 释放资源在Form的OnClose.      unit Ownerdrw;      interface      uses   SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,   Forms, Dialogs, StdCtrls;      type   TForm1 = class(TForm)   ComboBox1: TComboBox;   ListBox1: TListBox;   procedure FormCreate(Sender: TObject);   procedure FormClose(Sender: TObject; var Action: TCloseAction);   procedure ComboBox1DrawItem(Control: TWinControl; Index: Integer;   Rect: TRect; State: TOwnerDrawState);   procedure ComboBox1MeasureItem(Control: TWinControl; Index: Integer;   var Height: Integer);   procedure ListBox1DrawItem(Control: TWinControl; Index: Integer;   Rect: TRect; State: TOwnerDrawState);   procedure ListBox1MeasureItem(Control: TWinControl; Index: Integer;   var Height: Integer);      private   { Private declarations }      public   { Public declarations }      end;      var   Form1: TForm1;   TheBitmap1, TheBitmap2, TheBitmap3, TheBitmap4,   TheBitmap5 : TBitmap;   implementation      {$R *.DFM}      procedure TForm1.FormCreate(Sender: TObject);   begin   TheBitmap1 := TBitmap.Create;   TheBitmap1.LoadFromFile('C:\delphi\images\buttons\globe.bmp');   TheBitmap2 := TBitmap.Create;   TheBitmap2.LoadFromFile('C:\delphi\images\buttons\video.bmp');   TheBitmap3 := TBitmap.Create;   TheBitmap3.LoadFromFile('C:\delphi\images\buttons\gears.bmp');   TheBitmap4 := TBitmap.Create;   TheBitmap4.LoadFromFile('C:\delphi\images\buttons\key.bmp');   TheBitmap5 := TBitmap.Create;   TheBitmap5.LoadFromFile('C:\delphi\images\buttons\tools.bmp');   ComboBox1.Items.AddObject('Bitmap1: Globe', TheBitmap1);   ComboBox1.Items.AddObject('Bitmap2: Video', TheBitmap2);   ComboBox1.Items.AddObject('Bitmap3: Gears', TheBitmap3);
察看评论详细内容 我要发表评论
作者笔名 简短内容 发表时间
:
  ComboBox1.Items.AddObject('Bitmap4: Key', TheBitmap4);   ComboBox1.Items.AddObject('Bitmap5: Tools', TheBitmap5);   ListBox1.Items.AddObject('Bitmap1: Globe', TheBitmap1);   ListBox1.Items.AddObject('Bitmap2: Video', TheBitmap2);   ListBox1.Items.AddObject('Bitmap3: Gears', TheBitmap3);   ListBox1.Items.AddObject('Bitmap4: Key', TheBitmap4);   ListBox1.Items.AddObject('Bitmap5: Tools', TheBitmap5);      end;      procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);   begin   TheBitmap1.Free;   TheBitmap2.Free;   TheBitmap3.Free;   TheBitmap4.Free;   TheBitmap5.Free;   end;      procedure TForm1.ComboBox1DrawItem(Control: TWinControl; Index: Integer;   Rect: TRect; State: TOwnerDrawState);   var   Bitmap: TBitmap;   Offset: Integer;   begin   with (Control as TComboBox).Canvas do   begin   FillRect(Rect);   Bitmap := TBitmap(ComboBox1.Items.Objects[Index]);   if Bitmap <> nil then   begin   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;   { display the text }   TextOut(Rect.Left + Offset, Rect.Top, Combobox1.Items[Index])   end;   end;      procedure TForm1.ComboBox1MeasureItem(Control: TWinControl; Index:   Integer; var Height: Integer);   begin   height:= 20;   end;      procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer;   Rect: TRect; State: TOwnerDrawState);   var   Bitmap: TBitmap;   Offset: Integer;   begin   with (Control as TListBox).Canvas do   begin   FillRect(Rect);   Bitmap := TBitmap(ListBox1.Items.Objects[Index]);   if Bitmap <> nil then   begin   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;   { display the text }   TextOut(Rect.Left + Offset, Rect.Top, Listbox1.Items[Index])   end;   end;
察看评论详细内容 我要发表评论
作者笔名 简短内容 发表时间
:
     procedure TForm1.ListBox1MeasureItem(Control: TWinControl; Index: Integer;   var Height: Integer);   begin   height:= 20;   end;      end.   //该窗体的DFM文件      object Form1: TForm1   Left = 211   Top = 155   Width = 435   Height = 300   Caption = 'Form1'   Font.Color = clWindowText   Font.Height = -13   Font.Name = 'System'   Font.Style = []   PixelsPerInch = 96   OnClose = FormClose   OnCreate = FormCreate   TextHeight = 16   object ComboBox1: TComboBox   Left = 26   Top = 30   Width = 165   Height = 22   Style = csOwnerDrawVariable   ItemHeight = 16   TabOrder = 0   OnDrawItem = ComboBox1DrawItem   OnMeasureItem = ComboBox1MeasureItem   end   object ListBox1: TListBox   Left = 216   Top = 28   Width = 151   Height = 167   ItemHeight = 16   Style = lbOwnerDrawVariable   TabOrder = 1   OnDrawItem = ListBox1DrawItem   OnMeasureItem = ListBox1MeasureItem   end   end
察看评论详细内容 我要发表评论
作者笔名 简短内容 发表时间
:

相关文章

关注我们

最新资讯离线随时看 聊天吐槽赢奖品