Форум программистов
Реклама:
Гарантия безопасности сети с UTM-системой ИКС.
Защита ПД, межсетевой экран, контроль доступа, фильтрация трафика, система предотвращения вторжений.
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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

Ответ
 
Опции темы
Старый 09.01.2017, 09:39   #1
Сергей25
 
Регистрация: 17.11.2009
Сообщений: 5
Репутация: 10
По умолчанию Передача данных между MDI окнами

Здравствуйте.
Пишу MDI приложение (Delphi7).
Подскажите, как реализовать передачу, допустим строки, из одного child окна другому child. Как, например, это реализовано в 1С. Открыл счёт, из него открыл справочник "Контрагенты", выбрал покупателя и отправил в счёт, в нужное поле.

Последний раз редактировалось Сергей25; 09.01.2017 в 09:49.
Сергей25 вне форума   Ответить с цитированием
Старый 09.01.2017, 10:04   #2
Аватар
Модератор
Заслуженный модератор
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Адрес: Северодонецк.ua
Сообщений: 16,325
Репутация: 5824
По умолчанию

А что там такого хитрого в 1С - параметром так или иначе передается владелец. Так и здесь - передать параметром указатель на объект при активации формы и при выборе или непосредственно в него данные поместить, или отправить сообщение вызывающей - пусть сама разбирается куда и как
__________________
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума   Ответить с цитированием
Старый 09.01.2017, 12:02   #3
Сергей25
 
Регистрация: 17.11.2009
Сообщений: 5
Репутация: 10
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
А что там такого хитрого в 1С
Ничего хитрого видимо нет, когда статус "Заслуженный модератор". А когда начинающий самоучка - всё в диковину.
А - форма куда надо ввести данные. Б - откуда надо выбрать.

При создании А пишу:
Код:

Application.OnMessage:=AppMessage;

Передаем handle А в переменную (OwnerHandle) у формы Б и открываем её (Б). Далее при выборе то, что мне нужно, записываю в переменную главной формы, а из Б делаем:
Код:

PostMessage(OwnerHandle,WM_CUSTOM,0,0);

И принимаем

Код:

procedure TForm6.AppMessage(var Msg: TMsg; var Handled: Boolean);
begin
if Msg.message=2001
then  begin
// тут берём переменную из главной формы
end;
end;

Всё работает, но когда я открываю другие формы и другие справочники
параллельно, то сбивается (естественно)
Код:

Application.OnMessage:=AppMessage;

Т.е. у моего приложения OnMessage всегда = AppMessage последней открытой формы

Как этого избежать? Т.е. как реализовать, чтобы все формы хранили свои процедуры AppMessage?

Последний раз редактировалось Сергей25; 09.01.2017 в 12:06.
Сергей25 вне форума   Ответить с цитированием
Старый 09.01.2017, 12:24   #4
Аватар
Модератор
Заслуженный модератор
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Адрес: Северодонецк.ua
Сообщений: 16,325
Репутация: 5824
По умолчанию

А чего Application.OnMessage сюда впутывать? Отправляй непосредственно нужной форме и нужному обработчику
Код:

const sdCM_MYMESSAGE1 = WM_USER+1;

в форме А:
Код:

type
  TFMyFormA = class(TForm)
    ..
    procedure MyMessage1(var Msg: TMessage); message sdCM_MYMESSAGE1;
..
implementation

procedure TFMyFormA.MyMessage1(var Msg: TMessage);
begin
..
end;

В форме Б (в 3-ем и 4-ом параметре чего-то)
Код:

PostMessage(xHandle,sdCM_MYMESSAGE1,0,0);

Цитата:
когда статус "Заслуженный модератор"
Это вообще-то ни о чем ))
__________________
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 09.01.2017 в 12:29.
Аватар вне форума   Ответить с цитированием
Старый 09.01.2017, 12:48   #5
Сергей25
 
Регистрация: 17.11.2009
Сообщений: 5
Репутация: 10
По умолчанию

Всё получилось. Спасибо.
Сергей25 вне форума   Ответить с цитированием
Ответ



Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Передача сообщений между окнами. Как? Gudsaf Общие вопросы C/C++ 1 15.12.2012 22:39
Передача сообщений между окнами avd Общие вопросы Delphi 12 30.08.2012 08:20
Передача параметра с MDI родителя в MDI child через DLL ByXalkin Общие вопросы Delphi 0 15.12.2009 18:21
Передача параметров между MDI Child 8alig8 Общие вопросы Delphi 7 22.06.2009 16:39
Передача данных между окнами/приложениями? Dexer Win Api 11 23.05.2007 16:23




09:48.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.

купить трафик


как улучшить посещаемость, а также решения по монетизации сайтов, видео и приложений

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru