delphi 如何编写使StringGrid中的一列具有Check功能,和CheckBox效果一样


本文整理自网络,侵删。

 如何编写使StringGrid中的一列具有Check功能,和CheckBox效果一样
 unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, Grids;

type
 TForm1 = class(TForm)
 grid: TStringGrid;
 procedure FormCreate(Sender: TObject);
 procedure gridDrawCell(Sender: TObject; ACol, ARow: Integer;
 Rect: TRect; State: TGridDrawState);
 procedure gridClick(Sender: TObject);

 private
{ Private declarations }

 public
{ Public declarations }

end;

var
 Form1: TForm1;
 fcheck,fnocheck:tbitmap;

implementation

{$R *.DFM}

procedure TForm1.FormCreate(Sender: TObject);
var
 i:SmallInt;
 bmp:TBitmap;
begin
 FCheck:= TBitmap.Create;
 FNoCheck:= TBitmap.Create;
 bmp:= TBitmap.create;
 try
   bmp.handle := LoadBitmap( 0, PChar(OBM_CHECKBOXES ));
   With FNoCheck Do Begin
     width := bmp.width div 4;
     height := bmp.height div 3;
     canvas.copyrect( canvas.cliprect, bmp.canvas, canvas.cliprect );
   End;
 With FCheck Do Begin
   width := bmp.width div 4;
   height := bmp.height div 3;
   canvas.copyrect(canvas.cliprect, bmp.canvas, rect( width, 0, 2*width, height ));
 End;
 finally
   bmp.free
 end;
end;

procedure TForm1.gridDrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState);
begin
 if not (gdFixed in State) then
   with TStringGrid(Sender).Canvas do
 begin
   brush.Color:=clWindow;
   FillRect(Rect);
   if Grid.Cells[ACol,ARow]='yes' then
     Draw( (rect.right + rect.left - FCheck.width) div 2, (rect.bottom + rect.top - FCheck.height) div 2, FCheck )
   else
     Draw( (rect.right + rect.left - FCheck.width) div 2, (rect.bottom + rect.top - FCheck.height) div 2, FNoCheck );
 end;
end;

procedure TForm1.gridClick(Sender: TObject);
begin
 if grid.Cells[grid.col,grid.row]='yes' then
   grid.Cells[grid.col,grid.row]:='no'
 else
   grid.Cells[grid.col,grid.row]:='yes';
end;

end.

相关阅读 >>

indy断点续传

Delphi xe7写的一个http post的小测试程序

Delphi 模仿qq截图

Delphi 关于构造方法的重写

Delphi vcl gif 动画

Delphi memo 循环往上往下滚动

Delphi format格式化函数

Delphi 生成xml 方法 与 Delphi txt文件操作

Delphi adoquery连接数据库的查询、插入、删除、修改

Delphi tmemo控件滚动条scrollbar末尾插入字符串一点都会闪烁的轻松实现

更多相关阅读请进入《Delphi》频道 >>



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...