Форум: "Основная";
Текущий архив: 2003.09.04;
Скачать: [xml.tar.bz2];
ВнизКак обратиться к переменной в 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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.009 c