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

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

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

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

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

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

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

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

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

Цитата:
Сообщение от Аватар Посмотреть сообщение
А что там такого хитрого в 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 в 11:06.
Сергей25 вне форума Ответить с цитированием
Старый 09.01.2017, 11:24   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

А чего 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 в 11:29.
Аватар вне форума Ответить с цитированием
Старый 09.01.2017, 11:48   #5
Сергей25
 
Регистрация: 17.11.2009
Сообщений: 5
По умолчанию

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


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Передача сообщений между окнами. Как? 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 17:21
Передача параметров между MDI Child 8alig8 Общие вопросы Delphi 7 22.06.2009 16:39
Передача данных между окнами/приложениями? Dexer Win Api 11 23.05.2007 16:23