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

Delphi控件源码

开发平台:

Delphi

  1. unit ODListF;
  2. interface
  3. uses
  4.   Qt, SysUtils, Classes, QGraphics, QControls, QForms, QDialogs,
  5.   QStdCtrls, Types;
  6. type
  7.   TODListForm = class(TForm)
  8.     ListBox1: TListBox;
  9.     ColorDialog1: TColorDialog;
  10.     procedure FormCreate(Sender: TObject);
  11.     procedure ListBox1DblClick(Sender: TObject);
  12.     procedure ListBox1DrawItem(Sender: TObject; Index: Integer;
  13.       Rect: TRect; State: TOwnerDrawState; var Handled: Boolean);
  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 *.xfm}
  23. procedure TODListForm.AddColors (Colors: array of TColor);
  24. var
  25.   I: Integer;
  26. begin
  27.   for I := Low (Colors) to High (Colors) do
  28.     ListBox1.Items.AddObject (
  29.       ColorToString (Colors[I]),
  30.       TObject(Colors[I]));
  31. end;
  32. function RGB (red, green, blue: Byte): Cardinal;
  33. begin
  34.   Result := blue + green * 256 + red * 256 * 256;
  35. end;
  36. procedure TODListForm.FormCreate(Sender: TObject);
  37. begin
  38.   Canvas.Font := ListBox1.Font;
  39.   ListBox1.ItemHeight := Canvas.TextHeight('0');
  40.   AddColors ([clRed, clBlue, clYellow, clGreen, clFuchsia, clLime, clPurple,
  41.     clGray, RGB (213, 23, 123), RGB (0, 0, 0), clAqua, clNavy, clOlive, clTeal]);
  42. end;
  43. procedure TODListForm.ListBox1DblClick(Sender: TObject);
  44. begin
  45.   if ColorDialog1.Execute then
  46.     AddColors ([ColorDialog1.Color]);
  47. end;
  48. procedure TODListForm.ListBox1DrawItem(Sender: TObject; Index: Integer;
  49.   Rect: TRect; State: TOwnerDrawState; var Handled: Boolean);
  50. begin
  51.   with Sender as TListbox do
  52.   begin
  53.     // erase
  54.     Canvas.FillRect (Rect);
  55.     // draw item
  56.     Canvas.Font.Color := TColor (
  57.       Items.Objects [Index]);
  58.     Canvas.TextOut(Rect.Left, Rect.Top,
  59.       Listbox1.Items[Index]);
  60. //    InflateRect (Rect, -1, -1);
  61.     if (odFocused in State) and (odSelected in State) then
  62.       Canvas.DrawFocusRect (Rect);
  63.    end;
  64. end;
  65. end.
  66.