先在GRID里面放入一个BUTTON
在ONSELECTCELL事件中写代码,根据事件的参数,你可以得到当前CELL的宽度,和高度,既ARect:TRect;
with Button do
begin
Left:=ARect.Left+1;
Top:=ARect.Top+1;
Width:=ARect.Right-ARect.Left+1;
Height:=ARect.Bottom-ARect.Top+1;
Visible:=True;
SetFocus;
end;
在ONSELECTCELL事件中写代码,根据事件的参数,你可以得到当前CELL的宽度,和高度,既ARect:TRect;
with Button do
begin
Left:=ARect.Left+1;
Top:=ARect.Top+1;
Width:=ARect.Right-ARect.Left+1;
Height:=ARect.Bottom-ARect.Top+1;
Visible:=True;
SetFocus;
end;
解决方案 »
- 庆祝排名888散分
- delphi与vb字符串格式有什么差异?
- delphi 写的程序,在运行中有时会莫名其妙的结束,没有任何提示?
- dephi 读取foxpro 结构带索引的dbf 系统报语言驱动错误,不知道该如何解决?
- 非常奇怪的问题!我主窗口中有一函数TFormMain.CreateForm1(),是用于创建form1窗口的,但在线程中调用FormMain.CreateForm1(),程序就死了
- 金山毒霸升级的注册码。。。。。。。
- 请问面向对象与面向结构两种编程思想之间的矛盾怎么解决?
- udpserver掉包如何解决
- 一个极度空虚的程序员
- 各位大哥哥:怎样模拟“用户的点击”呢??? ——白玉静
- 帮忙,解决不了!
- Select查询求和SUM()语句中的问题
procedure DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
procedure DBGrid1CellClick(Column: TColumn);
procedure DBGrid1ColEnter(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
OldOptions: TDBGridOptions;
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.DFM}procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
var
R: TRect;
begin
if SameText(Column.FieldName, 'AAA') then
begin
with DBGrid1.Canvas do
begin
FillRect(Rect);
R := Rect;
InflateRect(R, -2, -2);
if Column.Field.AsString <> 'Y' then
DrawFrameControl(Handle, R, DFC_BUTTON, DFCS_BUTTONCHECK or DFCS_FLAT)
else
DrawFrameControl(Handle, R, DFC_BUTTON, DFCS_BUTTONCHECK or DFCS_FLAT or DFCS_CHECKED);
end;
end;
end;procedure TForm1.DBGrid1CellClick(Column: TColumn);
begin
if SameText(Column.FieldName, 'AAA') then
begin
DBGrid1.DataSource.DataSet.Edit;
if Column.Field.AsString <> 'Y' then
DBGrid1.DataSource.DataSet.FieldByName('AAA').AsString := 'Y'
else
DBGrid1.DataSource.DataSet.FieldByName('AAA').AsString := 'N';
DBGrid1.DataSource.DataSet.Post;
end;
end;procedure TForm1.DBGrid1ColEnter(Sender: TObject);
begin
if SameText(DBGrid1.SelectedField.FieldName, 'AAA') then
DBGrid1.Options := DBGrid1.Options - [dgEditing]
else
DBGrid1.Options := OldOptions;
end;procedure TForm1.FormCreate(Sender: TObject);
begin
OldOptions := DBGrid1.Options;
end;