Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
394 / 194 / 48
Регистрация: 11.07.2013
Сообщений: 1,210

В продолжение темы «Как изменить свойство сразу у нескольких компонентов»

12.01.2014, 11:35. Показов 1136. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
А как можно поступить, если у меня есть данные в массиве и хотелось бы их вывести сразу в несколько Edit-ов, что-то типа такого:

for(n=0; n<50; n++)
{
Editn->Text=IntToStr(M[n]);
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
12.01.2014, 11:35
Ответы с готовыми решениями:

Как изменить свойства сразу у нескольких компонентов
void __fastcall TForm1::Button3Click(TObject *Sender) { Edit4-&gt;Text = Edit4-&gt;Text +Button3-&gt;Caption; } ...

Как изменить дату сразу нескольких файлов одновременно?
К примеру если их больше 500-ста, в одном каталоге

Продолжение темы как раскрутить слово...
Вчера только интересовался как поднять страницы в Рамблер заточенные под одно поисковое слово, сегодня свершилось с 172 места сразу на...

5
 Аватар для Tarik20
21 / 22 / 5
Регистрация: 14.02.2013
Сообщений: 243
12.01.2014, 11:55
Можно Edit'ы тоже держать в массиве Edits, потом таким кодом вывести:
C++
1
2
3
4
for (i = 0; i < 50; i++)
{
Edits[i]->Text = IntToStr(M[i]);
}
, объявить массив Edits вот так:
C++
1
TEdit *Edits[50];
.
1
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
12.01.2014, 12:03
.. что-нибудь наподобие__
C++
1
2
3
4
5
6
7
8
void __fastcall TForm1::Button1Click(TObject *Sender)
{
     TEdit *edt;
     for (int i=1;i<50;i++)  {
       edt = static_cast<TEdit*>(FindComponent("Edit"+IntToStr(i))) ;
       if (edt) edt->Text = M[i] ;
     }
}
1
394 / 194 / 48
Регистрация: 11.07.2013
Сообщений: 1,210
12.01.2014, 13:04  [ТС]
А как поступить в таком случае:
У меня ,допустим, 50 Edit-ов в которых отображается температура в 50 точках. В отдельном потоке я поочерёдно опрашиваю все датчики и в конце опроса вызываю функцию заполнения соответствующего Edit-а:
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
28
29
30
31
32
33
//---------------------------------------------------------------------------
void __fastcall MyObmen::Execute()
{
      while(!Terminated)
     {
            Num=0; // Опрос начинать с первого датчика.
            for(Num=0; Num<50; Num++)
           {
                  Opros(); // Опрос датчика с номером Num.
                  WaitForSingleObject(MyH1, INFINITE);// Ожидание освобождения и захват мьтекса.
                  Vivod(); // Вывод информации в соответствующий Edit.
                  ReleaseMutex(MyH1); // Освобождение мьютекса.
            {
      {
{               
//---------------------------------------------------------------------------
void __fastcall MyObmen:: Vivod ()// Вывод информации в соответствующий Edit.
{
      // Сейчас работает так:
      Switch(Num)
      {
            case 0: Edit1->Text=IntToStr(M[Num]);
            break;
            case 1: Edit2->Text=IntToStr(M[Num]);
            break;
            ……………………………
            case 49: Edit50->Text=IntToStr(M[Num]);
            break;
      }
      // А хотелось бы так:
      EditNum->Text=IntToStr(M[Num]);
}
//---------------------------------------------------------------------------
Добавлено через 27 минут
1. Я извиняюсь, Edit следует читать как Form1->Edit.
2. Массив Edit-ов – замечательная идея (раньше никогда и не слышал о таком). А где его объявлять, чтобы он был виден в потоке?
3. Второй ответ тоже очень интересен. А можно ли как-то сделать, чтобы увидеть указатель(TEdit *edt) в потоке?
0
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
12.01.2014, 13:56
Цитата Сообщение от shyub Посмотреть сообщение
можно ли как-то сделать, чтобы увидеть указатель(TEdit *edt) в потоке?
Что значит "увидеть"? edt в примере - это синоним одного из 50 эдитов, которые "обслуживаются" в цикле. Предполагается, что эти 50 эдитов уже созданы и имеют имена Edit1 - Edit50.
1
394 / 194 / 48
Регистрация: 11.07.2013
Сообщений: 1,210
12.01.2014, 15:25  [ТС]
Вот проверил вариант Tarik20:
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
28
29
30
31
32
33
34
35
36
37
//------Unit1.h---------
class TForm1 : public TForm
{
__published:    // IDE-managed Components
    TGroupBox *GroupBox1;
    TEdit *Edit1;
    TEdit *Edit2;
    TEdit *Edit3;
    TEdit *Edit4;
    TEdit *Edit5;
    TButton *Button1;
    void __fastcall FormCreate(TObject *Sender);
    void __fastcall Button1Click(TObject *Sender);
private:    // User declarations
public:     // User declarations
    TEdit *Edits[5];   // Массив Edit-ов.
    int M[5];
    __fastcall TForm1(TComponent* Owner);
};
//--------Unit1.cpp---------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
    for(int n=0; n<5; n++)
    {
        M[n]=5+5*n;
    }
}
//-------------------------------------
// Запись в массив Edit-ов.
void __fastcall TForm1::Button1Click(TObject *Sender)
{
    for(int n=0; n<5; n++)
    {
        Edits[n]->Text=IntToStr(M[n]);
    }
}
//---------------------------------------
Ошибки нет, но в Edit-ах ничего не появляется.

Добавлено через 3 минуты
Изменил функцию FormCreate() и всё заработало:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
void __fastcall TForm1::FormCreate(TObject *Sender)
{
    for(int n=0; n<5; n++)
    {
 
        M[n]=5+5*n;
    }
    Edits[0]=Edit1;
    Edits[1]=Edit2;
    Edits[2]=Edit3;
    Edits[3]=Edit4;
    Edits[4]=Edit5;
}
Добавлено через 28 минут
Проверил вариант nick42, работает. Большое спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
12.01.2014, 15:25
Помогаю со студенческими работами здесь

Изменить свойство у нескольких контроллов
Например: private void button4_Click(object sender, EventArgs e) { button14.Visible = true; ...

Изменить в цикле свойство нескольких Label
Вопрос для гуру: Имеем: Label1.ForeColor = Color.Green Label2.ForeColor = Color.Green ..... ...... ..... ...

Изменить значение сразу в нескольких полях
у меня есть массив в котором ключ соответствует индентификатору записи, а значение - то на сколько должно увеличиться поле в этой записи. ...

Изменить значение сразу нескольких CheckBox
Есть много чекбокосв (например 100) как мне лучше реализвовать груповое включение наппример... чекбоксов начиная с 20-го и до 50-го ...

Изменить значение сразу нескольких CheckBox
Как изменить значение нескольких Checkbox, не писать же Checkbox1.Checked:= false; Checkbox2.Checked:= false; Checkbox3.Checked:=...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru