Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.013 c
1-10831
Злодей
2003-08-21 16:12
2003.09.04
Перерисовка окна


14-10876
SPeller
2003-08-10 15:50
2003.09.04
Тест


14-10878
korvin
2003-08-14 08:56
2003.09.04
Програмно описать жись человека :)


1-10754
Vinter
2003-08-25 07:55
2003.09.04
Qreport и delphi7


3-10606
Malyatko
2003-08-13 17:07
2003.09.04
Подключение к базе данных.




   Наверх