Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.054 c
15-1193344929
Сусл
2007-10-26 00:42
2007.11.25
корпоративное решение от google


2-1193786409
Сергей.З
2007-10-31 02:20
2007.11.25
Date...


15-1193152531
Petr V.Abramov
2007-10-23 19:15
2007.11.25
Стрим vs Wifi


15-1193301218
infom
2007-10-25 12:33
2007.11.25
Храние exe в StarTeam.


15-1192640330
@!!ex
2007-10-17 20:58
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский