Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2010.11.07;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.039 c
2-1281504230
Irisss
2010-08-11 09:23
2010.11.07
Открыт ли файл Excel


15-1280223880
И. Павел
2010-07-27 13:44
2010.11.07
Ассоциация расширений с программами


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


15-1280401937
dmk
2010-07-29 15:12
2010.11.07
Презентация MS DOS 4.01 в СССР


15-1280089770
Юрий
2010-07-26 00:29
2010.11.07
С днем рождения ! 26 июля 2010 понедельник





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский