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


Автор: vmf18 28.11.2007, 15:06
Моя цель: на форме 3 компонента Еdit. В первом пользователь вводит значение переменной i, во втором Edit'e вводит значение переменной n. В третьем вводит массив чисел из n переменных(ввел первое число а[1], появляется следующий компонент Еdit и вводится второе число а[2] и т.д.). Цель программы: вывести i элемент из массива (ну в какой нибудь Label). Я даже нашел подобное решение в этом FAQ'e (у pdbq была такая же проблема), но остается загадкой как выводить это значение ведь компонент Edit создается только по ходу работы...
И еще: я только пересел на Builder и стардаю от нехватки знаний... Посоветуйте пожалуйста какие нибудь книги, сайты. Очень тяжело... Плиз smile


Вот часть кода программы:
в .h

    void __fastcall EnterDown( TObject * Sender,WORD &Key,
          TShiftState Shift);
    int EditsCount;

в .cpp

__fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner)
{
    EditsCount = 1;
    Edit1->Tag = 0;
    Edit1->OnKeyDown = EnterDown;
}
void __fastcall TForm1::EnterDown(TObject *Sender, WORD &Key,
      TShiftState Shift)
{
    if( Key == 13 )   {
        TEdit * Pressed = ( (TEdit *) Sender );
        if( Pressed->Tag == EditsCount - 1) {
            TEdit * NewEdit = new TEdit( Handle );
            NewEdit->Name = "Edit" + AnsiString( EditsCount );
            NewEdit->Parent = this;
            NewEdit->Tag = EditsCount;
            NewEdit->OnKeyDown = EnterDown;
            NewEdit->Left = Pressed->Left;
            NewEdit->Top = Pressed->Top + 20;
            NewEdit->Visible = true;
            NewEdit->SetFocus();
            EditsCount++;
        }
    }
}


Автор: TROFI 28.11.2007, 16:18
Данный код найдет елемент  Edit10 и выведет его содержимое

Код

 TObject *FindEdit;
 FindEdit = FindChildControl("Edit10");

 if (FindEdit!=NULL)
 {
  ShowMessage(((TEdit *)FindEdit)->Text);
 }


Значение поиска можешь формировать программно, по индексу

Книг по Builderu, как и многих других - смотри здесь http://www.4read.org/category/computers/

Конкретно для изучения:

Программирование в C++ Builder 6 (рекомендую есть все для базового изучения среды и компонентов C++Buider)
http://rapidshare.com/files/3563853/programmirovanie_v_c_builder_6.rar


C++Builder 6. Справочное пособие. Книга 1. Язык С++
http://rapidshare.com/files/21673763/arkhangelskijj__cbuilder_6_spravochnoe_posobie.rar

C++ Builder в задачах и примерах
http://rapidshare.com/files/18839539/c_builder_v_zadachakh_i_primerakh.rar

C++ Builder: Книга рецептов
http://rapidshare.com/files/14875138/c_builder_kniga_receptov.rar


да, можно еще при создании элементов Edit заносить в массив указателей

пример

Код

  TEdit *spisok[3] = {NULL, NULL, NULL};

  spisok[0] = (TEdit *) Sender;
  spisok[1] = (TEdit *) Sender;
  spisok[3] = (TEdit *) Sender;


потом перебирать, и если элемент массива не равен NULL, выводить значение   spisok[0]->Text;

Автор: vmf18 30.11.2007, 08:00
Спасибо!!! Все прекрасно работает!

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