I
imacih
Unregistered / Unconfirmed
GUEST, unregistred user!
{计算可见SpeedButton的位置}
procedure TWEForm.ChangeVisible;
var
i, j: integer;
a: array[1..11] of integer;
sb: array[1..11] of TSpeedButton;
begin
sb[1] := sbAddWaterRecord;
sb[2] := sbPrint;
sb[3] := sbAddAmmeterRecord;
sb[4] := sbPreview;
sb[5] := sbUpdate;
sb[6] := sbDelWater;
sb[7] := sbChangeWater;
sb[8] := sbAddWater;
sb[9] := sbDelAmmeter;
sb[10] := sbChangeAmmeter;
sb[11] := sbAddAmmeter;
for i := 1 to 11do
begin
if sb.Visible then
a := 1
else
a := 0;
end;
sb[1].Left := 0;
for i := 2 to 11do
begin
if sb.Visible then
begin
sb.Left := 0;
for j := 1 to i - 1do
sb.Left := sb.Left + sb[j].Width * a[j];
end;
end;
end;
上面这段代码用来移动ToolBar上SpeedButton的位置,使可见的SpeedButton始终靠左。
但上面这段代码得出的结果却是把SpeedButton的顺序给倒过来了,也就是说看程序的结果好像从左到右应该是
Sp1----Sp11的,但得出来的效果却是从Sp11----Sp1。
还有,下面这小段代码:
for i := 1 to 11do
begin
if sb.Visible then
a := 1
else
a := 0;
end;
调试时,i的值居然是从11一直递减到1的,不解!!!!
望大侠指点!
谢谢!
procedure TWEForm.ChangeVisible;
var
i, j: integer;
a: array[1..11] of integer;
sb: array[1..11] of TSpeedButton;
begin
sb[1] := sbAddWaterRecord;
sb[2] := sbPrint;
sb[3] := sbAddAmmeterRecord;
sb[4] := sbPreview;
sb[5] := sbUpdate;
sb[6] := sbDelWater;
sb[7] := sbChangeWater;
sb[8] := sbAddWater;
sb[9] := sbDelAmmeter;
sb[10] := sbChangeAmmeter;
sb[11] := sbAddAmmeter;
for i := 1 to 11do
begin
if sb.Visible then
a := 1
else
a := 0;
end;
sb[1].Left := 0;
for i := 2 to 11do
begin
if sb.Visible then
begin
sb.Left := 0;
for j := 1 to i - 1do
sb.Left := sb.Left + sb[j].Width * a[j];
end;
end;
end;
上面这段代码用来移动ToolBar上SpeedButton的位置,使可见的SpeedButton始终靠左。
但上面这段代码得出的结果却是把SpeedButton的顺序给倒过来了,也就是说看程序的结果好像从左到右应该是
Sp1----Sp11的,但得出来的效果却是从Sp11----Sp1。
还有,下面这小段代码:
for i := 1 to 11do
begin
if sb.Visible then
a := 1
else
a := 0;
end;
调试时,i的值居然是从11一直递减到1的,不解!!!!
望大侠指点!
谢谢!