Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2010.11.07;
Скачать: CL | DM;

Вниз

Как через родителя обратится к компоненту.   Найти похожие ветки 

 
Andrey K   (2010-08-14 00:38) [0]

На главной форме положен компонент pcProg: TPageControl;
Динамически добавляю страницы и на каждую кладу фрейм frUn:
 with pcProg do
 begin
   with TTabSheet.Create(Self) do
   begin
     PageControl := pcProg;
   end;
   frUn := TfrUn.Create(Self);
   frUn.Parent := Pages[PageCount-1]; //Назначаю родителя
На фрейме frUn присутствуют компоненты. Как из главного модуля обратится к свойствам компонента на фрейме, конкретной странице pcProg?
Мне предложили конструкцию: TMemo(TFrame(fmTurn.pcProg.Pages[x].Components[0]).Components[0])
Но до свойств TMemo так не добраться. По всей видимости, надо как-то через Name.


 
Германн ©   (2010-08-14 01:35) [1]


> Мне предложили конструкцию: TMemo(TFrame(fmTurn.pcProg.Pages[x].
> Components[0]).Components[0])

Кто предложил, где предложил, как предложил?


> По всей видимости, надо как-то через Name

Только не через Name. Это извращение. Свойство Name имеет смысл только в design-time.


 
_Юрий   (2010-08-14 10:27) [2]

можно так:
Ссылку на фрейм сохраняем в поле Tag страницы:

with TTabSheet.Create(Self) do
  begin
    PageControl := pcProg;
    frUn := TfrUn.Create(Self);
    Tag:=Integer(frUn);//в данном случае используется Tag от TTabSheet
  end;

Доступ - через приведение типов

var
 frUn : TfrUn;

begin
frUn :=TfrUn(fmTurn.pcProg.Pages[x].tag);
frUn.Memo1.Text:="blablabla";


 
sniknik ©   (2010-08-14 11:15) [3]

> Мне предложили конструкцию:
в теории верно (по "ссылкам" можно добраться до нужного), но на практике нужно учитывать свою реализацию. в смысле не копировать код бездумно

вот так будет работать
procedure TForm1.Button1Click(Sender: TObject);
begin
 TTabSheet.Create(self).PageControl:= PageControl1;

 with PageControl1 do
   TFrame1.Create(self).Parent:= Pages[PageCount-1];

 TFrame1(PageControl1.ActivePage.Controls[0]).Memo1.Text:= "test"
end;


 
Andrey K   (2010-08-16 22:51) [4]

Спасибо всем, за помощь. Прошел вариант, который предложил sniknik. С Tag покопался, но до ума не довёл, не очень удобно при последующем использовании.
Я блудил из-за не понимания процесса :(.
Вызывая TTabSheet.Create(Self). PageControl:=, в этот момент мы создаём страницу и сразу назначаем родителя? На русском описания не нашел, а с английским у меня не очень.
И ещё вопросик, почему система при введении точки автоматически не предлагает варианты TfrUn(pcProg.Pages[i].Controls[0]).reProg.Font.Assign(FoDi.Font); начиная уже после скобки.



Страницы: 1 вся ветка

Текущий архив: 2010.11.07;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.006 c
15-1280299629
12
2010-07-28 10:47
2010.11.07
Какую бы ед. измерения выбрать?


2-1281722016
Дмитрий Стариков
2010-08-13 21:53
2010.11.07
Снова за помощью


15-1280325567
sniknik
2010-07-28 17:59
2010.11.07
Проверьте пожалуйста, если у вас больше чем один домен...


15-1280474574
Лезнайка на Нуле
2010-07-30 11:22
2010.11.07
когнитивный диссонанс


15-1280262611
Юрий
2010-07-28 00:30
2010.11.07
С днем рождения ! 28 июля 2010 среда