delphi中动态更改数字显示格式?

linlingwei 2018-01-11 10:19:53
因为用了三方控件原因,所以只能自己处理数字显示格式,用下面这过程:
procedure TForm1.ADOQuery1AfterOpen(DataSet: TDataSet);
var
i:Integer ;
fd:TField ;
begin
for I := 0 to DataSet.FieldCount -1 do
begin
fd:=DataSet.Fields[i];
if fd.FieldName ='tax_total' then
begin
(fd As TBCDField).DisplayFormat:='#,##0.00';
end;
end;
end;

问题来了,如果adoquery直接从表里面select取数据 上面过程是正常的,如:
ADOQuery1.SQL.Text :='select sp_id,sp_name,tax_total from cb';
但是如果动态汇总数据,上面过程就报错了,如:
ADOQuery1.SQL.Text :='select sum(total) as tax_total from cgrk_cb';
是不是sum汇总的数据字段,不再默认数据中原有的类型了,这样的话怎么处理呢?
...全文
459 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
(fd As TNumericField).DisplayFormat:='#,##0.00';
Mars 2018-01-11
  • 打赏
  • 举报
回复
我一般不在事件里处理,sql.text=xxx,adoquery1.open; if adoquery1.recordcount>0 then 继续处理fieldbyname就可以了。
又一个delphi键盘钩子用法及代码,可以截获几乎所有键值,例如:shift ?,ctrl ?,alt ?,F1~F12,shift或者ctrl或者alt F1~F12,单独的 shift、ctrl、alt 键值,特殊键ins、del、caps lock、num lock、小键盘数字 等等,你只要稍作修改,也可以截获 ctrl alt ?等键值,没有截获不到的键值,本程序不使用dll方式,使用常规方式,方便你编译调试修改,支持xp、vista、win7,是最强悍的键盘钩子控件, 在delphi7下通过。   myshiftchar:string;//返回shift状态 例如 ctrl   mypresschar:string;//返回整个键值 例如 ctrl g   dulictrl:string;//返回 ctrl 和 alt 单独状态, =ctrl or =alt   安装方法:   本控件的核心源代码在 unit2   首先 创建调用主窗体,假定是form1,在form1上放一个 memo控件(必须),然后创建一个新单元 如unit2,把我的unit2 单元的源代码全部复制过去,做以下修改,首先确保form1使用 新单元 如unit2,并且unit2也使用form1。   在新单元unit2 ,找到 函数 function KeyBHkHandle 过程,在其找到以下两条语句:    // 在这里根据自己的情况修改    form1.Memo1.Lines.Add(mypresschar);   // 在这里根据自己的情况修改    if mypresschar'' then form1.Memo1.Lines.Add(mypresschar);   如果你的调用主窗体就叫form1,则不用修改,否则把这两条语句的form1修改为你的调用主窗体的名字。   在 memo编辑框的onChange事件编写自己的 键盘消息接受主控制过程,其 字符串mypresschar 返回总键值,它跟memo编辑框显示值是一样的 ,例如 g、shift g、ctrl 2、F9、alt F9、 等等,其 字符串shiftstr 返回 控制键 shift ctrl alt 的状态,例如按下ctrl,则 shiftstr=‘ctrl’ ,否则=''。   最后不要忘记在程序退出时卸载键盘钩子!

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧