Форум: "Основная";
Текущий архив: 2007.11.25;
Скачать: [xml.tar.bz2];
Вниздоступ из подчененной формы к полю формы-создателя Найти похожие ветки
← →
andreoman © (2007-09-05 19:24) [0]Здравствуйте. Есть форма frmMain которая НЕ прописана в dpr-файле как Application.CreateForm(TfrmMain, frmMain),
а создается при помощи:
frmMain :=TfrmMain .Create(Self);
frmMain.Show();
В этой форме есть public поле FCounterOver:TCounterOver;
В свою очередь frmMain создает тоже немодальную форму frmChild:
frmChild :=TfrmChild.Create(Self);
frmChild.Show();
Подскажите, как можно обратиться из frmChild к полю FCounterOver?
(Parent as TfrmMain).FCounterOver не проходит !!! Неужели в frmChild необходимо передавать ссылку на frmMain?
← →
q1 (2007-09-05 19:25) [1]owner
?
← →
andreoman © (2007-09-05 19:27) [2]тоже не идет
← →
{RASkov} © (2007-09-05 20:14) [3]> [2] andreoman © (05.09.07 19:27)
....
Button: TButton;
procedure ButtonClick();
private
function GetCounterOver: TCounterOver;
property CounterOver: TCounterOver read GetCounterOver;
end;
var
frmChild: TfrmChild;
implementation
uses UfrmMain; //< Unit с TfrmMain
function TfrmChild.GetCounterOver: TCounterOver;
begin
Result:=TfrmMain(Owner).FCounterOver;
end;
procedure TfrmChild.ButtonClick();
ACO: TCounterOver;
begin
ACO:=CounterOver;
end;
Но данный способ будет правильно работать только если frmChild создается именно так:frmChild :=TfrmChild.Create(Self);
где Self - это frmMain - т.е. в ее(frmMain) методе....
← →
{RASkov} © (2007-09-05 20:17) [4]код выше - это
unit UfrmChild; //Модуль с TfrmChild;
← →
MsGuns © (2007-09-05 22:44) [5]В Main:
implementation
use ChildForm
В Child:interface
use ..., Main
← →
GrayFace © (2007-09-06 10:36) [6]Либо передавать ссылку на frmMain, либо сделать var frmMain:TfrmMain в interface.
← →
clickmaker © (2007-09-06 10:38) [7]переопредели конструктор TfrmChild и передавай туда, что хочешь
← →
andreoman © (2007-09-06 11:42) [8]Огромнейшее мерси, то что надо
← →
evvcom © (2007-09-06 13:02) [9]
> Но данный способ будет правильно работать только если frmChild
> создается именно так: frmChild :=TfrmChild.Create(Self);
> где Self - это frmMain - т.е. в ее(frmMain) методе....
Данный да, а такой всегда:
function TfrmChild.GetCounterOver: TCounterOver;
begin
if Owner is TfrmMain then
Result:=TfrmMain(Owner).FCounterOver
else
raise Exception.Create("Низя меня так создавать! :)");
end;
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2007.11.25;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.046 c