给TstringGrid加入CheckBox
var
Form2: TForm2;
fcheck,fnocheck:tbitmap;
implementation
{$R *.DFM}
procedure TForm2.FormCreate(Sender: TObject);
var
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 TForm2.gridClick(Sender: TObject);
begin
if grid.Cells[grid.col,grid.row] <> 'yes' then
grid.Cells[grid.col,grid.row]:='yes'
else grid.cells[grid.col,grid.row] := 'no';
end;
procedure TForm2.gridDrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
begin
if not (gdFixed in State) then // 如果是fix 的 则不画.
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;