在Delphi中控制TDBGrid控件
?牐牬疤宓慕缑嫔柚靡约翱丶奶砑印⑹粜陨柚镁凑铡对贒elphi中用ADO控件打开Access文件》一文,只是在DBRrid1的DrawDataCell事件过程中添加如下代码:
?牐爌rocedure TForm1.DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect; Field: TField; State: TGridDrawState);??
?牐爒ar Temp?焥tring; //说明一个字符串变量,用于暂出存放单精度的数值
?牐燽egin
?牐爓ith (Sender as TDBGrid).Canvas do
?牐燽egin
?牐燜illRect(Rect);??
?牐?//对字段的值的数据类型进行判断,如果是浮点型则进行格式设置
?牐爄f (Field.DataType = ftFloat) then
?牐燽egin
?牐爄f not (field.IsNull) then
?牐?//当字段的值不为空时,调用format函数,对数值的格式进行设置
?牐?//格式字符串’%8.4f'表示显示长度为8,以4位小数的形式输出。如果要改变输出的长度及小数位数,只须修改格式字符串即可。如要保留两位小数,则用'%8.2'。更多的信息,请参考Delphi帮助文档??
?牐爐emp:= format('%8.4f',[strtofloat(field.asstring)])?牔?
?牐燭extOut(Rect.Right-TextWidth(temp)-3,Rect.Top+3, temp);//左对齐画出单元
?牐爀nd
?牐爀lse
?牐燭extOut(Rect.Left+2,Rect.Top+3,Field.AsString);
?牐爀nd;
?牐爀nd;
?牐犃硗猓颐窃诼既胧菔毕肮哂诎聪禄爻担‥nter)键就将输入光标移到下一单元格,要实现这一功能,只须在DBGrid1的OnKeyPress事件过程中添加如下代码:
?牐爌rocedure TForm1.DBGrid1KeyPress(Sender: TObject; var Key: Char);??
?牐燽egin
?牐爄f Key=#13 then //如果按键为ENTER键
?牐爄f DBGrid1.selectedindex <(DBGrid1.fieldcount -1)then //如果当前活动焦点小于当前数据网格的字段数
?牐燚BGrid1.selectedindex:= DBGrid1.selectedindex +1 //转入该数据的下一个字段
?牐爀lse
?牐燽egin
?牐爄f not ADOtable1.Eof then //如果不是ADOTABLE1的最后一条记录
?牐燽egin //指向下一条记录
?牐燗DOtable1.Next;
?牐燚BGrid1.SelectedIndex:=0; //将当前的活动焦点定位在该记录的第一个字段中
?牐爀nd;
?牐爀nd;
?牐爀nd;
?牐犚陨铣绦蛟赪indows 98SE中文版及Delphi 5上调试通过。