Главная страница
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.027 c
2-1193818997
bioSerg
2007-10-31 11:23
2007.11.25
Invalid Floating Point Operation и NAN


2-1193751520
kyn66
2007-10-30 16:38
2007.11.25
Ошибка при высвобождении объекта


2-1193848611
harisma
2007-10-31 19:36
2007.11.25
Позиционирование на запись в ComboBox


2-1193965529
ореол
2007-11-02 04:05
2007.11.25
Загрузка содержимого *.doc файла в своем приложении


15-1192899638
Cerberus
2007-10-20 21:00
2007.11.25
Можноли программно открыть страницу в уже открытом IE