С Новым годом! Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.53/19: Рейтинг темы: голосов - 19, средняя оценка - 4.53
2 / 2 / 0
Регистрация: 09.04.2011
Сообщений: 110

Работа с динамически созданными объекта на PageControl

06.06.2011, 10:49. Показов 3947. Ответов 21
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. На форме есть PageControl, в нем по ходу работы программы динамически создается RichEdit, все хорошо, вот только не знаю как работать с этим с этим динамически созданным RichEdot'ом. К примеру: активизируется какая-либо вкладка (они тоже создаются динамически), а в ней уже динамически создан RichEdit, и нужно получить текст из него ... Подскажите пожалуйста, как можно это организовать?
Вот код динамчиеского создания вкладок и RichEdit:
C++
1
2
3
4
5
6
7
8
9
10
11
void __fastcall TForm1::CreateNewClick(TObject *Sender)
{
TTabSheet *NewTabSheet = new TTabSheet(PageControl1);
NewTabSheet->PageControl = PageControl1;
NewTabSheet->Caption = "new.script";
 
TRichEdit *RE1 = new TRichEdit(NewTabSheet);
RE1->Parent = NewTabSheet;
RE1->Height = NewTabSheet->Height;
RE1->Width = NewTabSheet->Width;
}
Заранее спасибо!
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
06.06.2011, 10:49
Ответы с готовыми решениями:

Работа с динамически созданными объектами
У меня динамически создаются Label со своими значениями Caption Также ставится событие Lb->OnClick = btpclick; Вопрос в том как...

Работа с динамически созданными обьектами
Конкретно нужно создать один обьект(TCppWebBrowser) и указать его родителем другой обьект который был так же создан динамически например...

Работа с динамически созданными компонентами
Добрый вечер. Подскажите, при нажатии на батон у меня создаются батон и 4 эдита, они хранятся в массиве записей, мне нужно, чтоб при...

21
 Аватар для Maluda
1280 / 598 / 116
Регистрация: 18.08.2009
Сообщений: 832
06.06.2011, 16:52
Лучший ответ Сообщение было отмечено как решение

Решение

Вариантов масса:

1 вариант
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
// в обработчике формы OnCreate
TList *ListRichEdits = new TList();
 
void __fastcall TForm1::CreateNewClick(TObject *Sender)
{
TTabSheet *NewTabSheet = new TTabSheet(PageControl1);
NewTabSheet->PageControl = PageControl1;
NewTabSheet->Caption = "new.script";
 
TRichEdit *RE1 = new TRichEdit(NewTabSheet);
RE1->Parent = NewTabSheet;
RE1->Height = NewTabSheet->Height;
RE1->Width = NewTabSheet->Width;
 
ListRichEdits->Add(RE1);
}
 
// i - индекс от 0 до ListRichEdits->Count-1
TRichEdit *RE1 = (TRichEdit *)ListRichEdits->Items[i];
 
// не забыть удалить ListRichEdits
2 вариант давать уникальные имена и потом находить объект по имени
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
TRichEdit *RE1 = new TRichEdit(NewTabSheet);
static int iUnique = 0;
// имя не должно повторяться, и не должно содержать пробелов и спец.символов
RE1->Name = "RE_" + AnsiString(RE1);
RE1->Parent = NewTabSheet;
RE1->Height = NewTabSheet->Height;
RE1->Width = NewTabSheet->Width;
 
// добавляем этот компонент в список компонентов формы, чтобы можно было найти
this->InsertComponent(RE1);
 
// теперь мы можем в любое время найти этот объект по имени
TComponent *FComp = this->FindComponent("RE_0");
if (FComp) {
      TRichEdit *FRichEdit = dynamic_cast<TRichEdit *>(FComp);
      if (FRichEdit) {
                 // работаем с компонентом
      }
}
3 вариант
Зная, что на вкладке только один RichEdit
Пример: получаем указатель на RichEdit в активной вкладке,
но это при условии, что на вкладке ТОЛЬКО ОН!
C++
1
2
3
4
5
6
7
TControl *ControlRich = PageControl1->ActivePage->Controls[0];
if (ControlRich) {
      TRichEdit *FRichEdit = dynamic_cast<TRichEdit *>(ControlRich);
      if (FRichEdit) {
                 // работаем с компонентом
      }
}
3
2 / 2 / 0
Регистрация: 09.04.2011
Сообщений: 110
06.06.2011, 18:24  [ТС]
Maluda спасибо огромное!
Возник еще один вопрос. Определяю активный RichEdit так:
C++
1
2
3
4
5
6
7
8
9
TRichEdit *RichEdit;
TList *ListRichEdits = new TList();
 
...
 
void __fastcall TForm1::PageControl1Change(TObject *Sender)
{
RichEdit = (TRichEdit *)ListRichEdits->Items[PageControl1->ActivePageIndex];
}
вот по длине всего Unit1.cpp я могу обращаться к RichEdit но уже начиная со вторго и далее UnitN.cpp я не могу его использовать ... подскажите пожалуйста как можно использовать этот RichEdit? Заранее спасибо!
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
06.06.2011, 18:35
в UnitN.cpp #include "Unit1.h"
C++
1
Form1->RichEdit...
1
2 / 2 / 0
Регистрация: 09.04.2011
Сообщений: 110
06.06.2011, 18:39  [ТС]
в UnitN.cpp #include "Unit1.cpp"
Делая так компилятор выдает ошибки о том что данные повторно объявляются ... типа так:
[C++ Error] Unit1.cpp(15): E2238 Multiple declaration for 'BLuaSyntax'
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
06.06.2011, 18:47
"Unit1.h", см. вышее...
0
2 / 2 / 0
Регистрация: 09.04.2011
Сообщений: 110
06.06.2011, 19:15  [ТС]
Прошу прошенья, перепутал. Однако у меня все написано в Unit1.cpp попробовал перенести в .h в класс не получилось ... сейчас вынес в глобальную переменную, вроде получилось.
0
 Аватар для Maluda
1280 / 598 / 116
Регистрация: 18.08.2009
Сообщений: 832
06.06.2011, 19:27
Byurrer, уж не Луа скрипты собрался редактировать ?
1
2 / 2 / 0
Регистрация: 09.04.2011
Сообщений: 110
06.06.2011, 19:32  [ТС]
Maluda да луа скрипты, а точнее для редактирования/написания скриптов для Сталкер. Подсветку синтаксиса как луа так и 2 классов скриптовой базы сделал ... терь улучшаю.
0
 Аватар для Maluda
1280 / 598 / 116
Регистрация: 18.08.2009
Сообщений: 832
06.06.2011, 19:52
Byurrer, я сам занимаюсь в этой сфере и должен тебе сказать, что есть гораздо более крутое решение.

1. Качаешь TMS Components 6.0.0.4 (Только не ниже версию)
2. Он устанавливается автоматом.
3. После этого выкидываешь свои РичЕдиты нафиг.
4. Добавляешь на форму TAdvMemo
5. Добавляешь TAdvPascalMemoStyler (этот компонент делает у твоего Мемо подсветку)
6. Меняешь ключевые слова в TAdvPascalMemoStyler на ключевые слова Луа (можно их передрать в Notepad++ - они уже там по полочкам разложены), добавляешь свои и т.д.
7. В TAdvPascalMemoStyler находишь свойство AutoCompletion - это самый обычный TStrings - добавляешь в него методы и операторы. После того, как добавишь, по комбинации Ctrl+пробел у тебя будет вылазить подсказка кода, как в Билдере.
8. Находишь свойство AutoHint, ставишь его в true и у тебя будет всплывающая подсказка.
9. В общем есть конкретный пример в этом пакете, правда он Делфи. После того, как разберёшься,
будешь просто в восторге!

В общем, у меня в Луа редакторе работает подсветка кода, всплывающие подсказки методов,
точки останова, подсветка начала-конца функций, начала-конца условий и т.д.
Все ключевые слова выделены отдельными цветами.

Добавлено через 1 минуту
Да, забыл добавить, у TAdvMemo есть крутое свойство - MemoSource, то есть тебе не надо на форму кидать 5,10 и т.д. компонентов, а ты просто меняешь это свойство (оно типа TStrings)
2
2 / 2 / 0
Регистрация: 09.04.2011
Сообщений: 110
06.06.2011, 19:58  [ТС]
Maluda спасибо за совет, посмотрю, пороюсь на эту тему, однако хочу доделать на RichEdit'ax так как много времени и сил туда положил, одна подсветка синтаксиса в "режиме реального времени" (как то так) заняла очень много времени. Хотя если эта "овчинка стоит выделки" ... а можно посмотреть твой редактор, хотяб несколько скринов если нельзя бинарник?
0
 Аватар для Maluda
1280 / 598 / 116
Регистрация: 18.08.2009
Сообщений: 832
06.06.2011, 20:01
Byurrer, проект на работе, свои скрины я выложу завтра, а я тебе постараюсь сейчас найти скрин этого компонента.

Добавлено через 1 минуту
Вот у меня всё это работает только для луа
Миниатюры
Работа с динамически созданными объекта на PageControl  
0
2 / 2 / 0
Регистрация: 09.04.2011
Сообщений: 110
06.06.2011, 20:04  [ТС]
Maluda отлично! Буду ждать. Если будет интересно, работы мне с редактором осталось не так много, как доделаю могу сообщить.
0
 Аватар для Maluda
1280 / 598 / 116
Регистрация: 18.08.2009
Сообщений: 832
06.06.2011, 20:08
Просто тут админы ругаются, когда ссылки на сторонние сайты выкладывают, но я думаю, что ты у Гугля их спокойно найдёшь. Там ещё куча фоток есть подробных про этот компонент

Добавлено через 3 минуты
Кстати по подсветке никакого особого кода нет - это всё там уже автоматом работает!
Просто берёшь и редактируешь сами свойства компонента
0
 Аватар для Maluda
1280 / 598 / 116
Регистрация: 18.08.2009
Сообщений: 832
07.06.2011, 13:38
Byurrer, вот сделал тебе скрины своего редактора
Вложения
Тип файла: rar MLC.rar (774.0 Кб, 24 просмотров)
0
2 / 2 / 0
Регистрация: 09.04.2011
Сообщений: 110
07.06.2011, 13:47  [ТС]
Maluda хорошо смотрится . Появилось еще несколько идей по поводу редактора, а вот когда ты (судя по скрину MLC_2) ввел "i" и там появилась подсказка возможных вариантов написания, как можно такое сделать?

Добавлено через 1 минуту
И если будет не трудно, сообщи пожалуйста как выйдет твой редактор
0
 Аватар для Maluda
1280 / 598 / 116
Регистрация: 18.08.2009
Сообщений: 832
07.06.2011, 14:08
Byurrer, в тех компонентах, которые я тебе написал, это уже всё АВТОМАТОМ.
Просто качаешь их, ставишь, разбираешься как они работают и всё!!!
Единственное, я добавил ещё свои методы. Это опять же прямо в настройках этих компонентов.
Однозначно советую их юзать!


Цитата Сообщение от Byurrer Посмотреть сообщение
И если будет не трудно, сообщи пожалуйста как выйдет твой редактор
На самом деле - это не редактор, а Rad Studio для Луа. То есть всё также как в Билдере,
только на Луа. То есть можно делать GUI на Луа или встраивать их в своё приложение. Он уже работает, но пока что в бета версии.
1
2 / 2 / 0
Регистрация: 09.04.2011
Сообщений: 110
07.06.2011, 14:13  [ТС]
На самом деле - это не редактор, а Rad Studio для Луа. То есть всё также как в Билдере,
только на Луа. То есть можно делать GUI на Луа или встраивать их в своё приложение. Он уже работает, но пока что в бета версии.
Ясно. На счет компонентов это бесспорно, заюзаю.
P.S. У меня копцепция создания редактора Луа+Сталкер, то есть помимо самого луа (там не все экспортировано) еще и методы этой скриптовой базы.
0
 Аватар для Maluda
1280 / 598 / 116
Регистрация: 18.08.2009
Сообщений: 832
07.06.2011, 14:19
Цитата Сообщение от Byurrer Посмотреть сообщение
еще и методы этой скриптовой базы.
Эти методы просто элементарно можно добавить как группу подсветки, назначить ей свой цвет, шрифт и т.д. Добавить в подсказки. Просто за несколько кликов мышки

Вот ещё фотки на эту тему, как это выглядит в редакторе
Вложения
Тип файла: rar LuaStyler.rar (130.0 Кб, 20 просмотров)
1
0 / 0 / 0
Регистрация: 05.04.2015
Сообщений: 2
20.06.2017, 14:19
Добрый день, Maluda ! Спасибо за сообщение от 06.06.2011, 19:52.

У меня проект по анализу алгоритмов с управлением
Lua-скриптами. Написан редактор с подсветкой etc на RichEdit,
но TAdvMemo лучше, наверное, будет!

У меня С++Builder 6 и он меня вполне устраивает. Последние разработки
TMS исключают Builder 6. Есть что-либо для Builder 6 и где взять?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
20.06.2017, 14:19
Помогаю со студенческими работами здесь

Работа с с динамически созданными элементами
Здравствуйте, не могу разобратся с манипулированием созданных элементов.При создании нового элемента не могу посмотреть его свойств.Пример:...

Работа с динамически созданными объектами
День добрый. С Новым годом всех! Интересует следующее: 1. На первой форме кнопка, по нажатию на которой открывается 2 форма)) На...

Работа с динамически созданными объектами
как узнать какой объект подал сообщение на выполнение события. Возможно я выразился кучерявенько но смысл такой: есть скажем 10 динамически...

Работа с динамически созданными объектами: удаление
Как удалять созданные объекты. И еще немного не по теме, но ... как определить тип хранимый в object. Спасибо.

Управление динамически созданными объектами
Ситуация: у меня создается динамически несколько объектов TLabel, допустим 50... Идея в том, что такое количество динамически созданных...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru