Q&A

  • : 여러개의 폼 상에서 메시지 전달하는 방법 좀..
안녕하세요.. 고수님



이런게 되나요? 궁금해서 여쭈어 봅니다.

먼저 3개의 SDI 폼을 작성했읍니다. 이름은 form1, form2, for3 이렇게 정했읍니다.

form3 이 active 된 상태에서 form2 에서 특정키(예:F8)가 눌린것을 알수 있나요?

같은 상황에서 form1 에서는 F7이 눌리면 특정 내용을 디스플레이 하려는데

가능한가요. 어떻게 해야만 그렇게 제어가 가능한가요. 물론 form3 이 active 된 상태는 계속 유지하려고 합니다. 많은 조언을 부탁 드립니다.





감사합니다.



2  COMMENTS
  • Profile
    tomhea 2001.04.04 03:41
    아래글은 델초보님께서 메일로 질문하신 내용입니다.

    질문은 게시판을 이용해 주십시요...

    *************************델초보님의 질문내용******************************

    안녕하세요

    답변에 감사 드립니다.

    근데 이해가 안가는게 있어요.

    form1, form2, form3 가 각기 다른 프로그램(델파이로 작성) 이란 거구요.

    또 각기 실행됩니다. 경우에 따라서는 form1/ form3 또는 form2/form3 만 이 떠 있을 수도 있거든요

    이런 경우에도 가능한가요?

    메시지를 이용해서

    전달하는 방법은 없나요?

    제가 초보라서 그런지 잘 이해가 안가서요..



    님의 말씀처럼 하려면 form1 이 form2 / form3 을 생성하구 실행한 경우라야만 될꺼 같아서요..

    *************************델초보님의 질문내용 끝*********************************





    이런경우 각 어플리케이션간 메세지를 생성하여 서로 전달 하고

    받을수 있습니다.

    아래 예를 참고 하십시요...





    unit uApp2;



    interface



    uses

    Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

    ComCtrls, PostBar, StdCtrls, Buttons, ExtCtrls;



    type

    TFormApp2 = class(TForm)

    Button1: TButton;

    procedure FormCreate(Sender: TObject);

    procedure AppMessage(var Msg: TMsg; var Handled: Boolean);

    procedure Button1Click(Sender: TObject);

    private

    { Private declarations }

    public

    { Public declarations }

    end;



    var

    FormApp2: TFormApp2;

    WM_LeeJongWan: Cardinal;



    implementation



    {$R *.DFM}



    procedure TFormApp2.FormCreate(Sender: TObject);

    begin

    Application.OnMessage:=AppMessage;

    WM_LeeJongWan:=RegisterWindowMessage('LeeJongWan');

    end;



    procedure TFormApp2.AppMessage(var Msg: TMsg; var Handled: Boolean);

    begin

    if Msg.message=WM_LeeJongWan then

    begin

    ShowMessage('메세지받음(App2)');

    end;

    end;



    procedure TFormApp2.Button1Click(Sender: TObject);

    begin

    PostMessage(FindWindow('TFormApp1',nil),WM_LeeJongWan,0,Application.Handle);

    end;



    end.

  • Profile
    tomhea 2001.04.04 02:38
    이경우

    Form3의 KeyDown이벤트를 이용하셔서 특정키가 눌렸을때

    Form2나 Form1의 함수를 호출하시면 될것같은데요..

    물론 Form2나 Form1에서 호출될함수는 직접 작성하시고요..



    델초보 wrote:

    > 안녕하세요.. 고수님

    >

    > 이런게 되나요? 궁금해서 여쭈어 봅니다.

    > 먼저 3개의 SDI 폼을 작성했읍니다. 이름은 form1, form2, for3 이렇게 정했읍니다.

    > form3 이 active 된 상태에서 form2 에서 특정키(예:F8)가 눌린것을 알수 있나요?

    > 같은 상황에서 form1 에서는 F7이 눌리면 특정 내용을 디스플레이 하려는데

    > 가능한가요. 어떻게 해야만 그렇게 제어가 가능한가요. 물론 form3 이 active 된 상태는 계속 유지하려고 합니다. 많은 조언을 부탁 드립니다.

    >

    >

    > 감사합니다.

    >