Вниз
Скачать: CL | DM;

Массив комбиков   Найти похожие ветки 

← →
FANAT ©   (2005-05-24 11:01) [0]

Облазил весь инет, ни как не могу понять как создать динамический массив 4х3 из комбиков...
Запросто получается... в одну строку или в один столбец вогнать все 12 комбиков.....
подскажите пожалуйста...


← →
Gero ©   (2005-05-24 11:07) [1]

Зачем комбиков мучаешь, лучше делом займись.


← →
Юрий Зотов ©   (2005-05-24 11:10) [2]

См. в справке "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;


← →
Alx2 ©   (2005-05-24 11:14) [3]

SetLength(A,4,3);

......
i = 0..3,
j = 0..2

A[i, j] := TComboBox.Create(...)

.......


← →
evvcom ©   (2005-05-24 11:44) [4]


> SetLength(A,4,3);

А сам пробовал?


← →
begin...end ©   (2005-05-24 11:45) [5]

> evvcom ©   (24.05.05 11:44) [4]

А Вы?


← →
FANAT ©   (2005-05-24 11:52) [6]

не получается.... :-(

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.


← →
Alx2 ©   (2005-05-24 11:54) [7]

>evvcom ©   (24.05.05 11:44)
Да, конечно (у меня D6).


← →
evvcom ©   (2005-05-24 11:56) [8]


> 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).


← →
FANAT ©   (2005-05-24 11:58) [9]

блин...
везет вам вы тут между собой чирикаете... а я так и не понял...
извените.. я из начинающих...
может пальцем ткнете? как сделать то ... я написал код (выше)..
он не работает...


← →
Alx2 ©   (2005-05-24 12:02) [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.


← →
Gero ©   (2005-05-24 12:03) [11]


> FANAT ©   (24.05.05 11:58)

Откажись от использования этого решения, оно тебя явно не по зубам.
Создай для начала один «комбик».
Потом статический одномерный массив из пары «комбиков».
Потом динамический одномерный.
После этого поймешь без проблем и сделаешь все сам.


← →
evvcom ©   (2005-05-24 12:07) [12]

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;


← →
begin...end ©   (2005-05-24 12:09) [13]

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


← →
FANAT ©   (2005-05-24 15:10) [14]

cb.Name:="btn_"+IntToStr(i); // Это вообще лишнее

???
а почему лишнее?? как же я потом буду обращаться к этим комбикам?


← →
_1   (2005-05-24 15:15) [15]

Не пойму зачем тут динамический..


← →
evvcom ©   (2005-05-24 15:36) [16]


> а почему лишнее??

А зачем оно?

> как же я потом буду обращаться к этим комбикам?

А зачем тебе тогда A[i,j]?


← →
ANB ©   (2005-05-24 15:40) [17]


> FANAT ©   (24.05.05 15:10) [14]
- а как ты собирался к ним обращаться ?


← →
FANAT ©   (2005-05-25 07:11) [18]

как по имени конечно....

       for i:=0 to ComponentCount-1 do
               if (Components[i] is TButton) then
               if TButton(Components[i]).Name=("btn_"+IntToStr(i)) then
            .... ну и тут всякая белиберда...


← →
evvcom ©   (2005-05-25 08:36) [19]

Допустим твои батоны с индексами в Components от 10 до 21. А при создании ты писал A[i, j].Name:="btn_"+IntToStr(i); где i от 0 до 3, причем по 3 раза пытаешься присвоить одно и то же имя (ошибку словил?) Ну и как ты думаешь, хоть один батон найдешь в своем цикле?



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.49 MB
Время: 0.024 c
14-1116589520
Piter
2005-05-20 15:45
2005.06.14
Глюк со SmartFTP


14-1116928913
Stef
2005-05-24 14:01
2005.06.14
сжатие exe-файла


3-1115260087
Fedia
2005-05-05 06:28
2005.06.14
Запись массива байт в поле таблицы БД


9-1110870243
DeadMeat
2005-03-15 10:04
2005.06.14
Software Emulation


14-1116831817
Polevi
2005-05-23 11:03
2005.06.14
сульфурна кислота




   Наверх