Главная страница
    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.004 c
6-1228811420
Добежал
2008-12-09 11:30
2010.11.07
Ошибка в TIdHTTPServer


2-1281504230
Irisss
2010-08-11 09:23
2010.11.07
Открыт ли файл Excel


2-1281621980
DROWSY
2010-08-12 18:06
2010.11.07
Рабочие наборы данных.


15-1280407604
__REA
2010-07-29 16:46
2010.11.07
NMEA


6-1229087355
Ст
2008-12-12 16:09
2010.11.07
Tcpserver узнать ip клиента





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский