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

Delphi控件源码

开发平台:

Delphi

  1. unit DrawForm;
  2. interface
  3. uses
  4.   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  5.   DBTables, DB, Grids, DBGrids, ExtCtrls, StdCtrls, DBCtrls;
  6. type
  7.   TForm1 = class(TForm)
  8.     DataSource1: TDataSource;
  9.     DBGrid1: TDBGrid;
  10.     Table1: TTable;
  11.     Table1SpeciesNo: TFloatField;
  12.     Table1Category: TStringField;
  13.     Table1Common_Name: TStringField;
  14.     Table1Lengthcm: TFloatField;
  15.     Table1Notes: TMemoField;
  16.     Table1Graphic: TGraphicField;
  17.     procedure DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
  18.       DataCol: Integer; Column: TColumn; State: TGridDrawState);
  19.     procedure FormCreate(Sender: TObject);
  20.     procedure Table1NotesGetText(Sender: TField; var Text: String;
  21.       DisplayText: Boolean);
  22.     procedure Table1NotesSetText(Sender: TField; const Text: String);
  23.   private
  24.     { Private declarations }
  25.   public
  26.     { Public declarations }
  27.   end;
  28. var
  29.   Form1: TForm1;
  30. implementation
  31. {$R *.DFM}
  32. procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
  33.   DataCol: Integer; Column: TColumn; State: TGridDrawState);
  34. var
  35.   Bmp: TBitmap;
  36.   OutRect: TRect;
  37.   BmpWidth: Integer;
  38. begin
  39.   // default output rectangle
  40.   OutRect := Rect;
  41.   if Column.Field = Table1Common_Name then
  42.   begin
  43.     // draw the image
  44.     Bmp := TBitmap.Create;
  45.     try
  46.       Bmp.Assign (Table1Graphic);
  47.       BmpWidth := (Rect.Bottom - Rect.Top) * 2;
  48.       OutRect.Right := Rect.Left + BmpWidth;
  49.       DBGrid1.Canvas.StretchDraw (OutRect, Bmp);
  50.     finally
  51.       Bmp.Free;
  52.     end;
  53.     // reset output rectangle, leaving space for the graphic
  54.     OutRect := Rect;
  55.     OutRect.Left := OutRect.Left + BmpWidth;
  56.   end;
  57.   // red font color if length > 100
  58.   if (Column.Field = Table1Lengthcm) and
  59.       (Table1Lengthcm.AsInteger > 100) then
  60.     DBGrid1.Canvas.Font.Color := clRed;
  61.   // default drawing
  62.   DBGrid1.DefaultDrawDataCell (OutRect, Column.Field, State);
  63. end;
  64. procedure TForm1.FormCreate(Sender: TObject);
  65. begin
  66.   Table1.Active := True;
  67. end;
  68. procedure TForm1.Table1NotesGetText(Sender: TField; var Text: String;
  69.   DisplayText: Boolean);
  70. begin
  71.   Text := Trim (Sender.AsString);
  72. end;
  73. procedure TForm1.Table1NotesSetText(Sender: TField; const Text: String);
  74. begin
  75.   Sender.AsString := Text;
  76. end;
  77. end.