ODListF.pas
上传用户:fh681027
上传日期:2022-07-23
资源大小:1959k
文件大小:2k
源码类别:

Delphi控件源码

开发平台:

Delphi

  1. unit ODListF;
  2. interface
  3. uses
  4.   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  5.   StdCtrls;
  6. type
  7.   TODListForm = class(TForm)
  8.     ListBox1: TListBox;
  9.     ColorDialog1: TColorDialog;
  10.     procedure ListBox1DrawItem(Control: TWinControl; Index: Integer;
  11.       Rect: TRect; State: TOwnerDrawState);
  12.     procedure FormCreate(Sender: TObject);
  13.     procedure ListBox1DblClick(Sender: TObject);
  14.   private
  15.     { Private declarations }
  16.   public
  17.     procedure AddColors (Colors: array of TColor);
  18.   end;
  19. var
  20.   ODListForm: TODListForm;
  21. implementation
  22. {$R *.DFM}
  23. procedure TODListForm.ListBox1DrawItem(Control: TWinControl; Index: Integer;
  24.   Rect: TRect; State: TOwnerDrawState);
  25. begin
  26.   with Control as TListbox do
  27.   begin
  28.     // erase
  29.     Canvas.FillRect (Rect);
  30.     // draw item
  31.     Canvas.Font.Color := TColor (
  32.       Items.Objects [Index]);
  33.     Canvas.TextOut(Rect.Left, Rect.Top,
  34.       Listbox1.Items[Index]);
  35. //    InflateRect (Rect, -1, -1);
  36.     if (odFocused in State) and (odSelected in State) then
  37.       Canvas.DrawFocusRect (Rect);
  38.    end;
  39. end;
  40. procedure TODListForm.AddColors (Colors: array of TColor);
  41. var
  42.   I: Integer;
  43. begin
  44.   for I := Low (Colors) to High (Colors) do
  45.     ListBox1.Items.AddObject (
  46.       ColorToString (Colors[I]),
  47.       TObject(Colors[I]));
  48. end;
  49. procedure TODListForm.FormCreate(Sender: TObject);
  50. begin
  51.   Canvas.Font := ListBox1.Font;
  52.   ListBox1.ItemHeight := Canvas.TextHeight('0');
  53.   AddColors ([clRed, clBlue, clYellow, clGreen, clFuchsia, clLime, clPurple,
  54.     clGray, RGB (213, 23, 123), RGB (0, 0, 0), clAqua, clNavy, clOlive, clTeal]);
  55. end;
  56. procedure TODListForm.ListBox1DblClick(Sender: TObject);
  57. begin
  58.   if ColorDialog1.Execute then
  59.     AddColors ([ColorDialog1.Color]);
  60. end;
  61. end.
  62.