不要告诉我,写一个函数来判断某个选项是否被选中,然后执行相关代码。我的代码是这样: 假设在一个form里有3个checkbox,A,B和C,每个checkbox是一个选项,代表是否显示一个clientdataset的相应的列。var
sumA,sumB,sumC:integer;
I:integer;
begin
sumA:=0;
sumB:=0;
sumC:=0; //在程序里,首先要显示第一行的列标题,
if A.checked then clientdataset.fielddef.add('A');
if B.checked then clientdataset.fielddef.add('B');
if C.checked then clientdataset.fielddef.add('C');
clientdataset.createdataset; for I:=0 to 10 do
begin
//然后再显示相应的数据
clientdataset.append;
if A.checked then
begin
clientdataset.fieldbyname('A').value=1;
sumA:=sumA+1;//对每一列进行一个合计
end;
if B.checked then
begin
clientdataset.fieldbyname('B').value=2;
sumB:=sumB+2;
end;
if C.checked then
begin
clientdataset.fieldbyname('C').value=2;
sumC:=sumC+3;
end;
clientdataset.post;
end; //for end. //最后显示每一列的小计
clientdataset.append;
if A.checked then clientdataset.fieldbyname('A').value:=sumA;
if B.checked then clientdataset.fieldbyname('B').value:=sumB;
if C.checked then clientdataset.fieldbyname('C').value:=sumC;
clientdataset.post;end; 问题:在上面的代码中,需要判断三次“A.checked” ;如果这个判断不仅仅是一个“A.checked”那么简单,而且算法比较复杂而且选项很多,那程序的效率是很低的,而且在编程的时候,选项一多就会很繁琐。再假设所有的选项有它的特性,没有固定的规律可寻,比如:选项A是查询一个求和,选项B是查询一个求差,选项C是删除表,无法用循环实现的,如何设计一个比较优化的算法,使得它只判断最少的次数就能够达到上述目的呢?
sumA,sumB,sumC:integer;
I:integer;
begin
sumA:=0;
sumB:=0;
sumC:=0; //在程序里,首先要显示第一行的列标题,
if A.checked then clientdataset.fielddef.add('A');
if B.checked then clientdataset.fielddef.add('B');
if C.checked then clientdataset.fielddef.add('C');
clientdataset.createdataset; for I:=0 to 10 do
begin
//然后再显示相应的数据
clientdataset.append;
if A.checked then
begin
clientdataset.fieldbyname('A').value=1;
sumA:=sumA+1;//对每一列进行一个合计
end;
if B.checked then
begin
clientdataset.fieldbyname('B').value=2;
sumB:=sumB+2;
end;
if C.checked then
begin
clientdataset.fieldbyname('C').value=2;
sumC:=sumC+3;
end;
clientdataset.post;
end; //for end. //最后显示每一列的小计
clientdataset.append;
if A.checked then clientdataset.fieldbyname('A').value:=sumA;
if B.checked then clientdataset.fieldbyname('B').value:=sumB;
if C.checked then clientdataset.fieldbyname('C').value:=sumC;
clientdataset.post;end; 问题:在上面的代码中,需要判断三次“A.checked” ;如果这个判断不仅仅是一个“A.checked”那么简单,而且算法比较复杂而且选项很多,那程序的效率是很低的,而且在编程的时候,选项一多就会很繁琐。再假设所有的选项有它的特性,没有固定的规律可寻,比如:选项A是查询一个求和,选项B是查询一个求差,选项C是删除表,无法用循环实现的,如何设计一个比较优化的算法,使得它只判断最少的次数就能够达到上述目的呢?
sumA,sumB,sumC:integer;
ResultA,ResultB,ResultC:boolean;
I:integer;
begin
sumA:=0;
sumB:=0;
sumC:=0; //在程序里,首先要显示第一行的列标题, ResultA:=A.checked;ResultB := B.Checked; ResultC :=C.Checked;
if ResultA then clientdataset.fielddef.add('A');
if ResultB then clientdataset.fielddef.add('B');
if Resultc then clientdataset.fielddef.add('C');
后面就对的都换,如果中间的过程很复杂,则可以把这三个变量换成过程.
procedure ProcessCheckBoxA(checkboxA.checked);
继续关注....