报表问题一直困扰了我很久,现在终于突破了这一项技术,高兴!
程序特点:自动进行颜色设置,以便区别不同区域的数据;数据录入完成后可以保存到本地(任意格式都可以);打开你以前保存的数据文件就可以继续编辑数据;可以将数据表格保存为Excel文件
待开发的功能:自动计算数据;检验数据是否正确(检验误差是否超标);其它
时间不够,要准备考试,以后找时间再完成
记录:
1.在应用程序窗体上绘制表格,这是最难的。
2.将资源文件包含到exe应用程序中去,并在程序运行时释放、加载。相关函数:
function ExtractRes(ResType,ResName,ResNewName:string):boolean;
3.将表格里面的文件转换成相应格式的数据,如06(字符)转换成6(数字),并且判断数据是否合法,并且要过滤掉空格字符,如果含有空格转换就会出错,相关函数:
function CellFormat(str1:string):string;
4.将所有数据封装起来,并建立数据与表格的一对一关系,表格到数据相关过程:
procedure UpdateData;
将表格里面的数据转换到相应的变量中去:
function GetCellData(i,j:integer):integer;
更新所有Cell的数据到相应变量中去:
procedure UpdateCell(sum,row,col:integer);overload;
procedure UpdateCell(sum,row,col:integer;i:boolean);overload;
因为有一些特殊的表格要特殊处理(如BH2等)故要写两个处理函数,第二个是处理特殊的表格,功能就是三个单位(度分秒)中不显示有相同数据的单位的数值
5.A栏的值要通过两组A的值进行纠正,并判断误差是否超界,如果超界则不能继续计算等操作,相关函数:
function JustifyA(row,col,add1:integer):integer;
6.计算A栏里面的纠正值(秒位的值),相关函数:
function JustifyWtoR(row1,row2,col:integer):integer;
7.将AH和AE置0的操作,相关过程:
procedure SetAHAE0;
8.奇进偶不进算法,相关函数(自定义函数):
function JustifyFloat(float1:single):integer;
9.自动计算模块:
procedure Calc;
10.计算之后所有数据归位,相关过程:
procedure DataToOriginal;
变量图解: