⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 在listboxes中加背景图 (2001年1月6日).txt

📁 自己对DELPHI学习的一点体会
💻 TXT
字号:
在Listboxes中加背景图 (2001年1月6日) 

本站更新  分类:   作者:逸仙时空  推荐:   阅读次数:444  
(http://www.codesky.net)  

--------------------------------------------------------------------------------
Delphi 

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; 

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 

 
 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -