Есть одна форма в 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)));