Официальный сайт студ.городка НГТУ
Программирование и БД » [Delphi] Имя компонента по переменной 

#1  08.02.07 02:36

[Delphi] Имя компонента по переменной

Мне нужно чтоб имя компонента изменялось в цыкле по переменной. Чтоб можно было только добавить номер к переменной и выдать его как имя компонента. Писать к каждому компоненту код отдельно это слишком долго и утомительно.
Кто, знает помогите.

Исправлено Gizmo (08.02.07 03:00)

Offline

#2  08.02.07 05:19

rzk
Профиль

Re: [Delphi] Имя компонента по переменной

То есть ты хочешь ID компонента менять? Единственное, что придумал - сделать массив компонент и обращаться уж к нему - типа mass[i]. пожалуй, только так.

Offline

#3  08.02.07 13:12

Re: [Delphi] Имя компонента по переменной

Например имеем мы 6 батонов и хотим их все перебрать и заголовки им поменять
Сделать можно следующим образом:

Код::

procedure TForm1.Button1Click(Sender: TObject);
var i,j:integer;
begin
 for i:=0 to ComponentCount-1 do
  for j:=1 to 6 do
   if Components[i].Name='Button'+IntToStr(j) then (Components[i] as TButton).Caption:='ya';
end;

Коряво но это первое, что пришло на ум.

Offline

#4  08.02.07 15:26

Re: [Delphi] Имя компонента по переменной

Rastaman, спасибо, что помог.

Offline

#5  09.02.07 00:16

Re: [Delphi] Имя компонента по переменной

Rastaman написал(а):

Код::

 for i:=0 to ComponentCount-1 do
  for j:=1 to 6 do
   if Components[i].Name='Button'+IntToStr(j) then (Components[i] as TButton).Caption:='ya';

Коряво но это первое, что пришло на ум.

либо юзаем метод TComponent'a

Код::

  for i := 0 to 6 do
    TButton(FindComponent('Button' + IntToStr(i))).Caption := 'good';

+ проверка на nil если не уверен в наличии этих кнопок. сравнить скорость фрагментов сейчас нету времени, но думаю не сильно отличаются (за FindComponent скрывается тот же перебор что и у растамана).

F1 + FindComponent (TComponent)

Offline

Программирование и БД » [Delphi] Имя компонента по переменной 

ФутЕр:)

© Hostel Web Group, 2002-2025.   Сообщить об ошибке

Сгенерировано за 0.051 сек.
Выполнено 14 запросов.