对cxGrid的极限发挥。在线 ( 积分: 200 )

  • 主题发起人 主题发起人 LoveHB
  • 开始时间 开始时间
L

LoveHB

Unregistered / Unconfirmed
GUEST, unregistred user!
这几天在帮女朋友做个小东西。。。
如此原始单据(这个是外销的,呵呵,帮女朋友作做)
packNo code Color S M L XL ONESIZE TOTAL G.W. N.W.
1 IBBFLC602 AZURE/OZON 5 26 5 18 12.00 10.00
2 IBBFLC602 AZURE/OZON 26 26 12.00 10.00
3 IBBFLC602 AZURE/OZON 45 26 71 12.00 10.00
4 IBBFLC602 AZURE/OZON 26 26 12.00 10.00
5 IBBFLC602 AZURE/OZON 10 26 36 12.00 10.00
6 IBBFLC602 AZURE/OZON 26 23 12.00 10.00
7 IBBFLE01 BLACK 26 26 12.00 10.00
8 IBBFLE01 BLACK 26 3 29 12.00 10.00
9 IBBFLC602 AZURE/OZON 10 26 88 12.00 10.00
IBBFLC602 AZURE/OZON 26
IBBFLE01 BLACK 26
10 IBBFLE01 BLACK 26 3 29 12.00 10.00

最终结果:

**进出口有限公司


** COMPANY LIMITED
INVOICE NO:GI00105001N12
S/C NO: GI00105001
DATE:JUL.28, 2005
Packing List
packNo code Color S M L XL ONESIZE TOTAL G.W. N.W.
1 IBBFLC602 AZURE/OZON 5 26 5 36 12.00 10.00
2 IBBFLC602 AZURE/OZON 26 26 12.00 10.00
3 IBBFLC602 AZURE/OZON 45 26 71 12.00 10.00
4 IBBFLC602 AZURE/OZON 26 26 12.00 10.00
5 IBBFLC602 AZURE/OZON 10 26 36 12.00 10.00
6 IBBFLC602 AZURE/OZON 26 26 12.00 10.00
7 IBBFLE01 BLACK 26 26 12.00 10.00
8 IBBFLE01 BLACK 26 3 29 12.00 10.00
9 IBBFLC602 AZURE/OZON 10 26 88 12.00 10.00
IBBFLC602 AZURE/OZON 26
IBBFLE01 BLACK 26
10 IBBFLE01 BLACK 26 3 29 12.00 10.00
问题:
估计看出来了,工厂出来的数据可能total计算得不准确,要我写个程序,
1÷导入工厂数据
2÷自动计算total
3÷能在程序界面对于导入的数据进行修改(修改数量,并自动计算total),并能撤销或保存修改
3÷格式化为标准的packinglist
4÷导出为excel表格
5÷要求程序能正常打印Packinglist

我只做了第一二步,第三步就死翘翘了,我发现数据如果使用数据敏感控件
(我用cxgrid,所以我系统能继续保留使用cxgrid,要未保存数据的情况下进行直接格和格之间的计算很麻烦,我至今没找到如何取得正在写入一个cell的值)
当然有人说DataController.Values[x,y]就可以,呵呵,试试看吧,要真的做到Excel那样一写入移开Total字段就自动计算,并不保存到数据集,等到确定保存还是撤销的时候才决定是保存还是取消,我弄了一下午还没搞定(当然我cxgrid不是很了解,请指教了)


这个功能如果能实现了,其他估计不是问题,请各位大侠给点意见,通宵了,今晚。。。。。
 
这几天在帮女朋友做个小东西。。。
如此原始单据(这个是外销的,呵呵,帮女朋友作做)
packNo code Color S M L XL ONESIZE TOTAL G.W. N.W.
1 IBBFLC602 AZURE/OZON 5 26 5 18 12.00 10.00
2 IBBFLC602 AZURE/OZON 26 26 12.00 10.00
3 IBBFLC602 AZURE/OZON 45 26 71 12.00 10.00
4 IBBFLC602 AZURE/OZON 26 26 12.00 10.00
5 IBBFLC602 AZURE/OZON 10 26 36 12.00 10.00
6 IBBFLC602 AZURE/OZON 26 23 12.00 10.00
7 IBBFLE01 BLACK 26 26 12.00 10.00
8 IBBFLE01 BLACK 26 3 29 12.00 10.00
9 IBBFLC602 AZURE/OZON 10 26 88 12.00 10.00
IBBFLC602 AZURE/OZON 26
IBBFLE01 BLACK 26
10 IBBFLE01 BLACK 26 3 29 12.00 10.00

最终结果:

**进出口有限公司


** COMPANY LIMITED
INVOICE NO:GI00105001N12
S/C NO: GI00105001
DATE:JUL.28, 2005
Packing List
packNo code Color S M L XL ONESIZE TOTAL G.W. N.W.
1 IBBFLC602 AZURE/OZON 5 26 5 36 12.00 10.00
2 IBBFLC602 AZURE/OZON 26 26 12.00 10.00
3 IBBFLC602 AZURE/OZON 45 26 71 12.00 10.00
4 IBBFLC602 AZURE/OZON 26 26 12.00 10.00
5 IBBFLC602 AZURE/OZON 10 26 36 12.00 10.00
6 IBBFLC602 AZURE/OZON 26 26 12.00 10.00
7 IBBFLE01 BLACK 26 26 12.00 10.00
8 IBBFLE01 BLACK 26 3 29 12.00 10.00
9 IBBFLC602 AZURE/OZON 10 26 88 12.00 10.00
IBBFLC602 AZURE/OZON 26
IBBFLE01 BLACK 26
10 IBBFLE01 BLACK 26 3 29 12.00 10.00
问题:
估计看出来了,工厂出来的数据可能total计算得不准确,要我写个程序,
1÷导入工厂数据
2÷自动计算total
3÷能在程序界面对于导入的数据进行修改(修改数量,并自动计算total),并能撤销或保存修改
3÷格式化为标准的packinglist
4÷导出为excel表格
5÷要求程序能正常打印Packinglist

我只做了第一二步,第三步就死翘翘了,我发现数据如果使用数据敏感控件
(我用cxgrid,所以我系统能继续保留使用cxgrid,要未保存数据的情况下进行直接格和格之间的计算很麻烦,我至今没找到如何取得正在写入一个cell的值)
当然有人说DataController.Values[x,y]就可以,呵呵,试试看吧,要真的做到Excel那样一写入移开Total字段就自动计算,并不保存到数据集,等到确定保存还是撤销的时候才决定是保存还是取消,我弄了一下午还没搞定(当然我cxgrid不是很了解,请指教了)


这个功能如果能实现了,其他估计不是问题,请各位大侠给点意见,通宵了,今晚。。。。。
 
自由界面和报表的完美解决方案!
http://www.anylib.com
 
下载Advstringgrid,用他的事件
procedure TForm1.AdvStringGrid1CellValidate(Sender: TObject;ACol ,
ARow: Integer; var Value: String; var Valid: Boolean);
其中Value中为CELLS 的有效输入
 
嗯,谢谢cui5555的回复,请继续。。。
 
傻瓜,你是这样使用数据感知控件的吗?
 
做出这样的东西,最好是使用普通的控件,先从数据库读出数据到普通的控件,计算好后,再保存到数据库里面去。
 
呵呵,不好意思,其实没写完:
1÷导入工厂数据
2÷自动计算total,并保存计算好的数据到access表

然后的,就是通过cxgrid连接数据库,呵呵,不好意思,不好意思。。
 
嗯,我也知道,如果直接使用stringgrid就比较方便,不选用有如下理由:
1、难看
2、排序,统计和分组功能没有(footer,groupbox)
3、数据大批量写入数据库和保存(因为整个流程所用时间比较长,如果第一次导入只是从excel到stringgrid的话可能不行)

谢谢,请继续...
 
一、难看的话,有大把多漂亮的普通控件供你选择;
二、排序的功能由数据集控件完成,数据集控件是中心,你的东西就是跟这个打交道,这样可以做到界面和业务代码分离。统计、分组功能由你自己发挥,然后加到普通的控件中去;
三、如果是使用excel,可以直接使用ADO连接,和使用Access数据库差不多,这样就可以提高速度。
 
谢谢。

可以考虑,不过我总想通过cxgrid来解决。代码已经写了很多了。
难道cxgrid不能实现普通stringgrid功能
 
肯定可以,先设一个数组,在数组计算好,再保存到数据集中去。
 
在数据集中实现自动计算的功能,速度很慢,操作困难。
 
用一个内存数据集不行吗。我目前就是这样做的,感觉爽多了
 
新版本 Anylib 出来了,支持排序,过滤,导入导出 Excel
 
其实这东西不应该在界面上做啊,在底层的数据库上做,轻松的很,用一个clientdataset搞掂.用户所有的修改都在Delta属性中,所有新数据全在data属性中并显示给用户;要取消修改只要修改delta属性就可以灵活处理,也可以用cancelupdata取消全部修改.要确认修改用mergechangelog方法,就可以合并data和delta的数据.
全自动,感觉爽多了 (sunsam:用一个内存数据集不行吗。我目前就是这样做的,感觉爽多了 :-)
 
很有益,请继续! [:)]
 

Similar threads

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