Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/22: Рейтинг темы: голосов - 22, средняя оценка - 4.64
0 / 0 / 0
Регистрация: 21.01.2012
Сообщений: 14

Как вызвать Edit[i] (Edit i-тый)

21.01.2012, 20:20. Показов 4769. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Нужно вызывать в цикле Edit ы и менять их значение Top, как можно вызвать Edit [i] ?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
21.01.2012, 20:20
Ответы с готовыми решениями:

Как связать Edit-ы на первой форме с Edit-ами на второй форме?
Как связать Editы на первой форме с Editами на второй форме ?

Добавление с Edit в Items Combox и после этого в Edit на другую форму
Доброго времени суток. Вопрос такой. В общем, надо помочь с такой штукой. При вводе текста в Edit необходимо при нажатии кнопки перенести в...

Ограничение ввода русских букв в Edit. Всплывающая подсказка над Edit'ом
Добрый день, обращаюсь за помощью по следующим двум вопросам. 1) В Edit нужно чтобы вводились только буквы англ. и рус. void __fastcall...

10
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
21.01.2012, 23:29
Цитата Сообщение от Spenser13 Посмотреть сообщение
Нужно вызывать в цикле Edit ы и менять их значение Top, как можно вызвать Edit [i] ?
Может быть имеется ввиду "создать"? Например так__
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
     TEdit*  edi[8] ;
 
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
       for (int i=0;i<8;i++)
    {
      edi[i] = new TEdit(Form1) ;
      edi[i]->Parent = Form1 ;
      edi[i]->Name = "Edit"+IntToStr(i+1) ;
      edi[i]->Top = 24 + 32*i ;
      edi[i]->Left = 40 ;
    }            
}
0
0 / 0 / 0
Регистрация: 21.01.2012
Сообщений: 14
21.01.2012, 23:34  [ТС]
Цитата Сообщение от nick42 Посмотреть сообщение
Может быть имеется ввиду "создать"? Например так__
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
     TEdit*  edi[8] ;
 
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
       for (int i=0;i<8;i++)
    {
      edi[i] = new TEdit(Form1) ;
      edi[i]->Parent = Form1 ;
      edi[i]->Name = "Edit"+IntToStr(i+1) ;
      edi[i]->Top = 24 + 32*i ;
      edi[i]->Left = 40 ;
    }            
}
Можешь подсказать по примеру?
Тут описана моя конкретная проблема
0
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
21.01.2012, 23:46
Цитата Сообщение от Spenser13 Посмотреть сообщение
Можешь подсказать по примеру?
- едва ли... . Я стараюсь не вникать в чужие программы (для душевного спокойствия), если это не код корифея от программирования (простите...). Основная идея та, что у Вас индексированный массив эдитов (забейте туда хоть 200 штук), к которым можно обращаться как по индексам, так и по именам, данным при создании (Маша, Петя ... ). Отслеживать их число можно, используя какую-нибудь общую переменную. В общем - варианты есть.
2
 Аватар для QVO
652 / 462 / 80
Регистрация: 26.10.2010
Сообщений: 1,263
Записей в блоге: 4
22.01.2012, 03:25
При создание эдитов, в цикле задавай им Tag = i

C++
1
2
3
4
5
6
7
8
9
10
for (i = 1; i <= n; i++)
{
TEdit* T=new TEdit(FormStek);
 T->Parent=FormStek;
 T->Left=30;
 T->Top=40+30*i;
 T->Name="Edit" + IntToStr(i);
 T->Caption=(Element->Text);
 T->Tag = i;
}
Так управляй ими:
C++
1
2
3
4
5
6
7
        for (int i = 1; i < this->ComponentCount; i++)
        {
                        if(((TEdit*)this->Components[i])->Tag == i)
                        {
                                ((TEdit*)this->Components[i])->Top = 24 + 32 * i;
                        }
        }
1
0 / 0 / 0
Регистрация: 21.01.2012
Сообщений: 14
22.01.2012, 15:13  [ТС]
Спасибо, попробую использовать эти идеи во благо

Добавлено через 39 минут
видимо не ищет по Tag
При нажатии просто создает друг поверх друга...
C++
1
2
int i;
intk;
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
void __fastcall TFormStek::BtnAddClick(TObject *Sender)
{
TEdit* T=new TEdit(FormStek);
if(k!=1)
i=1;
i=i+1;
if (i>=3)
  for (int o = 1; o < FormStek->ComponentCount; o++)
        {
                        if(((TEdit*)FormStek->Components[o])->Tag == o)
                        {
                                ((TEdit*)FormStek->Components[o])->Top = 27*(i-(o-2));
                        }
        }
 
 T->Parent=FormStek;
 T->Left=30;
 T->Top=27;
 T->Name="Edit" + IntToStr(i);
 T->Text=Edit1->Text;
 T->Tag = i;
 k=1;
Добавлено через 18 минут
При
C++
1
2
3
4
5
6
7
8
9
 for (int o = 2; o < FormStek->ComponentCount; o++)
        {
                        if(((TEdit*)FormStek->Components[o])->Tag == o)
                        {
                        Edit1->Text="По тегу ищет";
 
                                ((TEdit*)FormStek->Components[o])->Top = 27*(i-(o-2));
                        }
        }
Edit1->Text остается неизменным. Похоже не находит ни 1, даже при 10 созданных
0
 Аватар для Lelik-pahan
1703 / 899 / 207
Регистрация: 25.11.2009
Сообщений: 1,848
22.01.2012, 16:40
если правильно понял вопрос, то тебе не нужно динамически создавать эдиты, а просто обращаться к уже созданным в цикле.
Пусть на форме 10 эдитов с именами Edit1 ... Edit10
C++
1
2
3
4
5
6
for(int i = 1; i <= 10; i++)
{
    TEdit * e = dynamic_cast<TEdit*>( FindComponent("Edit" + IntToStr(i)));  //находишь эдит с индексом i
    if (e)  //если был найден
        e->Top = e->Top + 10;  //увеличиваешь значение top на 10
}
1
0 / 0 / 0
Регистрация: 21.01.2012
Сообщений: 14
22.01.2012, 16:50  [ТС]
Спасибо за помощь. Теперь форма работы со стеком реализована.
Вопрос Lelik-pahan:
Можешь немного пояснить строку
C++
1
 TEdit * e = dynamic_cast<TEdit*>( FindComponent("Edit" + IntToStr(i)));  //находишь эдит с индексом i
dynamic_cast<TEdit*> и FindComponent - это встроенные функции Builder? Что они представляют из себя?
Вот итоговый результат:
C++
1
2
int i;
int k;
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
void __fastcall TFormStek::BtnAddClick(TObject *Sender)
{
TEdit* T=new TEdit(FormStek);
if(k!=1)
{
i=1;
}
i=i+1;
if (i>=3)
for(int o = 2; o <= i; o++)
{
    TEdit * e = dynamic_cast<TEdit*>( FindComponent("Edit" + IntToStr(o)));
    if (e)
        e->Top=27*(i-(o-2));
}
 T->Parent=FormStek;
 T->Left=30;
 T->Top=27;
 T->Name="Edit" + IntToStr(i);
 T->Text=Edit1->Text;
 T->Tag = i;
 k=1;
AnsiString msg = Edit1->Text;
st->Push(msg.c_str());
Memo1->Lines->Add(Edit1->Text);
0
 Аватар для QVO
652 / 462 / 80
Регистрация: 26.10.2010
Сообщений: 1,263
Записей в блоге: 4
22.01.2012, 17:30
У меня все отлично работает
Вложения
Тип файла: rar forum1.rar (323.0 Кб, 37 просмотров)
0
0 / 0 / 0
Регистрация: 21.01.2012
Сообщений: 14
22.01.2012, 17:34  [ТС]
Цитата Сообщение от QVO Посмотреть сообщение
У меня все отлично работает
У меня почему то не вышло, но варинант Лелика помог, итоговый текст того что получилось выложил.
0
 Аватар для Lelik-pahan
1703 / 899 / 207
Регистрация: 25.11.2009
Сообщений: 1,848
22.01.2012, 19:16
Цитата Сообщение от Spenser13 Посмотреть сообщение
Вопрос Lelik-pahan:
Можешь немного пояснить строку
Код C++1 TEdit * e = dynamic_cast<TEdit*>( FindComponent("Edit" + IntToStr(i))); //находишь эдит с индексом i
dynamic_cast<TEdit*> и FindComponent - это встроенные функции Builder? Что они представляют из себя?
dynamic_cast - это функция языка C++. FindComponent - билдеровская. Если тебе нужно "научное" объяснение, посмотришь в гугле. А я постараюсь объяснить так, как сам понимаю
FindComponent ищет компонент, имя которого ты указываешь в качестве параметра. Если компонент был найден, функция возвращает его адрес. Если не получилось найти, то вернёт NULL (это почти как ноль)
в своём коде я создаю указатель типа TEdit. И присваиваю ему адрес, который вернула функция FindComponent. Таким образом через указатель е можно обращаться к тому компоненту, который ты искал.
Но!!!! Функция FindComponent возвращает результат типа TComponent, он является родительским для всех компонентов. А указатель у нас типа TEdit. Получается несовместимость. Функция dynamic_cast позволяет приводить данные одного типа в другой.

Вот как-то так, я старался объяснить как можно понятней, но не уверен что получилось )
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
22.01.2012, 19:16
Помогаю со студенческими работами здесь

Перенос из одного Edit в другой Edit на разных формах (ошибка)
Доброго всем дня. Вопрос такой. Хочу передать результат со второго Едита на второй форме, на 7 сЕдит 7 формы. в общем пробовал так: В...

Считать с Edit текст, убрать последний символ из строки и снова записать в Edit
Всем доброго времени суток. У меня тут возник вопрос, как можно считать с Edit текст, а потом убрать последний символ из этой строки и...

Запись в файл из полей Edit и проверка Edit на пустоту
TForm1 *Form1; int Ext=0; int i; //--------------------------------------------------------------------------- __fastcall...

Вывести в 11-ый Edit минимальное из значений предыдущих 10-ти Edit-ов
Всем привет. У меня такая задача: есть 10 едитов(Edit1-Edit10) я ввожу в них числа и должно в Edit11 вывести минимальное из чисел. Помогите...

ТЕКСТ: С Edit'a в масив и обратно в EDIT
вот у меня задание (сам себе захотел научиться) но так и не научился ( зхотел ТЕКСТ перевести в масив (чтобы потом работать с елементами...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru