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

Перебор компонентов Memo на форме

06.08.2013, 12:37. Показов 2031. Ответов 21
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
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
if (TV2->Selected->Text=="1 "){
Memo2 -> SendToBack();
Memo3 -> SendToBack();
Memo4 -> SendToBack();
Memo5 -> SendToBack();
Memo6 -> SendToBack();
Memo7 -> SendToBack();
Memo8 -> SendToBack();
Memo9 -> SendToBack();
Memo10 -> SendToBack();
Memo11 -> SendToBack();
Memo12 -> SendToBack();
Memo13 -> SendToBack();
Memo14 -> SendToBack();
Memo15 -> SendToBack();
Memo16 -> SendToBack();
Memo17 -> SendToBack();
Memo18 -> SendToBack();
Memo19 -> SendToBack();
Memo20 -> SendToBack();
Memo21 -> SendToBack();
Memo22 -> SendToBack();
Memo23 -> SendToBack();
Memo24 -> SendToBack();
Memo25 -> SendToBack();
Memo26 -> SendToBack();
Memo27 -> SendToBack();
Memo28 -> SendToBack();
Memo1->Show();}
Помогите уменьшить код. Builder дает ошибку на Мемо при использовании цикла :
for(int i = 2; i < 29; i++){
Memoi -> SendToBack();
}.


Заранее выражаю свою благодарность :-))))
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
06.08.2013, 12:37
Ответы с готовыми решениями:

Перебор и сравнение позиций компонентов на форме
Рубрика моих вопросов постоянно пополняется да-да :D Всем доброго вечера.Хорошего настроения....

Сортировать значения компонентов массива по возрастанию суммы цифр этих компонентов
Нужно сделать задачу разными видами сортировок. Помогите поэалуйста. Я не успеваю сделать. Это на...

Как найти строку в массиве компонентов Memo?
Есть 9 компонентов Memo размещенных на форме.В одном из них есть слово например &quot;Поиск&quot;.Это слово и...

21
Эксперт 1С
 Аватар для Joker_vad
476 / 413 / 93
Регистрация: 26.09.2012
Сообщений: 1,922
06.08.2013, 12:52
C++
1
2
3
4
5
6
7
8
9
void __fastcall TForm1::FormCreate(TObject *Sender)
{
 int i=0;
 for (i=0;i<Form1->ComponentCount;i++)
 {
  if (Form1->Components[i]->ClassNameIs("Tmemo"))
   ((Tmemo *)(Form1->Components[i]))->SendToBack();
 }
}
Мб это пригодится
1
0 / 0 / 0
Регистрация: 06.08.2013
Сообщений: 14
06.08.2013, 13:06  [ТС]
У меня на одной форме 4 панели и на одной из них 67 штук Мемо. Есть TreeViev. Мне надо чтоб при выборе одной из веток TreeViev показывала одно из Мемо. Поэтому все кроме одной должны отойти на второй план.
0
Эксперт 1С
 Аватар для Joker_vad
476 / 413 / 93
Регистрация: 26.09.2012
Сообщений: 1,922
06.08.2013, 13:08
попробуй имя проанализировать, они же у тебя типичные, тупо функциями работы со строкой как вариант
1
Я Фоюмчанин ? дааааа)
 Аватар для ivan.-94
213 / 204 / 23
Регистрация: 02.06.2012
Сообщений: 1,424
Записей в блоге: 12
06.08.2013, 13:12
C++
1
2
3
4
5
6
7
void __fastcall TForm1::AllHide_OneShow(int number){
    for (int i=0;i<Form1->ComponentCount;i++){
        if (Form1->Components[i]->ClassNameIs("Tmemo"))
            if(((Tmemo *)(Form1->Components[i]))!=((Tmemo *)(Form1->Components[number])))
                ((Tmemo *)(Form1->Components[i]))->SendToBack();
    }
}
А потом просто вызывать функцию и передавать параметром номер мемо
1
Я Фоюмчанин ? дааааа)
 Аватар для ivan.-94
213 / 204 / 23
Регистрация: 02.06.2012
Сообщений: 1,424
Записей в блоге: 12
06.08.2013, 13:23
Вот рабочий пример.
AllHide_OneShow.rar
0
0 / 0 / 0
Регистрация: 06.08.2013
Сообщений: 14
06.08.2013, 14:34  [ТС]
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#include <vcl.h>
#pragma hdrstop
 
#include "nilu.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::AllHide_OneShow(int number){
    for (int i=0; i<Form1->ComponentCount; i++){
        if (Form1->Components[i]->ClassNameIs("TMemo"))
            if(((TMemo *)(Form1->Components[i]))!=((TMemo *)(Form1->Components[number])))
                ((TMemo *)(Form1->Components[i]))->SendToBack();
    }
}
//---------------------------------------------------------------------------
void __fastcall TForm1::TV2Click(TObject *Sender)
{
    if (TV2->Selected->Text=="1 "){
            AllHide_OneShow(0);}
 
    if (TV2->Selected->Text=="2 "){
            AllHide_OneShow(1);}
 
    if (TV2->Selected->Text=="3 "){
            AllHide_OneShow(2);}
 
        if (TV2->Selected->Text=="3.1 "){
            AllHide_OneShow(3);}
 
    if (TV2->Selected->Text=="3.1.1 "){
            AllHide_OneShow(4);}
 
        if (TV2->Selected->Text=="3.1.2 "){
            AllHide_OneShow(5);}
 
    if (TV2->Selected->Text=="3.1.3 "){
            AllHide_OneShow(6);}
 
        if (TV2->Selected->Text=="3.1.4 "){
            AllHide_OneShow(7);}
 
        if (TV2->Selected->Text=="7.3 "){
         AllHide_OneShow(27);}
 }

Может вы увидите ошибку, потому что я уже не вижу. Мне из всех Мемо показывает только второй.(((
0
Эксперт 1С
 Аватар для Joker_vad
476 / 413 / 93
Регистрация: 26.09.2012
Сообщений: 1,922
06.08.2013, 14:43
Цитата Сообщение от search_fo Посмотреть сообщение
Memo1->Show();
мб вот это куда-то надо прекрутить
0
0 / 0 / 0
Регистрация: 06.08.2013
Сообщений: 14
06.08.2013, 14:49  [ТС]
Нет, все по-прежнему((
0
Эксперт 1С
 Аватар для Joker_vad
476 / 413 / 93
Регистрация: 26.09.2012
Сообщений: 1,922
06.08.2013, 14:58
C++
1
2
3
4
5
6
void __fastcall TForm1::AllHide_OneShow(int number){
    for (int i=0; i<Form1->ComponentCount; i++){
        if (Form1->Components[i]->ClassNameIs("TMemo"))
            if(((TMemo *)(Form1->Components[i]))!=((TMemo *)(Form1->Components[number])))
                ((TMemo *)(Form1->Components[i]))->SendToBack();
((TMemo *)(Form1->Components[number]))->Show();
т.е функция выглядит так?
0
0 / 0 / 0
Регистрация: 06.08.2013
Сообщений: 14
06.08.2013, 15:10  [ТС]
Нет , без последней строчки. И самое главное AllHide_OneShow.rar работает отлично, у меня все такое же, но не работает.

Добавлено через 4 минуты
Нет, без последней строчки. Ее тоже подставила - не работает.
0
Эксперт 1С
 Аватар для Joker_vad
476 / 413 / 93
Регистрация: 26.09.2012
Сообщений: 1,922
06.08.2013, 15:12
Проверяйте свойства объектов мемо, мб в этом причина

Добавлено через 1 минуту
посмотри что передается в текст tv2
0
0 / 0 / 0
Регистрация: 06.08.2013
Сообщений: 14
06.08.2013, 15:28  [ТС]
Переделала. Результат такой же.
0
Эксперт 1С
 Аватар для Joker_vad
476 / 413 / 93
Регистрация: 26.09.2012
Сообщений: 1,922
06.08.2013, 15:29
Цитата Сообщение от Joker_vad Посмотреть сообщение
посмотри что передается в текст tv2
передается все нормально там, текст всегда разный да?
0
Я Фоюмчанин ? дааааа)
 Аватар для ivan.-94
213 / 204 / 23
Регистрация: 02.06.2012
Сообщений: 1,424
Записей в блоге: 12
06.08.2013, 15:41
Цитата Сообщение от Joker_vad Посмотреть сообщение
C++
1
2
3
4
5
6
void __fastcall TForm1::AllHide_OneShow(int number){
    for (int i=0; i<Form1->ComponentCount; i++){
        if (Form1->Components[i]->ClassNameIs("TMemo"))
            if(((TMemo *)(Form1->Components[i]))!=((TMemo *)(Form1->Components[number])))
                ((TMemo *)(Form1->Components[i]))->SendToBack();
((TMemo *)(Form1->Components[number]))->Show();
т.е функция выглядит так?
C++
1
((TMemo *)(Form1->Components[number]))->Show();
Это вообще зачем?
0
Эксперт 1С
 Аватар для Joker_vad
476 / 413 / 93
Регистрация: 26.09.2012
Сообщений: 1,922
06.08.2013, 15:42
Цитата Сообщение от search_fo Посмотреть сообщение
if (TV2->Selected->Text=="1 "){ Memo2 -> SendToBack(); Memo3 -> SendToBack(); Memo4 -> SendToBack(); Memo5 -> SendToBack(); Memo6 -> SendToBack(); Memo7 -> SendToBack(); Memo8 -> SendToBack(); Memo9 -> SendToBack(); Memo10 -> SendToBack(); Memo11 -> SendToBack(); Memo12 -> SendToBack(); Memo13 -> SendToBack(); Memo14 -> SendToBack(); Memo15 -> SendToBack(); Memo16 -> SendToBack(); Memo17 -> SendToBack(); Memo18 -> SendToBack(); Memo19 -> SendToBack(); Memo20 -> SendToBack(); Memo21 -> SendToBack(); Memo22 -> SendToBack(); Memo23 -> SendToBack(); Memo24 -> SendToBack(); Memo25 -> SendToBack(); Memo26 -> SendToBack(); Memo27 -> SendToBack(); Memo28 -> SendToBack(); Memo1->Show();}
Опираясь на то что это заведомо работает, но впринципе нафиг это не нужно
0
Я Фоюмчанин ? дааааа)
 Аватар для ivan.-94
213 / 204 / 23
Регистрация: 02.06.2012
Сообщений: 1,424
Записей в блоге: 12
06.08.2013, 15:47
search_fo, что за компонент у вас под именем TV2?

Добавлено через 2 минуты
Цитата Сообщение от Joker_vad Посмотреть сообщение
Сообщение от search_fo
if (TV2->Selected->Text=="1 "){ Memo2 -> SendToBack(); Memo3 -> SendToBack(); Memo4 -> SendToBack(); Memo5 -> SendToBack(); Memo6 -> SendToBack(); Memo7 -> SendToBack(); Memo8 -> SendToBack(); Memo9 -> SendToBack(); Memo10 -> SendToBack(); Memo11 -> SendToBack(); Memo12 -> SendToBack(); Memo13 -> SendToBack(); Memo14 -> SendToBack(); Memo15 -> SendToBack(); Memo16 -> SendToBack(); Memo17 -> SendToBack(); Memo18 -> SendToBack(); Memo19 -> SendToBack(); Memo20 -> SendToBack(); Memo21 -> SendToBack(); Memo22 -> SendToBack(); Memo23 -> SendToBack(); Memo24 -> SendToBack(); Memo25 -> SendToBack(); Memo26 -> SendToBack(); Memo27 -> SendToBack(); Memo28 -> SendToBack(); Memo1->Show();}
Опираясь на то что это заведомо работает, но впринципе нафиг это не нужно
Ага и так 28 раз да?
0
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
06.08.2013, 15:52
search_fo, золотко, а с чего Вы взяли, что Components[i], когда он соответствует, предположим, Memo3, - тоже будет иметь индекс 3 ? К Components относятся все компоненты формы, в том числе Label, Edit и т.д. И их нумерацию внутри списка Вы не угадаете, только при случайном совпадении функция отработает. Нужно из имени компонента TMemo вычленить его номер, преобразовать в число и уже его сравнивать с параметром number.
2
Я Фоюмчанин ? дааааа)
 Аватар для ivan.-94
213 / 204 / 23
Регистрация: 02.06.2012
Сообщений: 1,424
Записей в блоге: 12
06.08.2013, 16:01
Цитата Сообщение от nick42 Посмотреть сообщение
Нужно из имени компонента TMemo вычленить его номер, преобразовать в число и уже его сравнивать с параметром number.
Ну а если так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
    AllHide_OneShow("Memo1");
}
//---------------------------------------------------------------------------
void __fastcall TForm1::AllHide_OneShow(AnsiString Name){
    for (int i=0;i<Form1->ComponentCount;i++){
        if (Form1->Components[i]->ClassNameIs("TMemo"))
            if(((Form1->Components[i]->Name))!=Name)
                ((TMemo *)(Form1->Components[i]))->SendToBack();
    }
}
//---------------------------------------------------------------------------
1
0 / 0 / 0
Регистрация: 06.08.2013
Сообщений: 14
06.08.2013, 16:02  [ТС]
Компонента TV2 - TreeViev)) То что 28 раз- это еще надо проделать для каждого из 28 компонент)) Поэтому хотелось бы как - то уменьшить код)))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
06.08.2013, 16:02
Помогаю со студенческими работами здесь

Edit Memo Массив Добовление удаление с Memo исходя из введеных данных в Edit
Помогите реализовать такое вот задание: Есть форма на которой присутствуют Memo1 Edit1 Button1 ...

Перенос текста из Memo в Memo (Drag&Drop)
Подскажите как осуществить перетаскивание текста из memo в memo в с++ builder???

Перебор Widget на форме
Здравствуйте, подскажите как перебрать динамически созданые формы, для того что бы считать с каждой...

Размещение компонентов на динамически созданной форме
Здравствуйте! 1) Я создал форму динамическим способом TForm *Dialog=new TForm(this); , но...

размеры компонентов в форме qt
Здравствуйте,я написал программу,в которой при выборе в меню геометрической фигуры, она...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера 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. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru