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

Вниз

Как обратиться к переменной в MDI-Форме?   Найти похожие ветки 

 
Shirson ©   (2003-08-22 09:00) [0]

У меня есть главная форма, из которой динамически создаются MDI-детки. Дочерние формы создаются с одного образца. У этой образцовой формы есть переменная, к которой нужно обратиться из главной формы. (Переменная Stat, дочерняя форма - текущая активная.)
Варианты
FMain.ActiveMDIChild.stat
(FMain.ActiveMDIChild as TForm).stat
результата недают - компилятор ругается
[Error] UMain.pas(238): Undeclared identifier: "stat"

Собственно, как обратиться к переменной дочерней формы из главной формы?

P.S.
Переменная описана так:

type
TStat=record
Changed: boolean;
New: boolean;
end;

...

var
Stat:TStat;

...


 
Zacho ©   (2003-08-22 09:10) [1]

Собственно, переменная Stat никакого отношения к форме не имеет. У объектов вообще нет переменных, есть поля, а это несколько другое. А обращаться к ней точно так же, как и клюбой другой переменной: Stat.New:=.. или Имя_модуля_в_котором_описана_переменная.Stat ..


 
Reindeer Moss Eater ©   (2003-08-22 09:28) [2]

Собственно, как обратиться к переменной дочерней формы из главной формы?

И кстати не жди, что у каждого экземпляра MDIChild будет свой отдельный экземпляр Stat.
Будет всего один экземпляр на весь процесс.


 
Shirson ©   (2003-08-22 09:30) [3]

У меня может быть 10 созданных дочерних форм. А обратиться нужно к переменной, которая в активной форме.

Я уже нашёл выход, но немножко обходной.
В шаблоне дочерних форм я описал функцию по работе с этой переменной и обращаюсь к ней вот так:

(FMain.ActiveMDIChild as TFTemplate).sstat(New)

Лишняя функция, но, по крайней мере, работает.


 
Shirson ©   (2003-08-22 09:35) [4]

>Reindeer Moss Eater © (22.08.03 09:28) [2]
[i]И кстати не жди, что у каждого экземпляра MDIChild будет свой отдельный экземпляр Stat.
Будет всего один экземпляр на весь процесс.[/i]

Фацкен ширт... а вот это я пропёрся. Экземпляр действительно один.
Ладно, придётся переклямывать саму дочернюю форму.


 
Е-Моё имя ©   (2003-08-22 09:38) [5]

>>переклямывать саму дочернюю форму.
строчку Stat:TStat; перемести внутрь класса дочерней формы и все )


 
Zacho ©   (2003-08-22 09:40) [6]


> Shirson © (22.08.03 09:30) [3]

Почитай что-нибудь по основам Object Pascal. Ну нельзя "обратиться к переменной, которая в активной форме", просто потому что в форме никаких переменных нет. А насколько я понял, тебе просто нужно сделать ее членом класса. Примерно так:
type
TStat=record
Changed: boolean;
New: boolean;
end;
type
TForm1 = class(TForm)
...
public
Stat:TStat;
end;

И потом обращаться к ней так:
(FMain.ActiveMDIChild as TForm1).stat


 
Shirson ©   (2003-08-22 09:43) [7]

Оно. Спасибо.

(У меня просто русская терминология хромает :) )



Страницы: 1 вся ветка

Текущий архив: 2003.09.04;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.014 c
1-10763
Vga
2003-08-24 00:18
2003.09.04
Заголовок формы!


14-10870
pavel_guzhanov
2003-08-13 09:14
2003.09.04
Есть ли какая-нибудь русская дока по Indy?


14-10970
Mr&MsGuns
2003-08-15 14:27
2003.09.04
Нужен компонент


3-10618
AndB
2003-08-13 11:33
2003.09.04
EDatabaseError - не могу отловить...


11-10664
D.V.K
2002-12-18 09:13
2003.09.04
А есть ли в KOL hint ы