Главная страница
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.021 c
15-1192827366
Nic
2007-10-20 00:56
2007.11.25
Какой регистратор лучше для...


15-1192716641
Delphi User
2007-10-18 18:10
2007.11.25
Каким фаерволом вы пользуетесь ? Outpost слишком тяжелый.


2-1193732460
NikolayGa
2007-10-30 11:21
2007.11.25
with


2-1193735286
Первокласник Вася
2007-10-30 12:08
2007.11.25
Не получается с SQL


2-1193907869
barakuda
2007-11-01 12:04
2007.11.25
Генератор случайных чисел...