Форум: "Начинающим";
Текущий архив: 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