Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 07.09.2012, 09:56
sorockinalex sorockinalex вне форума
Начинающий
 
Регистрация: 08.08.2012
Сообщения: 178
Репутация: 10
По умолчанию Передача и приём сообщения форме

Есть одна форма в bpl пакете, открытая как Showmodal, в ней код передачи сообщения парент-форме, которая её вызывала:
Код:
procedure TFAddBranchCompany.AddButtonClick(Sender: TObject);
var
  txtmsg:string;
begin
...
  Self.Close;
  SendMessage(ParentHandle, MY_MESSAGE, 0, DWORD(PChar(txtmsg)));
end;

Парент-форма тоже является пакетом bpl и тоже была открыта как Showmodal из другой формы, в ней код приёма сообщения:
Код:
procedure TFBranchAndLocation.MessageReceiver(var msg: TMessage);
var
  txtmsg: PChar;
  InputPars:TStringList;
begin
  txtmsg := PChar(msg.lParam);
  msg.Result := 1;

  BranchNameEdit.Text:=txtmsg;

  InputPars:=TStringList.Create();
  StrBreakApart(txtmsg, '<BR>', InputPars);
  BranchNameEdit.Text:=txtmsg;
  try
    BranchNameEdit.Text:=InputPars[0];
    BranchCityEdit.Text:=InputPars[1];
  except
  end;
  InputPars.Free();
end;

Процедура преобразования строки в StringList расположена в пакете DataModule.bpl
Код:
procedure StrBreakApart(const S, Delimeter: string; Parts: TStrings);
var
  CurPos: integer;
  CurStr: string;
begin
  Parts.clear;
  Parts.BeginUpdate();
  try
    CurStr := S;
    repeat
      CurPos := Pos(Delimeter, CurStr);
      if (CurPos > 0) then
      begin
        Parts.Add(Copy(CurStr, 1, Pred(CurPos)));
        CurStr := Copy(CurStr, CurPos + Length(Delimeter),
          Length(CurStr) - CurPos - Length(Delimeter) + 1);
      end
      else
        Parts.Add(CurStr);
    until CurPos = 0;
  finally
    Parts.EndUpdate();
  end;
end;

Смысл в том, что присвоение значения в поле на форме работает только до вызова этой процедуры. Строчка кода 9 BranchNameEdit.Text:=txtmsg выполняется а строчка кода 13 уже не работает и пишет в поле пустоту, подскажитие как решить эту проблему?!!!
И почему-то подчинённая форма, отправляющая сообщение не закрывается перед отправкой сообщения, хотя в коде написано закрыть её перед отправкой:
Код:
  Self.Close;
  SendMessage(ParentHandle, MY_MESSAGE, 0, DWORD(PChar(txtmsg)));

Последний раз редактировалось sorockinalex, 07.09.2012 в 10:01.
Ответить с цитированием
 


Delphi Sources

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

Расширенный поиск
Опции просмотра

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

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 11:14.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025