Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.06.14;
Скачать: 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 вся ветка

Текущий архив: 2005.06.14;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.098 c
1-1117108540
Артём К.
2005-05-26 15:55
2005.06.14
Выделение и перетаскивание мышью нескольких компонент?


14-1116924071
Некто
2005-05-24 12:41
2005.06.14
Как продать дорогую спецавтотехнику


3-1114185659
@k@DElpher
2005-04-22 20:00
2005.06.14
подсчёт кол-во в складской программе


14-1117104815
YurikGL
2005-05-26 14:53
2005.06.14
Кто встречал проблему с печатью из Acrobat-а


4-1113854624
Wistful
2005-04-19 00:03
2005.06.14
узнать события Light Alloy