Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
3-10631
Lamer_of_Delphi
2003-08-13 09:38
2003.09.04
Запрос не выполняется!!!


1-10814
lord
2003-08-21 11:55
2003.09.04
вывод переменной s= CSCFlags=0 #0 MAXUses=4294967295 на екран


1-10696
lightix
2003-08-20 15:39
2003.09.04
Добавить событие к классу


1-10745
Borgir
2003-08-25 08:36
2003.09.04
Прерывание функции


3-10641
DarkBlade
2003-08-11 22:53
2003.09.04
проблема с подключением базы данных к CBuilder





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский