关于计算字段的问题 (100分)

  • 主题发起人 主题发起人 编程傻子
  • 开始时间 开始时间

编程傻子

Unregistered / Unconfirmed
GUEST, unregistred user!
我在dbgrid中增加了一个计算字段列, string类型,长度为1. 要求实现checkbox功能。怎么写

procedure Tmainpro.DBGrid1CellClick(Column: TColumn);
begin
if column.FieldName = 'issn2' then
begin
WITH ADOQURY1 do
BEGIN
edit;
IF FieldByName('issn2').Asstring = '√' THEN
FieldByName('issn2').Asstring := ''
ELSE FieldByName('issn2').Asstring := '√';
UPDATE;
END;
end;
end;
我这样写不起作用。

我想实现在dbgrid的计算列上点击一下打个勾, 再点击一下为空
 
DBGRID是不能直接操作计算字段的
 
计算字段应该是数据集的OnCalcField事件中进行操作。
但INFOPOWER的wwDBGrid可以对字段进行操作。
 
不用控件,有别的办法吗?
 
我觉得,上面的处理与计算字段无关。
首先计算字段也不能这样赋值,还有'√'至少长度为2。
在数据库中直接放一个逻辑字段,应该处理起来比较方便,
并且在DBGrid中用复选框来显示该字段。
 
转换一下就可以了
 
http://www.delphibbs.com/keylife/iblog_show.asp?xid=4091
2003-12-10 14:58:31 DBGrid 对非布尔字段的栏中如何出现 CheckBox 选择输入可将dbgrid关联的dataset中需显示特殊内容字段设为显式字段,并在OnGetText事件中写如下代码:
以table举例:
procedure TForm1.Table1Myfield1GetText(Sender: TField;
var Text: String; DisplayText: Boolean);
var Pd:string;
begin
inherited;
pd:=table1.fieldbyname('myfield1').asstring;
if pd='1' then
Text:='□'
else
if pd='2' then
text:='▲'
else
Text:='√';
end;
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
503
import
I
后退
顶部