Конференция "Начинающим" » Обращение к объектам по именни. [D7, WinXP]
 
  • Гость (31.03.08 08:26) [0]
    Возможно ли обращатся к объектам примерно так:
    for i:=1 to 100 do
    button[i].visible:=false;
  • YurikGL © (31.03.08 08:31) [1]
    1) Создать массив из TButton
    2) FindComponent (button+IntToStr(i)) (вроде так было)
  • brother (31.03.08 09:21) [2]

    > 1) Создать массив из TButton
    > 2) FindComponent (button+IntToStr(i)) (вроде так было)

    а не "button"+IntToStr(i))   ?
  • Kolan © (31.03.08 09:24) [3]
    > Возможно ли обращатся к объектам примерно так:

    for I := 0 to ComponentCount — 1 do
     if Components[I] is TButton then
       (Components[I] as TButton).Visible := False;

  • YurikGL © (31.03.08 09:37) [4]

    > а не "button"+IntToStr(i))   ?

    Так правильней :))
  • Reindeer Moss Eater © (31.03.08 09:46) [5]
    Обращение к объектам по именни. [D7, WinXP]

    Возможно ли обращатся к объектам примерно так:
    for i:=1 to 100 do
    button[i].visible:=false;


    Это не по имени.
  • Семеныч (31.03.08 11:45) [6]
    > Kolan ©   (31.03.08 09:24) [3]

    AS приводит к повторной проверке. Она не дает ничего, кроме ненужных потерь.
  • Palladin © (31.03.08 11:56) [7]

    > Семеныч   (31.03.08 11:45) [6]

    я ему уже говорил :) видимо подзабыл... :)
  • Гость (31.03.08 13:52) [8]

    > Обращение к объектам по именни. [D7, WinXP]
    >
    > Возможно ли обращатся к объектам примерно так:
    > for i:=1 to 100 do
    > button[i].visible:=false;
    >
    > Это не по имени.

    Почему собственно нет?
    бутону любое имя мона задать например
    for i:=1 to 100 do
     knopka[i].visible:=false
  • Reindeer Moss Eater © (31.03.08 13:54) [9]
    knopka[i].visible:=false

    И где здесь "по имени"?
    Здесь по индексу.
  • Гость (31.03.08 13:57) [10]
    Пример условный. мне просто было интерестно можно ли обращатся к объектам сгнерироваными именами типа
    s:= некоторые вычисления.
    объект(s).color := red .
  • Reindeer Moss Eater © (31.03.08 13:58) [11]
    где ты увидел сгенерированные имена?
    ты увидел сгенерированные индексы массива.
  • Reindeer Moss Eater © (31.03.08 14:00) [12]
    knopka[1].name := 'имя';
    knopka[1].visible := false;

    knopka[1].name := 'другое_имя';
    knopka[1].visible := true;

    Если имя меняется, то при обращении "по имени" должен был измениться программный код. А он как был так и остался knopka[1]
  • Гость (31.03.08 14:09) [13]
    Допустим простая игра на интуицию поле 5 на 5 (25 кнопок). пользователь тыкает одну после чего комп рандомно выбирает из этих 25 одну и меняет ее цвет.кнопки названы H1-H25.
    S11click....
    begin
    i:=
    s:='H'+inttostr(random(25));
    Объектпод именем(s).color:=red;
    end;
    Это обращение по индексу или по имени?
  • Сергей М. © (31.03.08 14:15) [14]

    > кнопки названы H1-H25


    Имена для этой цели нафиг не нужны, достаточно организовать двумерный массив объектов-кнопок.
  • Reindeer Moss Eater © (31.03.08 14:22) [15]
    Это обращение по индексу или по имени?

    Это не обращение вообще. Это желаемый псевдокод.
  • Palladin © (31.03.08 14:24) [16]

    > Гость   (31.03.08 14:09) [13]

    по имени
  • Гость (31.03.08 14:30) [17]

    > Имена для этой цели нафиг не нужны, достаточно организовать
    > двумерный массив объектов-кнопок.

    я довольнотаки недавно в программировании и много не знаю..а как создать такой масив? или хоть литературку посаветуйте а то я тока о базах в основном чтил.
  • Kolan © (31.03.08 14:31) [18]
    > AS приводит к повторной проверке.

    Ты по это?
    TButton(Components[I])

  • {RASkov} © (31.03.08 14:41) [19]
    > [17] Гость   (31.03.08 14:30)
    > как создать такой масив?

    type TArrButt = array of array of TButton;
    var ArrButt: TArrButt;
    ..................
    begin
     SetLength(ArrButt, 5, 5);
    ...

    begin
     ArrButt[2,3].Visible:=False;

    В принципе и одномерного массива для этой задачи хватит, или я неправильно понял [14] (


    > [18] Kolan ©   (31.03.08 14:31)
    > Ты по это? TButton(Components[I])

    нет смысла as использовать на пару с is... Если проверка is прошла, то прямое приведение достаточно...
 
Конференция "Начинающим" » Обращение к объектам по именни. [D7, WinXP]
Есть новые Нет новых   [134433   +24][b:0][p:0.001]