화면에 있으면 해당폼을 보여주고,
없으면 생성하는데,
폼이 새로 생성된 후,
procedure가 끝나면 생성된 폼이 사라져 버립니다.
TChatForm.Create(Application);의 Application을 Self,nil 어떤것으로 하여도
동일하네요...
조언 부탁드립니다.
procedure TMainForm.NMMSGServ1MSG(Sender: TComponent; const sFrom,
sMsg: String);
var
i: integer;
NewForm: TChatForm;
begin
//화면에 있는 form찾기
for i:=0 to Screen.CustomFormCount -1 do
if ((Screen.CustomForms[i] is TChatForm)) and
((Screen.CustomForms[i] as TChatForm).lChatID = NMMSGServ1.RemoteIP) then
begin
with Screen.CustomForms[i] as TChatForm do
begin
RichEdit1.Lines.Add(sFrom + ':' + sMsg);
StatusBar1.SimpleText:= sFrom + '님으로부터 메세지접수 되었습니다.';
Show;
exit;
end;
end;
//없으면 새로운 form생성
NewForm := TChatForm.Create(Application);
with NewForm do
begin
lChatID := NMMSGServ1.RemoteIP;
RichEdit1.Lines.Add(sFrom + ':' + sMsg);
StatusBar1.SimpleText:= sFrom + '님으로부터 메세지접수 되었습니다.';
Show;
exit;
end;
<------------여기까지는 괜찮음..
end;
procedure가 끝나면 NewForm이 없어져버리네요..
생성된 폼을 그대로 두고 싶습니다.
해당 폼 내의 다른 루틴상의 문제라고 생각되어 지네요. ㅠㅠ
채팅폼의 루틴을 하나하나 지워가면서 찾아보세요. 그냥 저루틴
만으로는 사라지면 안되는데 .^^