ОБСУЖДЕНИЕ

Обмен данными между формами

4 ответов 17,2 тыс.
AI-выжимка обсуждения скоро

Краткие тезисы обсуждения со ссылками на ключевые ответы появятся здесь.

Статус
Закрыто для дальнейших ответов.
Автор темы
Как можно организовать обмен данными между двумя дочерними формами одного приложения. К примуру приложение выдает две формы на экран в одной вводятся данные, в другой строится график.
 
Этого можно добиться, либо через COM, либо через буфер (с посылкой сообщения
в окно приемник об изменении данных), проще посылать сообщение и обрабатывать
процедуру обработки сообщения окна, берете создаете сообщение, что то типа
WM_USER+$500
В окне источнике пишите SendMessage(Окно, WM_USER+$500, LONG (поитер ту дата), 0)

а в окне приемнике
WM_USER+$500 :
Begin
Обработка данных
end
 
Поскольку приложение одно, то данные можно передавать через любую переменную твоего приложения: одна форма пишет в переменную, другая - читает из нее.
 
ну вообще для доступа к ресурсам с одной формы к другой достаточно прописать в начале твоего cpp-шки или pas-а (для Builder и Delphi соответственно) строчку:

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
#include "Unit2.h" <- вот её ты и дописываешь, чтобы из первой формы иметь доступ к компонентам или переменным второй
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
int bbb; <- а так ты должен определить переменную в нужной тебе форме, чтобы читать её в другой.

если тебе нужен доступ, например, к функции нажатия к-либо кнопки на Form2, то ты пишешь в главном коде:
Form2->Button1Click(NULL);

вот в принципе и всё. а как отследить изменение данных и отображать их на зависимой форме - это чисто события надо отслеживать иобрабатывать алгоритм нужный.
 
seltsam
Хороший приём. Молодец. А главное работает :)
 
Статус
Закрыто для дальнейших ответов.