Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Из формы в форму и наоборот...

725
21 июля 2006 года
UnErase
190 / / 08.06.2006
Имеется 2 формы: Form1 и Form2 (соответственно Form1.cpp, Form1.h, Form2.cpp, Form2.h)

Какие инклуды нужно прописать, чтобы из одной формы были видны переменные другой формы и наоборот.
315
21 июля 2006 года
Nick_M
399 / / 29.05.2003
В файле Form1.cpp написать #include "Form2.h", в файле Form2.cpp соответственно "Form1.h"
725
21 июля 2006 года
UnErase
190 / / 08.06.2006
Но переменную указатель на первую форму, я все равно не вижу из кода второй формы...
Как тогда быть?
315
21 июля 2006 года
Nick_M
399 / / 29.05.2003
[QUOTE=UnErase]Но переменную указатель на первую форму, я все равно не вижу из кода второй формы...
Как тогда быть?[/QUOTE]
Бр-р-р, не понял (пятница все-же, соображалку клинит). Переменные в каком месте объявлены? Упрощенно: переменная в Form2, нужно ее видеть из Form1. Делаем в Form1.cpp include "Form2.h". И дальше если она глобальная, то просто по имени обращаемся, если принадлежит TForm2, то обращаемся так: Form2->some_var
246
21 июля 2006 года
GIZMO
1.8K / / 30.07.2004
[QUOTE=UnErase]Но переменную указатель на первую форму, я все равно не вижу из кода второй формы...
Как тогда быть?[/QUOTE]
Открой "Form1.h", последняя строчка - extern PACKAGE TForm1 *Form1; Видишь?:)
725
24 июля 2006 года
UnErase
190 / / 08.06.2006
А что означает PACKAGE, после слова extern?
725
24 июля 2006 года
UnErase
190 / / 08.06.2006
И кстати, глобальные переменные у меня объявлены не в классе формы, а в файле Form1.cpp, и мне к ним нужно получить доступ из файла Form2.cpp.

А если я объявляю глобальные переменные в файле Form1.h, и при этом делаю include в файле Form1.cpp, и в файле Form2.cpp, то компилятор пишет [Linker Warning] Public symbol '_<имя переменной>' defined in both module C:\...\FORM1.OBJ and C:\...\FORM2.OBJ

Где мне правильно объявить глобальные переменные, чтобы они не были определены дважды в разных cpp файлах, и чтобы были видны из всех cpp файлах?
246
24 июля 2006 года
GIZMO
1.8K / / 30.07.2004
[QUOTE=UnErase]И кстати, глобальные переменные у меня объявлены не в классе формы, а в файле Form1.cpp, и мне к ним нужно получить доступ из файла Form2.cpp.

А если я объявляю глобальные переменные в файле Form1.h, и при этом делаю include в файле Form1.cpp, и в файле Form2.cpp, то компилятор пишет [Linker Warning] Public symbol '_<имя переменной>' defined in both module C:\...\FORM1.OBJ and C:\...\FORM2.OBJ

Где мне правильно объявить глобальные переменные, чтобы они не были определены дважды в разных cpp файлах, и чтобы были видны из всех cpp файлах?[/QUOTE]
Поэтому и надо делать в Form1.h:
extern PACKAGE TForm1 *Form1;
а в Form1.cpp:
TForm1 *Form1;
кстати Билдер же так и делает, не понятно, что у тебя за проблемы. Возьми создай заново проект (форму) и посмотри как умный Билдер делает:)
725
24 июля 2006 года
UnErase
190 / / 08.06.2006
[QUOTE=GIZMO]Поэтому и надо делать в Form1.h:
extern PACKAGE TForm1 *Form1;
а в Form1.cpp:
TForm1 *Form1;
кстати Билдер же так и делает, не понятно, что у тебя за проблемы. Возьми создай заново проект (форму) и посмотри как умный Билдер делает[/QUOTE]

Это я уже понял... Но ты так и не ответил на вопрос: "Что значит слово PACKAGE после extern?"
246
24 июля 2006 года
GIZMO
1.8K / / 30.07.2004
[QUOTE=UnErase]Это я уже понял... Но ты так и не ответил на вопрос: "Что значит слово PACKAGE после extern?"[/QUOTE]
Этот модификатор обеспечивает создание экземпляров класса из пакетов.
15K
25 июля 2006 года
casual
11 / / 18.03.2006
[QUOTE=UnErase]И кстати, глобальные переменные у меня объявлены не в классе формы, а в файле Form1.cpp, и мне к ним нужно получить доступ из файла Form2.cpp.

А если я объявляю глобальные переменные в файле Form1.h, и при этом делаю include в файле Form1.cpp, и в файле Form2.cpp, то компилятор пишет [Linker Warning] Public symbol '_<имя переменной>' defined in both module C:\...\FORM1.OBJ and C:\...\FORM2.OBJ

Где мне правильно объявить глобальные переменные, чтобы они не были определены дважды в разных cpp файлах, и чтобы были видны из всех cpp файлах?[/QUOTE]

У тебя в одном файле есть глобальные переменные, если ты не использовал модификатор static то в другом cpp файле объяви такие же переменные, только с модификатором extern и они станут общими.
725
25 июля 2006 года
UnErase
190 / / 08.06.2006
Спасибо!
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог