dbgrid 裡面怎麼實現某1列為按鈕,並且可以打勾呢/ 如題 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 DBGrid可能不便改变值,试用StringGrid如何编写使StringGrid中的一列具有Check功能,和CheckBox效果一样 unit Unit1;interfaceusesWindows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, Grids;typeTForm1 = 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;varForm1: TForm1;fcheck,fnocheck:tbitmap;implementation{$R *.DFM}procedure TForm1.FormCreate(Sender: TObject);vari:SmallInt;bmp:TBitmap;beginFCheck:= 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.freeend;end;procedure TForm1.gridDrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState);beginif not (gdFixed in State) then with TStringGrid(Sender).Canvas dobegin 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);beginif 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. dbgrid没有这种功能找一下三方控件,有这种东东 用dxDbgrid这个控件就可以了,这是一个第三方控件,很好用的!我这有,如要请发邮件! EEsslongli(明)请给我一份,谢谢[email protected] [email protected] 我等著用呢,再給20分給你,謝謝了 好像dxdbgrid 沒有這個功能嘛?????????????,只是可以任意排序,任意分組而已阿(我下載的是ExpressQuantumGrid 5.3,不知道對不對) 用InfoPower的wwdbgrid,可以實現這種功能,比dbgrid功能強多了 那位給我發個cxgrid的使用說明阿,謝謝,[email protected] 49567511 或者就帖再帖子上阿 請問;okhorse(喜歡三更半夜瞎逛) ; wwdbgrid 是網頁控件嗎,我要的是delphi的應用程序控件阿 用图片代替不就行了,加一个列,选中时显示checked,未选中是unchecked在OnDrawColumnCell写代码就是了。 除非這個列全部綁定的是checkbox阿,否則怎麼選中時候顯示checked 阿,不理解,,,你做過這個東東嗎,發點程序和執行的圖片來看看嘛,謝謝 if ADOQuery1Fstatus.asString='Y' then Text:='√' else Text :='×'这个在某个字段就可以显示打钩了 if (gdSelected in State ) then // begin if (Column.Field.FieldName = DBCheckBox1.DataField) then begin DBCheckBox1.Left := Rect.Left + DbGdMain.Left + 2; DBCheckBox1.Top := Rect.Top + DbGdMain.top + 2; DBCheckBox1.Width := Rect.Right - Rect.Left; DBCheckBox1.Height := Rect.Bottom - Rect.Top; DBCheckBox1.Visible := True; end; 【请教】尝试读取或写入受保护的内存。这通常指示其他内存已损坏 发给我1STCLASS3000控件的朋友过来领分哦:) 使用哪种数据库最为方便 请问:如和将一个email,包括附件一起保存下来? 一个用Delphi 调用java 编写的WebServices 的问题 高分相送--用adoquery查询时结果为空后面call adoquery->Close()就出现错误 进销存具有如下功能 多表查询中的问题,请高手指教!!! 寻找二维码源代码 小問題,TiniFile有Create,怎麼沒有open,該如何open?? 为什么我的程序字体有时候会突然变大! 如何利用api显示窗口(高难)
如何编写使StringGrid中的一列具有Check功能,和CheckBox效果一样
unit Unit1;interfaceuses
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.
找一下三方控件,有这种东东
[email protected]
Text:='√'
else
Text :='×'
这个在某个字段就可以显示打钩了
begin
if (Column.Field.FieldName = DBCheckBox1.DataField) then
begin
DBCheckBox1.Left := Rect.Left + DbGdMain.Left + 2;
DBCheckBox1.Top := Rect.Top + DbGdMain.top + 2;
DBCheckBox1.Width := Rect.Right - Rect.Left;
DBCheckBox1.Height := Rect.Bottom - Rect.Top; DBCheckBox1.Visible := True;
end;