Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > Снять значения с сотни TEdit


Автор: XpideX 8.1.2010, 11:02
У меня сотня Edit1-Edit100,
Задача - снять с них значения и загнать в матрицу 10 на 10. с счётчиками разобрался, два цикла вложенных, и один счётчик постоянно инкрементируется от 1 до 100, тут всё норм.
а вот в каком виде надо записать StrToInt(EditX->Text); где Х это нужный номер от 1 до 100. вот.

Подскажите пожалуйста, очень надо.

Автор: vikaz 8.1.2010, 11:15
Все зависит от того, как вы создали 100 Edit'ов!!! Покажите код....

Автор: Rrader 8.1.2010, 11:15
http://forum.vingrad.ru/forum/topic-110464/hl/componentcount/index.html

Автор: XpideX 8.1.2010, 12:10
TEdit существует изначально, вручную созданные.

Автор: XpideX 8.1.2010, 13:24
Код

        for (point=0; point < 100; point++) {
              if(Components[point]->ClassNameIs("TEdit"))
                ((TEdit*)Components[point])->Text=1;
        }


Не отрабатывается =(

Автор: Rodman 8.1.2010, 13:31
FindComponent тебе тоже поможет

Автор: XpideX 8.1.2010, 13:44
Код

        for (int point=0; point < 100; point++) {
            TEdit *Editlnstance = (TEdit *)FindComponent("Edit"+IntToStr(point));
            ((TEdit *)FindComponent("Edit"+IntToStr(point)))->Text = "1";
        }


Проблема Решена! всем спасибо

Автор: SVN74 8.1.2010, 13:48
Надежней было бы создать Edit(ы) динамически (100 штук), а затем по счетчику обращаться к ним.

Автор: W4FhLF 8.1.2010, 14:08
И никто даже не заикнулся про то, что такое решение (хранить матрицу 10х10 в 100 TEdit) само по себе, мягко говоря, убого. Почему нельзя хранить в гриде или tableview (что там в билдере я не знаю)?

Автор: SVN74 8.1.2010, 14:13
Цитата(W4FhLF @  8.1.2010,  14:08 Найти цитируемый пост)
И никто даже не заикнулся про то, что такое решение (хранить матрицу 10х10 в 100 TEdit) само по себе, мягко говоря, убого. Почему нельзя хранить в гриде или tableview (что там в билдере я не знаю)? 

Кто его знает где  и как человек их применяет? Может каждый Edit на своей форме. Если бы сразу было бы написано объяснение задачи, я думаю все бы сделали бы замечания. 

Автор: XpideX 10.1.2010, 14:43
Код

    point=0;
    for (int i = 1; i < 11; i++) {
         for (int j = 1; j < 11; j++) {
            if(Components[point]->ClassNameIs("TEdit")){
                arr[j][i]=StrToFloat(((TEdit *)FindComponent("Edit"+IntToStr(point)))->Text);
                point++;
            }
         }
    }


Не читает, не могу понять почему, заполнить подобным способом могу (в моём пред. посте писал), а прочитать из них - ни в одном глазу.плиз хелп, как говориться.

Автор: 586 10.1.2010, 15:18
Код
    point=0;
    for (int i = 1; i < 11; i++) {
         for (int j = 1; j < 11; j++) {
            if(TEdit *ed = dynamic_cast<TEdit*>(FindComponent("Edit"+IntToStr(point++))))
                arr[j][i]=StrToFloat(ed->Text);
         }
    }

Автор: A5uKa 10.1.2010, 16:15
Код

    point=0;
    for (int i = 1; i < 11; i++) {
         for (int j = 1; j < 11; j++) 
         {
            for (; point < (???->ComponentsCount); point ++)
           {
            if (MainForm->Components[point]->ClassNameIs("TEdit"))
                {
                   arr[j][i]=dynamic_cast<TEdit *>(MainForm->Components[point])->Text;
                   break;
                }
            }
         }
    }

Что-то такое ... ?
Но что-то у меня не правильно )

Автор: mrbrooks 11.1.2010, 09:02
Цитата(XpideX @  8.1.2010,  11:02 Найти цитируемый пост)
У меня сотня Edit1-Edit100,

трололо. 

не удержался, но - блин - W4FhLF прав камрады.  smile 

A5uKa, я даже боюсь представить, что ты делаешь.  smile 

Автор: artsb 11.1.2010, 10:03
А почему не заюзать TList и не создавать Edit'ы динамически? Гемора в разы меньше ИМХО

Автор: sawfish 11.1.2010, 11:37
Цитата

А почему не заюзать TList 

Я так делаю - очень удобно!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)