stringgrid 小票显示(20)

  • 主题发起人 主题发起人 zqssoft
  • 开始时间 开始时间
Z

zqssoft

Unregistered / Unconfirmed
GUEST, unregistred user!
在收款小票中,有下面的格式,如:品名 单价 数量 金额 A 15 2 30 B 10 1 10 C 20 2 40 总金额:80如果用StringGrid来做上面的功能的话,如何当修改数量时,金额动态跟着改变(金额=单价*数量)?如何在金额显示后,动态显示总金额在Edit1.text中。如何在敲录入键时,将StringGrid中的品名 单价 数量 金额四列四行数据录入到数据库并打印小票?
 
StringGrid.KeyUp事件中自己写函数来处理上面的事情,Delphi不能自动帮你完成这些任务。----------如何在敲录入键时,将StringGrid中的品名 单价 数量 金额四列四行数据录入到数据库并打印小票?-->怎么保存数据,怎么打印?你不会是什么都不会吧?
 
为何不用dbgrid呢! 自动计算多方便。不过znxia的方式也对。、
 
dbgrid+计算字段吗,这样必须连接数据源啊?
 
请问是否可以把chrome嵌入到自己的应用程序中?开发Web浏览小工具,要求如下:1、内嵌Google浏览器。2、运行程序可以读取配置文件中设置的URL,并在内嵌的Google浏览器中打开。3、内嵌Google浏览器要求不允许显示浏览器地址栏等信息,只显示页面。能完成此工具的可以走外包形式。联系人: 林先生电话: 13683611366
 
楼上的不厚道。
 
可以在ClientDataSet里加一个计算字段,然后在ClientDataSet.OnCalcFields事件里写就可以了 Delphi(Pascal) codeprocedure TForm1.ClientDataSet1CalcFields(DataSet: TDataSet);begin DataSet.FieldByName('合计字段名').AsFloat := DataSet.FieldByName('字段1').AsFloat + DataSet.FieldByName('字段2').AsFloat+ {.....} DataSet.FieldByName('字段n').AsFloat;end;
 
一切都可以在StringGrid1的OnSetEditText事件中写代码,procedure TForm1.FormCreate(Sender: TObject);begin with StringGrid1 do begin Cells[1,0]:= '品名'; Cells[2,0]:= '单价'; Cells[3,0]:= '数量'; Cells[4,0]:= '金额'; end;end;procedure TForm1.StringGrid1SetEditText(Sender: TObject; ACol, ARow: Integer; const Value: String);var s, s1, s2: string; vTotal, v, v1, v2: double; i: integer;begin with StringGrid1 do begin //1.当修改数量或单价时,金额动态跟着改变(金额=单价*数量)? if ACol in [2,3] then //(金额=单价*数量)? begin s1:= Cells[2,ARow]; //单价 s2:= Cells[3,ARow]; //数量 if TryStrToFloat(s1, v1) and TryStrToFloat(s2, v2) then Cells[4,ARow]:= FloatToStr(v1*v2) else Cells[4,ARow]:= ''; end; //2.在金额显示后,动态显示总金额在Edit1.text中。 vTotal:= 0; for i:= 1 to RowCount-1 do begin s:= Cells[4,i]; if TryStrToFloat(s, v) then vTotal:= vTotal + v; end; Edit1.Text:= FloatToStr(vTotal); //如何在敲录入键时,将StringGrid中的品名 单价 数量 金额四列四行数据录入到数据库并打印小票? //弄个按纽自已打印吧,别敲一下就打一个,非把你打印机累死不可 end;end;
 
接受答案了.
 

Similar threads

后退
顶部