Delphi中控制DBGrid控件的单元格显示

翻译|其它|编辑:郝浩|2006-06-30 13:49:00.000|阅读 2473 次

概述:

# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>


窗体的界面设置以及控件的添加、属性设置均按照《在Delphi中用ADO控件打开Access文件》一文,只是在DBRrid1的DrawDataCell事件过程中添加如下代码:

procedure TForm1.DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect; Field: TField; State: TGridDrawState);

var Temp:string; //说明一个字符串变量,用于暂存放单精度的数值

begin

    with(Sender as TDBGrid).Canvas do

    begin

       FillRect(Rect);

          //对字段的值的数据类型进行判断,如果是浮点型则进行格式设置

      if (Field.DataType = ftFloat) then

        begin

          if not (field.IsNull) then

            //当字段的值不为空时,调用format函数,对数值的格式进行设置

           {格式字符串‘%8.4f'表示显示长度为8,以4位小数的形式输出。如果要改变输出的长度及小数位数,只须修改格式字符串即可。如要保留两位小数,则用‘%8.2'。更多的信息,请参考Delphi帮助文档}

           temp:= format(‘%8.4f',[strtofloat(field.asstring)]);

           TextOut(Rect.Right-TextWidth(temp)-3,Rect.Top+3, temp);//左对齐画出单元

        end

        else

           TextOut(Rect.Left+2,Rect.Top+3,Field.AsString);

       end;

end;

另外,我们在录入数据时习惯于按下回车(Enter)键就将输入光标移到下一单元格,要实现这一功能,只需在DBGrid1的OnKeyPress事件过程中添加如下代码:

procedure TForm1.DBGrid1KeyPress(Sender: TObject; var Key: Char);

begin

if Key=#13 then //如果按键为ENTER键

   if DBGrid1.selectedindex <(DBGrid1.fieldcount -1)then //如果当前活动焦点小于当前数据网格的字段数

       DBGrid1.selectedindex:= DBGrid1.selectedindex +1 //转入该数据的下一个字段

  else

     begin

        if not ADOtable1.Eof then //如果不是ADOTABLE1的最后一条记录

            begin //指向下一条记录

                ADOtable1.Next;

                DBGrid1.SelectedIndex:=0; //将当前的活动焦点定位在该记录的第一个字段中

            end;

       end;

end;

注:以上程序在Win98 SE中文版及Delphi5上调试通过。

 


标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@evget.com


为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP