关于stringGrid的疑问

肥仔胧 2004-08-30 09:06:26
请问如何在stringGrid重实现打勾,也就是说,我想在其某列上实现一个Boolean型的列
类似于checkBox的功能;(非dbgrid)
...全文
164 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
eagle_2 2004-08-31
  • 打赏
  • 举报
回复
stringgrid中嵌套一个checkbox控件不就得了,还能得到很多属性和事件呢
checkbox1.left:=stringgrid1.cellrect[].left;
checkbox1.top:=stringgrid1.cellrect[].top;
checkbox1.height:=stringgrid1.cellrect[].height;
checkbox1.width:=stringgrid1.cellrect[].width;

再在每次重绘时记得:checkbox1.caption:=stringgrid1.cells[]一下
eagle_2 2004-08-31
  • 打赏
  • 举报
回复
stringgrid中嵌套一个checkbox控件不就得了,还能得到很多属性和事件呢
checkbox1.left:=stringgrid1.cellrect[].left;
checkbox1.top:=stringgrid1.cellrect[].top;
checkbox1.height:=stringgrid1.cellrect[].height;
checkbox1.width:=stringgrid1.cellrect[].width;
梅青松 2004-08-30
  • 打赏
  • 举报
回复
用两个图片:一个打勾,一个不打勾
将图片画在stringgrid 中
在onclick事件中切换两个图片即可

肥仔胧 2004-08-30
  • 打赏
  • 举报
回复
应该来说说话啊
有不同的方法,大家拿来相互学习嘛
rcaicc 2004-08-30
  • 打赏
  • 举报
回复
学习。。。。
capoatguitar 2004-08-30
  • 打赏
  • 举报
回复
溜达溜达不说话
luke5678 2004-08-30
  • 打赏
  • 举报
回复

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.

 


wofan 2004-08-30
  • 打赏
  • 举报
回复
郁闷个啥

在COL(0)里面打勾不就得
肥仔胧 2004-08-30
  • 打赏
  • 举报
回复
心情极度郁闷

5,927

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧