Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.07.2008, 22:25   #1
Maks1978
Пользователь
 
Аватар для Maks1978
 
Регистрация: 25.05.2008
Сообщений: 53
По умолчанию Обмен данными между формами

Работаю в С++ Builder 6. Создал проект Project1. Сделал в этом проекте две формы: Form1, Form2. Вопрос: каким образом можно задать или объявить такую глобальную переменную, чтобы её было видно и в Form1 и в Form2, и оттуда влиять на неё?
Maks1978 вне форума Ответить с цитированием
Старый 21.07.2008, 08:23   #2
merax
Форумчанин
 
Регистрация: 27.12.2006
Сообщений: 955
По умолчанию

У С++ Buildera логика конечно своеобразная, но вариант решения твоей проблемы применим ко всем Сям. Например в Visual Studio для объявления глобальной переменной можно заюзать файл
Код:
#include "stdafx.h"
Аналогично поступим в Builder. Создай файл MyFile.h и напиши в нем

Код:
extern int element;
Подключи его к файлам проекта, которые будут использовать эту переменную.

Создай 2 форму и в ней опиши переменную
Код:
int element
. По нажатию кнопки присвой её значение

Код:
void __fastcall TForm2::Button1Click(TObject *Sender)
{
       element = 5;
}
Теперь в Форме 1 проверь какое значение имеет переменная element!

Код:
void __fastcall TForm1::Button2Click(TObject *Sender)
{
    Form1->Caption = IntToStr(element);
}
По идее должно в заголовке формы отразится 5.

Фича. Инициализировать глобальную переменную можно только в 1 файле , тоесть если тебе надо будет вернуть значение понадобится еще одна глобальная переменная.
merax вне форума Ответить с цитированием
Старый 22.07.2008, 14:01   #3
Maks1978
Пользователь
 
Аватар для Maks1978
 
Регистрация: 25.05.2008
Сообщений: 53
Хорошо Работает, но нашёл ещё!

Спасибо! Работает! Правда я нашел ещё два способа:
Первый: похож на описанный выше, но только без использования дополнительного заголовочного файла. Моя главная форма Form1, находится в Unit1.cpp, описывается в Unit1.h, вторая - соответственно - Unit2.cpp и Unit2.h. Описываю переменную int element в Unit1.cpp как глобальную, а в Unit2.cpp, в разделе описания глобальных переменных, записываю фразу extern int element. Вот так просто!
Второй: добавляю фразу в Unit1.cpp:
Код:
#include "Unit2.h"
добавляю фразу в Unit2.cpp:
Код:
#include "Unit1.h"
В разделе public: (описание класса форм в файлах Unit1.h или Unit2.h) записываем int element.
Код:
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published:	// IDE-managed Components
private:	// User declarations
public:		// User declarations
        __fastcall TForm1(TComponent* Owner);
       int element
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
И всё теперь переменная видна во второй форме и к ней можно обращаться так:
Код:
Form1->element = 5;
Maks1978 вне форума Ответить с цитированием
Старый 22.07.2008, 15:35   #4
merax
Форумчанин
 
Регистрация: 27.12.2006
Сообщений: 955
По умолчанию

Я знал про это, но сознательно не сказал, так как ето полностью нарушает принципы ООП. Вариант с *.h файлом еще куда нишло, а вот через *.cpp это нельзя.
merax вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Связь между формами KiberJo Общие вопросы Delphi 20 22.07.2008 21:40
Обмен данными между формами Demien Общие вопросы Delphi 14 23.04.2008 22:04
Общение между формами kate4ka Общие вопросы Delphi 2 10.03.2008 22:49
Обмен данными по сети Altera Работа с сетью в Delphi 2 23.02.2008 00:13
обмен данными с сервером BioS Работа с сетью в Delphi 15 12.02.2007 15:32