Q&A

  • 동적으로 생성된 같은 폼들중에서 선택하려면
1:n 채팅을 만들고 있는데요,(메신저처럼)
각 클라이언트에서 요청이 있으면 그 숫자만큼 동적으로 폼을 만들고
폼이름은 만들어진 순서대로 chatroom0,1,2,3.. 이런식으로 만들어 나갔습니다.
폼이 만들어지면 서버쪽에서 클라이언트로 폼이름을 보냅니다.
    Form2 := TForm2.Create(Self);
    form2.Name := 'chatroom'+inttostr(i);
    socket.SendText(form2.Name);

클라이언트 쪽에서 다시 글을 쓰면 받아온 자기의 요청에 의해 생성된 폼이름과 함께 문장을
보내주면 서버쪽에서 현재 동적으로 만들어져 떠있는폼이름과 비교해서 같은게 나올때
그곳에 문장을 쓰게 할려고 합니다.
서버쪽에서
if Screen.CustomForms[i].Name = roomname(클라이언트가 보내온 방이름) then

여기 가지는 에러없이 되는데.. 그다음에 문장을 그방의 richedit1에 쓰게 하려면
어떻게 해야 하나요?... 그냥 form2.richedit1- 이렇게 쓰면 여러창이 떠있을땐
제일 최근에 뜬 곳으로만 글이 갑니다..
알려주세요...
3  COMMENTS
  • Profile
    이동현 2002.05.17 05:44
    프로그래머로 가는 길이 힘들겠지만 여러분들이 있어서 힘이나네요 ^^;
    관심 가져주셔서 감사합니다.
  • Profile
    김지엽 2002.05.17 01:55
    생성할 때 마다 콤포넌트명을 Form2 로 하지 마시고.. 따로 부여해주세요.
    델파이 코딩해본지가 오래되서 잘 기억은 안나지만, 클라이언트쪽에서 메시지가 올 때,
    Comp = TComponent;
    Comp := FindComponent(콤포넌트명);
    이런 식으로 찾아주면 될 거 같은데요?
  • Profile
    최용일 2002.05.17 01:32
    안녕하세요. 최용일입니다.

    형변환하시면 될겁니다...

    if Screen.CustomForms[i].Name = roomname(...) then
        TForm2(Screen.CustomForms[i]).RichEdit1.Lines.Add(......);

    ^^ 항상 즐코하세요...