Из формы в форму и наоборот...
Какие инклуды нужно прописать, чтобы из одной формы были видны переменные другой формы и наоборот.
В файле Form1.cpp написать #include "Form2.h", в файле Form2.cpp соответственно "Form1.h"
Как тогда быть?
Как тогда быть?[/QUOTE]
Бр-р-р, не понял (пятница все-же, соображалку клинит). Переменные в каком месте объявлены? Упрощенно: переменная в Form2, нужно ее видеть из Form1. Делаем в Form1.cpp include "Form2.h". И дальше если она глобальная, то просто по имени обращаемся, если принадлежит TForm2, то обращаемся так: Form2->some_var
Как тогда быть?[/QUOTE]
Открой "Form1.h", последняя строчка - extern PACKAGE TForm1 *Form1; Видишь?:)
А что означает PACKAGE, после слова extern?
А если я объявляю глобальные переменные в файле Form1.h, и при этом делаю include в файле Form1.cpp, и в файле Form2.cpp, то компилятор пишет [Linker Warning] Public symbol '_<имя переменной>' defined in both module C:\...\FORM1.OBJ and C:\...\FORM2.OBJ
Где мне правильно объявить глобальные переменные, чтобы они не были определены дважды в разных cpp файлах, и чтобы были видны из всех 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;
кстати Билдер же так и делает, не понятно, что у тебя за проблемы. Возьми создай заново проект (форму) и посмотри как умный Билдер делает:)
extern PACKAGE TForm1 *Form1;
а в Form1.cpp:
TForm1 *Form1;
кстати Билдер же так и делает, не понятно, что у тебя за проблемы. Возьми создай заново проект (форму) и посмотри как умный Билдер делает[/QUOTE]
Это я уже понял... Но ты так и не ответил на вопрос: "Что значит слово PACKAGE после extern?"
Этот модификатор обеспечивает создание экземпляров класса из пакетов.
А если я объявляю глобальные переменные в файле 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 и они станут общими.
Спасибо!