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 &lt;&gt; 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 &lt;&gt; 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>&nbsp;</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 + -
显示快捷键?