Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.11.25;
Скачать: CL | DM;

Вниз

доступ из подчененной формы к полю формы-создателя   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.251 c
2-1193994748
Klawa
2007-11-02 12:12
2007.11.25
Помогите с чтением файла.


2-1193745723
Washington
2007-10-30 15:02
2007.11.25
Шрифт в ListBox е


15-1193395304
Sour Smile
2007-10-26 14:41
2007.11.25
Стандартные заголовочные файлы


15-1193210809
Pweq
2007-10-24 11:26
2007.11.25
Как как будет по-английски


15-1193333191
NeiL's
2007-10-25 21:26
2007.11.25
ООП