Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 22.03.2011, 09:22
Аватар для Rick
Rick Rick вне форума
Прохожий
 
Регистрация: 05.03.2011
Сообщения: 18
Репутация: 10
По умолчанию упорядочить тэги массива компонентов

Здравствуйте. Создаю программно массив компонентов( матрицой 4 Х 7). Как мне им присвоить тэги, чтобы было так:
0, 1, 2 ,3
4, 5, 6 , 7 и т.д?
Ответить с цитированием
  #2  
Старый 22.03.2011, 09:33
Аватар для Konrad
Konrad Konrad вне форума
Эксперт
 
Регистрация: 19.03.2009
Сообщения: 1,261
Репутация: 45834
По умолчанию

Цитата:
Сообщение от Rick
Здравствуйте. Создаю программно массив компонентов( матрицой 4 Х 7). Как мне им присвоить тэги, чтобы было так:
0, 1, 2 ,3
4, 5, 6 , 7 и т.д?
Какие теги?
Нету такого понятия в матрицах.

Есть индекс, номер, размерность, значение.
Но не тег!
Ответить с цитированием
  #3  
Старый 22.03.2011, 09:58
Аватар для Rick
Rick Rick вне форума
Прохожий
 
Регистрация: 05.03.2011
Сообщения: 18
Репутация: 10
По умолчанию

Под словом матрица 4Х7 я имел ввиду форму расположения массива кнопок на форме, а не целочисленный массив . Теперь мне надо упорядочанно присвоить тэги этим кнопкам, чтобы обращаться к каждой конкретной кнопке через его тэг.
Ответить с цитированием
  #4  
Старый 22.03.2011, 10:06
Black Raider Black Raider вне форума
Местный
 
Регистрация: 31.05.2010
Адрес: Москва
Сообщения: 466
Версия Delphi: 7
Репутация: 40
По умолчанию

т.е. вам надо каждой кнопке в ее свойство Tag прописать ее индекс? правильно понимаю?
__________________
Новый вирус - "БОМЖ"! Он просто роется в Корзине...и спит под ярлычком "Сетевое окружение"
Ответить с цитированием
  #5  
Старый 22.03.2011, 10:09
Аватар для Rick
Rick Rick вне форума
Прохожий
 
Регистрация: 05.03.2011
Сообщения: 18
Репутация: 10
По умолчанию

да, то есть:
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  
Старый 22.03.2011, 10:22
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,723
Репутация: 52347
По умолчанию

Код создания ваших кнопок в студию, но скорее всего там типа такого:
Код:
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  
Старый 22.03.2011, 10:36
Аватар для Rick
Rick Rick вне форума
Прохожий
 
Регистрация: 05.03.2011
Сообщения: 18
Репутация: 10
По умолчанию

Вот код (пардон за формат). Поправка: количество строк в отличии от столбцов может меняться:
Код:
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  
Старый 22.03.2011, 10:45
Black Raider Black Raider вне форума
Местный
 
Регистрация: 31.05.2010
Адрес: Москва
Сообщения: 466
Версия Delphi: 7
Репутация: 40
По умолчанию

Страдалецъ же тебе написал.

Код:
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  
Старый 22.03.2011, 10:53
Аватар для Rick
Rick Rick вне форума
Прохожий
 
Регистрация: 05.03.2011
Сообщения: 18
Репутация: 10
Хорошо

Спасибо!!!! Не сочтите за наглость , а как этот код изменить применительно к мому случаю, т. е. когда количество строк (i) варирутся?
Ответить с цитированием
  #10  
Старый 22.03.2011, 10:56
Black Raider Black Raider вне форума
Местный
 
Регистрация: 31.05.2010
Адрес: Москва
Сообщения: 466
Версия Delphi: 7
Репутация: 40
По умолчанию

Ваш код с исправлениями

Код:
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  
Старый 22.03.2011, 10:57
Аватар для Rick
Rick Rick вне форума
Прохожий
 
Регистрация: 05.03.2011
Сообщения: 18
Репутация: 10
По умолчанию

Огромное спасибо!
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 00:59.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025