Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.04.2008, 22:00   #1
dr.Chas
***
Участник клуба
 
Аватар для dr.Chas
 
Регистрация: 30.07.2007
Сообщений: 1,162
Восклицание обратиться к компоненту Memo, на активной вкладке PageControl

Я создаю по нажатию кнопки вкладку в PageControl, и на ней Memo.
Вкладок может быть очень много. Как мне потом обратиться к компаненту Memo, на активной вкладке.

Код:
Memo:=FindComponent('Memo'+IntToStr((...))); //как мне узнать этот
//индекс или какой то другой может способ есть?
(Memo as TMemo).Undo
dr.Chas вне форума Ответить с цитированием
Старый 26.04.2008, 22:26   #2
MusicMan
Пользователь
 
Аватар для MusicMan
 
Регистрация: 19.04.2008
Сообщений: 66
По умолчанию

Дак а зачем ето всё..? Эти компенты доступны и локально.
Сделай массив из мемок и по пейджам раскидай.
И далее к ним обращайся
Memos[PageControl1.ActivePage.TabIndex].Text //или чё там ещё;

ЗЫ: Честно говоря по пейджконтролу редко заморачивалься. И скорее
всего есть какой-нибудь более продуктивный способ.
Нет таких проблем, которых мы не можем себе создать
MusicMan вне форума Ответить с цитированием
Старый 26.04.2008, 22:33   #3
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

Береш делаеш наследник от TabSheet, к нему переменную в Public цепляеш типа Data: Pointer; теперь твои табы имеют такую переменную потом делаеш следующее
Код:
type
PTabSheetData = ^TTabSheetData;
TTabSheetData = packed record
Memo: TMemo;
end;

var
Tab: TTabSheet; // с нашей переменной, наш компонент
TabData: PTabSheetData;

...

new(TabData);
Tab.Data := TabData; // запоминаем ссылку на данные для данного таба
TabData^.Memo := TMemo.Create(NIL);
TabData^.Parent... и т.п. и т.д.

Ну и при удалении не забываем Dispose(TabData);
Я бы так все сделал.
BOBAH13 вне форума Ответить с цитированием
Старый 26.04.2008, 23:03   #4
MusicMan
Пользователь
 
Аватар для MusicMan
 
Регистрация: 19.04.2008
Сообщений: 66
Подмигивание

Цитата:
Сообщение от BOBAH13 Посмотреть сообщение
Береш делаеш наследник от TabSheet, к нему переменную в Public цепляеш типа Data: Pointer;
И в правду прогрессив...
Нет таких проблем, которых мы не можем себе создать
MusicMan вне форума Ответить с цитированием
Старый 30.05.2008, 22:58   #5
dr.Chas
***
Участник клуба
 
Аватар для dr.Chas
 
Регистрация: 30.07.2007
Сообщений: 1,162
По умолчанию

BOBAH13 спасибо канешно за ответ.
А существуют другие способы решения? Не как более проще нельзя узнать точное имя созданного динамически компонента memo?
dr.Chas вне форума Ответить с цитированием
Старый 31.05.2008, 10:02   #6
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,515
По умолчанию

Вариант 1.
при создании memo делаем
memoxxx.tag:=tabsheetz;

а потом проверки
if memo.tag=activeaheet //или как-то так


Вариант 2.
при создании
memoxx:=TMemo.Create(tabseetzz)

при поиске
activesheet.controls[j] is TMemo
программа — запись алгоритма на языке понятном транслятору
evg_m на форуме Ответить с цитированием
Старый 31.05.2008, 23:40   #7
dr.Chas
***
Участник клуба
 
Аватар для dr.Chas
 
Регистрация: 30.07.2007
Сообщений: 1,162
По умолчанию

Спс что откликнулся.
Цитата:
Сообщение от evg_m Посмотреть сообщение
Вариант 1.
при создании memo делаем
memoxxx.tag:=tabsheetz;

а потом проверки
if memo.tag=activeaheet //или как-то так


Вариант 2.
при создании
memoxx:=TMemo.Create(tabseetzz)

при поиске
activesheet.controls[j] is TMemo
Я тоже об этом думал, но есть не достаток который не даёт воспользоваться ни одним из этих способов.
Например:
У нас имееться три вкладки с индексами 0; 1; 2;, с тремя компонентами Мемо, на каждой вкладке. Первую закрываем и теперь индексы этих вкладок сдвигаються вперёд. Т.е. теперь у нас вот так 0; 1;. Так что не один из этих способов не подходит. Вот я и не могу справиться с этой проблемой
dr.Chas вне форума Ответить с цитированием
Старый 01.06.2008, 18:10   #8
dr.Chas
***
Участник клуба
 
Аватар для dr.Chas
 
Регистрация: 30.07.2007
Сообщений: 1,162
По умолчанию

↑ up ↑
Тема актуальна.
dr.Chas вне форума Ответить с цитированием
Старый 01.06.2008, 19:42   #9
alexBlack
Участник клуба
 
Регистрация: 12.10.2007
Сообщений: 1,204
По умолчанию

Цитата:
Сообщение от dr.Chas Посмотреть сообщение
Я тоже об этом думал, но есть не достаток который не даёт воспользоваться ни одним из этих способов.
Например:
У нас имееться три вкладки с индексами 0; 1; 2;, с тремя компонентами Мемо, на каждой вкладке. Первую закрываем и теперь индексы этих вкладок сдвигаються вперёд. Т.е. теперь у нас вот так 0; 1;. Так что не один из этих способов не подходит. Вот я и не могу справиться с этой проблемой
Это проблема для первого варианта с тэгами.
А второй вариант от evg_m чем не устраивает ?

PageControl1.ActivePage.Controls[0].Name
alexBlack вне форума Ответить с цитированием
Старый 01.06.2008, 21:00   #10
dr.Chas
***
Участник клуба
 
Аватар для dr.Chas
 
Регистрация: 30.07.2007
Сообщений: 1,162
По умолчанию

Цитата:
Сообщение от alexBlack Посмотреть сообщение
Это проблема для первого варианта с тэгами.
А второй вариант от evg_m чем не устраивает ?

PageControl1.ActivePage.Controls[0].Name
Да да это имено то что я искал, уже очень долго блин.
Спс evg_m что сказали способ решения моей проблемы.
Спс alexBlack за то что раскрыли глаза.
P.S.: Не внимательно посмотрел)) Бывает и такое
dr.Chas вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
PrintScreen активной формы Dj_smart Общие вопросы Delphi 3 22.04.2008 16:25
Как сделать поиск по компоненту Tmemo?? photozaz Общие вопросы Delphi 4 16.04.2008 08:23
Не срабатывает TEmbeddedWB когда открываю страницу через ссылку в новой вкладке dimfil Общие вопросы Delphi 0 23.03.2008 23:45
Процесс - на вкладке процессы, напротив процесса программы должно быть написано SYSTEM Terran Общие вопросы Delphi 3 10.01.2008 21:03
В Memo сделать так, чтобы текст был разного цвета, разноцветный memo Artem Компоненты Delphi 3 07.09.2007 13:40