Chinaunix首页 | 论坛 | 博客
  • 博客访问: 16495607
  • 博文数量: 5645
  • 博客积分: 9880
  • 博客等级: 中将
  • 技术积分: 68081
  • 用 户 组: 普通用户
  • 注册时间: 2008-04-28 13:35
文章分类

全部博文(5645)

文章存档

2008年(5645)

我的朋友

分类:

2008-04-28 20:47:11

下载本文示例代码
elphi 1. 建立一个窗体 2. 放一个ComboBox和Listbox 3. 改变Component的Style为csOwnerDrawVariable和ListBox的Style为lbOwnerDrawVariabble。 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; Th tmap3.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 elphi 1. 建立一个窗体 2. 放一个ComboBox和Listbox 3. 改变Component的Style为csOwnerDrawVariable和ListBox的Style为lbOwnerDrawVariabble。 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; Th tmap3.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 下载本文示例代码


在Listboxes中加背景图在Listboxes中加背景图在Listboxes中加背景图在Listboxes中加背景图在Listboxes中加背景图在Listboxes中加背景图在Listboxes中加背景图在Listboxes中加背景图在Listboxes中加背景图在Listboxes中加背景图在Listboxes中加背景图在Listboxes中加背景图在Listboxes中加背景图在Listboxes中加背景图在Listboxes中加背景图
阅读(116) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~