当前位置:主页>仓库管理软件> 列表

求助。运用数组在循环中取控件值

仓库管理软件版1楼: 定义一个一维数组AA:array[1..20] of Integer;
有combobox1-combobox20个控件
运用数组aa在循环for i:=1 to 20 do begin
中将combobox1----combobox20中ItemIndex值取存于aa[i]中
请问一下combobox后面的1-20要怎么取?
我试了用数字与字符转换,行不通。
望知道的帮一下

2楼: for i := 1 to 20 do
AA[i] := TCombobox(FindComponent(Format(''combobox%d'', [i]))).ItemIndex; 如用友管理软件

3楼: combobox1的控件名已都被我改名为cb1.....cb20
运用 beta 的写法,会出错

4楼: 服了

for i := 1 to 20 do
AA[i] := TCombobox(FindComponent(Format(''cb%d'', [i]))).ItemIndex;

5楼: 改过了,运行时,会出错。代码如下
procedure TForm1.BitBtn1Click(Sender: TObject);
var
i:integer;
king:array[1..20] of integer;
begin
for i:=1 to 20 do
king[i]:=TCombobox(FindComponent(Format(''cb%d'',[i]))).ItemIndex;
end;

6楼: //combobox1的控件名已都被我改名为cb1.....cb20
//运用 beta 的写法,会出错
晕,改了名字,当然要改代码了,把
AA[i] := TCombobox(FindComponent(Format(''combobox%d'', [i]))).ItemIndex;
改成
AA[i] := TCombobox(FindComponent(Format(''cb%d'', [i]))).ItemIndex;
不就可以了。

或者定义一个常量,
const
CComboboxNamePrifix = ''cb'';
然后
for i := 1 to 20 do
AA[i] := TCombobox(FindComponent(Format(''%s%d'', [CComboboxNamePrifix,
i]))).ItemIndex;

仓库管理软件版7楼: 会出错,出什么错呀,你不告诉我们出错信息,我们怎么知道是出了什么错?

8楼: 你确定没有把某个 ComboBox 的名字起错?

9楼: 服了[:D]

10楼: beta 有没有QQ,告诉我一下,我截图给你看吧,没有错误说明,只是弹出窗口出错

11楼: 你这样试试:
procedure TForm1.BitBtn1Click(Sender: TObject);
const
CComboboxNamePrifix = ''cb'';
var
i:integer;
king:array[1..20] of integer;
ComboName: string;
Comp: TComponent;
begin
for i:= 1 to 20 do
begin
ComboName := CComboboxNamePrifix + IntToStr(i);
Comp := FindComponent(ComboName);
if Assigned(Comp) then
if Comp is TComboBox then
king[i] := TComboBox(Comp).ItemIndex
else
ShowMessage(ComboName + '' 不是 TComboBox 嘛 :('')
else
ShowMessage(ComboName + '' 根本就不存在 :('');
end;
end;

12楼: QQ 现在给老婆专用了 :D

弹出出错窗口上面的总该有什么字吧,你把那些字照着打下来不算累吧?
你运行一下我刚刚帖的这段代码,看看有什么反应,就应该知道有什么问题了。 如进销存软件免费版

13楼: 找到问题所在了,谢谢beta帮我找到了问题所在。
有个控件名字变成n了,改过来后正常。也谢谢0桁骀,