Главная страница
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-10673
DVP1
2003-08-21 10:25
2003.09.04
Как в Delphi7 SQL-запросе сделать условие с использованием функци


3-10619
Rel_
2003-08-13 09:16
2003.09.04
запрос SQL


3-10639
NewD
2003-08-11 15:54
2003.09.04
Как заставить ADOCOMMAND выполнять команды


14-10894
bar
2003-08-18 17:07
2003.09.04
Основная


1-10797
cancel
2003-08-22 10:12
2003.09.04
Возврат строк из DLL