Главная страница
    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.46 MB
Время: 0.032 c
15-1192955430
Virgo_Style
2007-10-21 12:30
2007.11.25
"экстраполяция" рисунка


6-1174982246
skye
2007-03-27 11:57
2007.11.25
Game Monitor


15-1193077784
NAlex
2007-10-22 22:29
2007.11.25
TOpenDialog + куда девается память?


2-1193726020
IntruderLab
2007-10-30 09:33
2007.11.25
FastReport 3.0 переменные


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





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский