![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Массив комбиков
FANAT © (2005-05-24 11:01:00)Облазил весь инет, ни как не могу понять как создать динамический массив 4х3 из комбиков...
Запросто получается... в одну строку или в один столбец вогнать все 12 комбиков.....
подскажите пожалуйста...
evvcom (2005-05-25 08:36:00) [1]Допустим твои батоны с индексами в Components от 10 до 21. А при создании ты писал A[i, j].Name:='btn_'+IntToStr(i); где i от 0 до 3, причем по 3 раза пытаешься присвоить одно и то же имя (ошибку словил?) Ну и как ты думаешь, хоть один батон найдешь в своем цикле?
FANAT (2005-05-25 07:11:00) [2]как по имени конечно....
for i:=0 to ComponentCount-1 do
if (Components[i] is TButton) then
if TButton(Components[i]).Name=('btn_'+IntToStr(i)) then
.... ну и тут всякая белиберда...
ANB (2005-05-24 15:40:00) [3]
> FANAT © (24.05.05 15:10) [14]
- а как ты собирался к ним обращаться ?
evvcom (2005-05-24 15:36:00) [4]
> а почему лишнее??
А зачем оно?
> как же я потом буду обращаться к этим комбикам?
А зачем тебе тогда A[i,j]?
_1 (2005-05-24 15:15:00) [5]Не пойму зачем тут динамический..
FANAT (2005-05-24 15:10:00) [6]cb.Name:='btn_'+IntToStr(i); // Это вообще лишнее
???
а почему лишнее?? как же я потом буду обращаться к этим комбикам?
begin...end (2005-05-24 12:09:00) [7]procedure TForm1.Button1Click(Sender: TObject);
var
A: array of array of TComboBox;
i, j: Integer;
begin
SetLength(A, 4, 3);
for i := 0 to 3 do
for j := 0 to 2 do
begin
A[i, j] := TComboBox.Create(Self);
A[i, j].Parent := Self;
A[i, j].SetBounds(i * 80, j * 30, 75, 25)
end
end
evvcom (2005-05-24 12:07:00) [8]var cb: TComboBox;
...
for ...
begin
cb := TComboBox.Create(self);
cb.Parent:=Form1;
cb.Name:='btn_'+IntToStr(i); // Это вообще лишнее
cb.Caption:='кнопка';
cb.SetBounds(i+80, i+30, 75, 25); // Так оптимальнее
A[i,j] := cb; // И так оптимальнее (через cb)
end;
Gero (2005-05-24 12:03:00) [9]
> FANAT © (24.05.05 11:58)
Откажись от использования этого решения, оно тебя явно не по зубам.
Создай для начала один «комбик».
Потом статический одномерный массив из пары «комбиков».
Потом динамический одномерный.
После этого поймешь без проблем и сделаешь все сам.
Alx2 (2005-05-24 12:02:00) [10]>FANAT © (24.05.05 11:58) [9]
procedure TForm1.Button1Click(Sender: TObject);
var
A: array of array of TComboBox;
i, j: integer;
begin
SetLength(A, 4);
for i := 0 to 3 do
begin
SetLength(A[i], 3);
for j := 0 to 2 do // Begin нужен
A[i, j] := TComboBox.Create(self);
A[i, j].Parent:=Form1;
A[i, j].Name:='btn_'+IntToStr(i);
Caption:='кнопка';
Left:=i+80; // Left, Top, Height, Width - чье все это?
Top:=i+30;
Height:=25;
Width:=75;
end;
end;
end.
FANAT (2005-05-24 11:58:00) [11]блин...
везет вам вы тут между собой чирикаете... а я так и не понял...
извените.. я из начинающих...
может пальцем ткнете? как сделать то ... я написал код (выше)..
он не работает...
evvcom (2005-05-24 11:56:00) [12]
> begin...end © (24.05.05 11:45) [5]
> А Вы?
Опс. Можно и на ты. Действительно работает. Могли бы в справке вместо
procedure SetLength(var S; NewLength: Integer);
написать
procedure SetLength(var S; NewLength [, NewLength2, ...]: Integer);
Обычно на это обращаешь внимание и только когда что-то не выходит или пальцем ткнут, тогда на
For dynamic arrays, SetLength may take more than one length parameter (up to the number of array dimensions).
Alx2 (2005-05-24 11:54:00) [13]>evvcom © (24.05.05 11:44)
Да, конечно (у меня D6).
FANAT (2005-05-24 11:52:00) [14]не получается.... :-(
procedure TForm1.Button1Click(Sender: TObject);
var
A: array of array of TComboBox;
i, j: integer;
begin
SetLength(A, 4);
for i := 0 to 3 do
begin
SetLength(A[i], 3);
for j := 0 to 2 do
A[i, j] := TComboBox.Create(self);
A[i, j].Parent:=Form1;
A[i, j].Name:='btn_'+IntToStr(i);
Caption:='кнопка';
Left:=i+80;
Top:=i+30;
Height:=25;
Width:=75;
end;
end;
end.
begin...end (2005-05-24 11:45:00) [15]> evvcom © (24.05.05 11:44) [4]
А Вы?
evvcom (2005-05-24 11:44:00) [16]
> SetLength(A,4,3);
А сам пробовал?
Alx2 (2005-05-24 11:14:00) [17]SetLength(A,4,3);
......
i = 0..3,
j = 0..2
A[i, j] := TComboBox.Create(...)
.......
Юрий Зотов (2005-05-24 11:10:00) [18]См. в справке "Multidimensional dynamic arrays".
var
A: array of array of TComboBox;
i, j: integer;
begin
SetLength(A, 4);
for i := 0 to 3 do
begin
SetLength(A[i], 3);
for j := 0 to 2 do
A[i, j] := TComboBox.Create(...)
end
end;
Gero (2005-05-24 11:07:00) [19]Зачем комбиков мучаешь, лучше делом займись.