![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
||||
|
||||
|
Здравствуйте. Создаю программно массив компонентов( матрицой 4 Х 7). Как мне им присвоить тэги, чтобы было так:
0, 1, 2 ,3 4, 5, 6 , 7 и т.д? |
|
#2
|
||||
|
||||
|
Цитата:
Нету такого понятия в матрицах. Есть индекс, номер, размерность, значение. Но не тег! |
|
#3
|
||||
|
||||
|
Под словом матрица 4Х7 я имел ввиду форму расположения массива кнопок на форме, а не целочисленный массив
. Теперь мне надо упорядочанно присвоить тэги этим кнопкам, чтобы обращаться к каждой конкретной кнопке через его тэг. |
|
#4
|
|||
|
|||
|
т.е. вам надо каждой кнопке в ее свойство Tag прописать ее индекс? правильно понимаю?
|
|
#5
|
||||
|
||||
|
да, то есть:
0,1,2,3 4,5,6,7 8,9,10,11 и т.д., а не MyButton[i,j].Tag:= (i*j) Последний раз редактировалось Rick, 22.03.2011 в 10:11. |
|
#6
|
||||
|
||||
|
Код создания ваших кнопок в студию, но скорее всего там типа такого:
Код:
Var
X,Y,i: Integer;
begin
i := 0;
for Y := 0 to 6
do for X := 0 to 3
do with TButton.Create(Self)
do begin
Inc(i);
Top := Y * 30;
Left := X * 30;
Width := 30;
Height := 30;
Tag := i;
Caption := IntToStr(i);
Parent := Self;
end;
end; |
| Этот пользователь сказал Спасибо Страдалецъ за это полезное сообщение: | ||
Rick (03.08.2012)
| ||
|
#7
|
||||
|
||||
|
Вот код (пардон за формат). Поправка: количество строк в отличии от столбцов может меняться:
Код:
var
arr3:array of array of TButton;
//.....................................................
procedure TForm1.Label1Click(Sender: TObject);
var i, j: byte;
n: integer;
count:String;
begin
count:=inputbox('Введите клоичество вопросов',' ','10');
try
n := StrToInt(count);
except
on EConvertError do ShowMessage('???');
end;
setlength(arr3,n,4);
for i:=0 to n-1 do
for j:=0 to 3 do begin
Arr3[i,j]:=Tbutton.Create(Self);
Arr3[i,j].Parent := Self;
Arr3[i,j].Top:=(i-1)*Arr3[i,j].Height+50;
Arr3[i,j].Left:=(j-1)*Arr3[i,j].Width+800;
Arr3[i,j].Width :=50;
Arr3[i,j].tag:=(i+1)*(j+1); //чтобы обращаться к контролу по его тагу
Arr3[i,j].caption :=IntToStr ((i+1)*(j+1));
TButton( Arr3[i,j]).onClick:=arr1Click;//присвоил обработчику процедуры OnClick обычной кнопки обработчик массива кнопок процедуру arr1Click,
end;
end;в итоге по тэгам выходит так: 1,2,3,4 2,4,6,8 3,6,9,12, а мне надо чтоб 1,2,3,4 5,6,7,8 Последний раз редактировалось Admin, 22.03.2011 в 11:35. |
|
#8
|
|||
|
|||
|
Страдалецъ же тебе написал.
Код:
Var
X,Y,i: Integer;
begin
i := 0;
for Y := 0 to 6
do for X := 0 to 3
do with TButton.Create(Self)
do begin
Inc(i);
Top := Y * 30;
Left := X * 30;
Width := 30;
Height := 30;
Tag := i;
Caption := IntToStr(i);
Parent := Self;
end;
end;![]() |
|
#9
|
||||
|
||||
Спасибо!!!! Не сочтите за наглость , а как этот код изменить применительно к мому случаю, т. е. когда количество строк (i) варирутся? |
|
#10
|
|||
|
|||
|
Ваш код с исправлениями
Код:
procedure TForm1.Label1Click(Sender: TObject);
var i, j: byte;
n,k: integer;
count:String;
begin
count:=inputbox('Введите клоичество вопросов',' ','10');
try
n := StrToInt(count);
except
on EConvertError do ShowMessage('???');
end;
setlength(arr3,n,4);
k:=0;
for i:=0 to n-1 do
for j:=0 to 3 do begin
inc(k);
Arr3[i,j]:=Tbutton.Create(Self);
Arr3[i,j].Parent := Self;
Arr3[i,j].Top:=(i-1)*Arr3[i,j].Height+50;
Arr3[i,j].Left:=(j-1)*Arr3[i,j].Width+800;
Arr3[i,j].Width :=50;
Arr3[i,j].tag:=k; //чтобы обращаться к контролу по его тагу
Arr3[i,j].caption :=IntToStr ((i+1)*(j+1));
TButton( Arr3[i,j]).onClick:=arr1Click;//присвоил обработчику процедуры OnClick обычной кнопки обработчик массива кнопок процедуру arr1Click,
end;
end; |
| Этот пользователь сказал Спасибо Black Raider за это полезное сообщение: | ||
Rick (03.08.2012)
| ||
|
#11
|
||||
|
||||
|
Огромное спасибо!
|