add_graph_listbox_and_combobox.htm
来自「对于学习很有帮助」· HTM 代码 · 共 219 行
HTM
219 行
<HTML>
<!-- #BeginTemplate "/Templates/alltips.dwt" -->
<HEAD>
<TITLE>Delphi爱好者--技巧集</TITLE>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<style type="text/css">
<!--
.font9 { font-size: 9pt; text-decoration: none}
.font105 { font-size: 10.5pt; text-decoration: none}
a:hover { color: #F77C02; text-decoration: underline}
a:active { color: #0000FF; text-decoration: none}
a { color: #0000FF; text-decoration: none}
-->
</style>
</HEAD>
<BODY BGCOLOR="#FFFFFF" class="font9">
<!-- #BeginEditable "head" -->
<p align="center"> <span class="font105"><b><br>
为Listboxes和Comboboxes添加图片</b></span></p>
<p></p>
<p><span class="font105"><br>
</span><span class="font105">这里是一个例子:</span></p>
<p><span class="font105">1. 创建一个form;</span></p>
<p><span class="font105">2. 放置ComboBox、Listbox于其上;</span></p>
<p><span class="font105">3. 改变ComboBoxStyle属性:=csOwnerDrawVariable;ListBox属性为lbOwnerDrawVariable;</span></p>
<p><span class="font105">4. 在Var小节生成5个TBitmap变量;</span></p>
<p><span class="font105">5. 生成Form's OnCreate、</span><span class="font105">ComboBox's
OnDraw、</span><span class="font105">ComboBox's OnMeasureItem、</span><span class="font105">Form's
OnClose事件;</span></p>
<p><span class="font105"><br>
以下是源代码:============================== </span></p>
<p><span class="font105">{START OWNERDRW.PAS}<br>
unit Ownerdrw;</span></p>
<p></p>
<p></p>
<p></p>
<p></p>
<p></p>
<p></p>
<p><span class="font105"> </span><span class="font105">interface</span></p>
<p><span class="font105">uses<br>
SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,<br>
Forms, Dialogs, StdCtrls;</span></p>
<p><span class="font105">type<br>
TForm1 = class(TForm)<br>
ComboBox1: TComboBox;<br>
ListBox1: TListBox;<br>
procedure FormCreate(Sender: TObject);<br>
procedure FormClose(Sender: TObject; var Action: TCloseAction);<br>
procedure ComboBox1DrawItem(Control: TWinControl; Index: Integer;<br>
Rect: TRect; State: TOwnerDrawState);<br>
procedure ComboBox1MeasureItem(Control: TWinControl; Index: Integer;<br>
var Height: Integer);<br>
procedure ListBox1DrawItem(Control: TWinControl; Index: Integer;<br>
Rect: TRect; State: TOwnerDrawState);<br>
procedure ListBox1MeasureItem(Control: TWinControl; Index: Integer;<br>
var Height: Integer);<br>
private<br>
{ Private declarations }<br>
public<br>
{ Public declarations }<br>
end;</span></p>
<p><span class="font105">var<br>
Form1: TForm1;<br>
TheBitmap1, TheBitmap2, TheBitmap3, TheBittmap4,<br>
TheBitmap5 : TBitmap;<br>
implementation</span></p>
<p><span class="font105">{$R *.DFM}</span></p>
<p><span class="font105">procedure TForm1.FormCreate(Sender: TObject);<br>
begin<br>
TheBitmap1 := TBitmap.Create;<br>
TheBitmap1.LoadFromFile('C:\delphi\images\buttons\globe.bmp');</span></p>
<p><span class="font105"> </span><span class="font105">TheBitmap2 := TBitmap.Create;<br>
TheBitmap2.LoadFromFile('C:\delphi\images\buttons\video.bmp');<br>
TheBitmap3 := TBitmap.Create;<br>
TheBitmap3.LoadFromFile('C:\delphi\images\buttons\gears.bmp');<br>
TheBitmap4 := TBitmap.Create;<br>
TheBitmap4.LoadFromFile('C:\delphi\images\buttons\key.bmp');<br>
TheBitmap5 := TBitmap.Create;<br>
TheBitmap5.LoadFromFile('C:\delphi\images\buttons\tools.bmp');<br>
ComboBox1.Items.AddObject('Bitmap1: Globe', TheBitmap1);<br>
ComboBox1.Items.AddObject('Bitmap2: Video', TheBitmap2);<br>
ComboBox1.Items.AddObject('Bitmap3: Gears', TheBitmap3);<br>
ComboBox1.Items.AddObject('Bitmap4: Key', TheBitmap4);<br>
ComboBox1.Items.AddObject('Bitmap5: Tools', TheBitmap5);<br>
ListBox1.Items.AddObject('Bitmap1: Globe', TheBitmap1);<br>
ListBox1.Items.AddObject('Bitmmap2: Video', TheBitmap2);<br>
ListBox1.Items.AddObject('Bitmap3: Gears', TheBitmap3);<br>
ListBox1.Items.AddObject('Bitmap4: Key', TheBitmap4);<br>
ListBox1.Items.AddObject('Bitmap5: Tools', TheBitmap5);</span></p>
<p><span class="font105">end;</span></p>
<p><span class="font105">procedure TForm1.FormClose(Sender: TObject; var Action:
TCloseAction);<br>
begin<br>
TheBitmap1.Free;<br>
TheBitmap2.Free;<br>
TheBitmap3.Free;<br>
TheBitmap4.Free;<br>
TheBitmap5.Free;<br>
end;</span></p>
<p><span class="font105">procedure TForm1.ComboBox1DrawItem(Control: TWinControl;
Index: Integer;<br>
Rect: TRect; State: TOwnerDrawState);<br>
var<br>
Bitmap: TBitmap;<br>
Offset: Integer;<br>
begin<br>
with (Control as TComboBox).Canvas do<br>
begin</span><span class="font105"><br>
FillRect(Rect);<br>
Bitmap := TBitmap(ComboBox1.Items.Objects[Index]);<br>
if Bitmap <> nil then<br>
begin<br>
BrushCopy(Bounds(Rect.Left + 2, Rect.Top + 2, Bitmap.Width,<br>
Bitmap.Height), Bitmap, Bounds(0, 0, Bitmap.Width,<br>
Bitmap.Height), clRed);<br>
Offset := Bitmap.width + 8;<br>
end;<br>
{ display the text }<br>
TextOut(Rect.Left + Offset, Rect.Top, Combobox1.Items[Index])<br>
end;<br>
end;</span></p>
<p><span class="font105">procedure TForm1.ComboBox1MeasureItem(Control: TWinControl;
Index:<br>
Integer; var Height: Integer);<br>
begin<br>
height:= 20;<br>
end;</span></p>
<p><span class="font105">procedure TForm1.ListBox1DrawItem(Control: TWinControl;
Index: Integer;<br>
Rect: TRect; State: TOwnerDrawState);<br>
var<br>
Bitmap: TBitmap;<br>
Offset: Integer;<br>
begin<br>
with (Control as TListBox).Canvas do<br>
begin<br>
FillRect(Rect);<br>
Bitmap := TBitmap(ListBox1.Items.Objects[Index]);<br>
if Bitmap <> nil then<br>
begin<br>
BrushCopy(Bounds(Rect.Left + 2, Rect.Top + 2, Bitmap.Width,<br>
Bitmap.Height), Bitmap, Bounds(0, 0, Bitmap.Width,<br>
Bitmap.Height), clRed);<br>
Offset := Bitmap.width + 8;<br>
end;<br>
{ display the text }</span></p>
<p></p>
<p><span class="font105"><br>
TextOut(Rect.Left + Offset, Rect.Top, Listbox1.Items[Index])<br>
end;<br>
end;</span></p>
<p><span class="font105">procedure TForm1.ListBox1MeasureItem(Control: TWinControl;
Index: Integer;<br>
var Height: Integer);<br>
begin<br>
heeight:= 20;<br>
end;</span></p>
<p><span class="font105">end.<br>
{END OWNERDRW.PAS}</span></p>
<p><span class="font105">{START OWNERDRW.DFM}<br>
object Form1: TForm1<br>
Left = 211<br>
Top = 155<br>
Width = 435<br>
Height = 300<br>
Caption = 'Form1'<br>
Font.Color = clWindowText<br>
Font.Height = -13<br>
Font.Name = 'System'<br>
Font.Style = []<br>
PixelsPerInch = 96<br>
OnClose = FormClose<br>
OnCreate = FormCreate<br>
TextHeight = 16<br>
object ComboBox1: TComboBox<br>
Left = 26<br>
Top = 30<br>
Width = 165<br>
Height = 22<br>
Style = csOwnerDrawVariable<br>
ItemHeight = 16<br>
TabOrder = 0<br>
OnDrawItem = ComboBox1DrawItem<br>
OnMeasureItem = ComboBox1MeasureItem</span></p>
<p></p>
<p></p>
<p><span class="font105"><br>
end<br>
object ListBox1: TListBox<br>
Left = 216<br>
Top = 28<br>
Width = 151<br>
Height = 167<br>
ItemHeight = 16<br>
Style = lbOwnerDrawVariable<br>
TabOrder = 1<br>
OnDrawItem = ListBox1DrawItem<br>
OnMeasureItem = ListBox1MeasureItem<br>
end<br>
end<br>
{END OWNERDRW.DFM}</span></p>
<p> </p>
<br>
<div align="center" class="font9"><span class="font9">『Site:<a href="../index.html" target="_top">delphi爱好者</a>
| E-mail:<a href="mailto:delphifan@990.net%20">delphifan@990.net </a>| Webmaster:<a href="../aboutme.htm" target="_top">梁
明</a>』</span> <br>
<span class="font9">---------------------------------------------------------------------------</span>
</div>
<div align="center"> </div>
<div align="center">
<input type="button" value="返 回" onClick="history.go( -1 );return true;" name="button">
</div>
<!-- #EndEditable -->
</BODY>
<!-- #EndTemplate -->
</HTML>
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?