Главная страница
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.018 c
15-1280386453
бумбум
2010-07-29 10:54
2010.11.07
Имеет смысл ADOConnection1.Open ?


2-1281389736
Rembo2010
2010-08-10 01:35
2010.11.07
Как считать звук с микрофона?


2-1281510311
Fr
2010-08-11 11:05
2010.11.07
Вывод московского времени


15-1280435368
Юрий
2010-07-30 00:29
2010.11.07
С днем рождения ! 30 июля 2010 пятница


2-1281708934
Михаил
2010-08-13 18:15
2010.11.07
почта