Q&A

  • [최용일님 보십시요]
어찌해서 안된다는 말인지요..??

제 이야기는 하나의 프로그램에서 2개의 폼을 최상위로 잡았을때

둘다 다른 프로그램의 화면보다 무조건 최상위로 설정되는것을 여쭤본건데..??

쩝..



실제로 제가 이런 프로그램을 봤습니다..제 두눈으로..

너무 신기해서 ..델파이로 구현을 할려니깐.. 잘 안된느 군요...



그 폼의 Form Style은 다음과 같습니다..

WS_POPUP, WS_VISIBLE, WS_CLIPSIBLINGS, WS_CLIPCHILDREN,

WS_EX_TOPMOST, WS_EX_CONTROLPARENT

...

그 프로그램은 c로 맹글어 진듯한데..쩝..왜 델파이에서는 안되는건지..??

3  COMMENTS
  • Profile
    구창민 2000.03.09 05:46
    송기원 wrote:

    > 어찌해서 안된다는 말인지요..??

    > 제 이야기는 하나의 프로그램에서 2개의 폼을 최상위로 잡았을때

    > 둘다 다른 프로그램의 화면보다 무조건 최상위로 설정되는것을 여쭤본건데..??

    > 쩝..

    >

    > 실제로 제가 이런 프로그램을 봤습니다..제 두눈으로..

    > 너무 신기해서 ..델파이로 구현을 할려니깐.. 잘 안된느 군요...

    >

    > 그 폼의 Form Style은 다음과 같습니다..

    > WS_POPUP, WS_VISIBLE, WS_CLIPSIBLINGS, WS_CLIPCHILDREN,

    > WS_EX_TOPMOST, WS_EX_CONTROLPARENT

    > ...

    > 그 프로그램은 c로 맹글어 진듯한데..쩝..왜 델파이에서는 안되는건지..??







    안녕하세요~ 구창민입니다.



    재미있는 주제같아서 한번 해 봤습니다.

    기원님이 원하시는 것이 이게 맞나 모르겠습니다.

    두개의 폼이 동시에 떠서 어떤 윈도우보다

    두개의 폼이 모두 항상 상위에 존재하는 것을 말씀하신거죠?



    그리고, 아래분이 하신대로 작성하게 되면 다른 윈도우로 포커스가

    넘어가면 최상위 상태를 유지할 수 없게 되지 않나요?



    아래는 제가 급조해서 만들어 본건데,

    아래 코딩을 Form1, Form2 두개의 폼에 그대로 삽입하셔서

    한번 실행 해 보세요.

    문제점이 있으시면 다시 질문 올려 주시구요~

    일단 제가 테스트 해 보았을땐, 기원님이 원하시는 대로 잘 동작했습니다.

    그럼~ 즐거운 프로그래밍 하시구요~



    ======== Unit1 ===================================================

    unit Unit1;



    interface



    uses

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

    StdCtrls, ExtCtrls;



    type

    TForm1 = class(TForm)

    Button1: TButton;

    Button2: TButton;

    procedure FormCreate(Sender: TObject);

    procedure Button1Click(Sender: TObject);

    private

    { Private declarations }

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

    public

    { Public declarations }

    end;



    var

    Form1: TForm1;



    implementation



    uses Unit2;



    {$R *.DFM}



    procedure TForm1.FormCreate(Sender: TObject);

    begin

    Application.OnMessage := AppOnMessage;

    end;





    procedure TForm1.AppOnMessage(var Msg: TMsg; var Handled: Boolean);

    Begin

    if Msg.Message = 45057 then

    SetWindowPos(Form1.handle, HWND_TOPMOST, Form1.Left, Form1.Top, Form1.Width, Form1.Height,0);

    end;





    procedure TForm1.Button1Click(Sender: TObject);

    begin

    Form2.Show;

    end;



    end.

    =========================================================================





    ==================== Unit2 ==============================================

    unit Unit2;



    interface



    uses

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

    StdCtrls;



    type

    TForm2 = class(TForm)

    Button1: TButton;

    procedure FormDeactivate(Sender: TObject);

    private

    { Private declarations }

    public

    { Public declarations }

    end;



    var

    Form2: TForm2;



    implementation



    uses Unit1;



    {$R *.DFM}



    procedure TForm2.FormDeactivate(Sender: TObject);

    var H: Hwnd;

    begin

    H:= GetForeGroundWindow;

    if H<>Form1.Handle then

    begin

    SetWindowPos(Form2.handle, HWND_TOPMOST, Form2.Left, Form2.Top, Form2.Width, Form2.Height,0)

    end;

    end;





    end.

    ==============================================================================



  • Profile
    최용일 2000.03.09 06:30
    정말 좋은 예제를 올려주셨군요...

    저두 해보긴 했는데 Form2의 Deactivate가 문제더군요... 지역적으로

    Deactivate를 설정하니까 약간의 문제가 생기더군요. 애플리케이션

    전체의 Deactivate메세지 핸들러를 설치해야하니까 제대로 작동하군요.



    참고로 예제중에서 AppOnMessage메소드중에서

    if Msg.Message = 45057 then 는

    if Msg.Message = CM_DEACTIVATE then과 같습니다.







  • Profile
    이정욱 2000.03.09 03:54
    한번만 올려주시기 바랍니다.



    송기원 wrote:

    > 어찌해서 안된다는 말인지요..??

    > 제 이야기는 하나의 프로그램에서 2개의 폼을 최상위로 잡았을때

    > 둘다 다른 프로그램의 화면보다 무조건 최상위로 설정되는것을 여쭤본건데..??

    > 쩝..

    >

    > 실제로 제가 이런 프로그램을 봤습니다..제 두눈으로..

    > 너무 신기해서 ..델파이로 구현을 할려니깐.. 잘 안된느 군요...

    >

    > 그 폼의 Form Style은 다음과 같습니다..

    > WS_POPUP, WS_VISIBLE, WS_CLIPSIBLINGS, WS_CLIPCHILDREN,

    > WS_EX_TOPMOST, WS_EX_CONTROLPARENT

    > ...

    > 그 프로그램은 c로 맹글어 진듯한데..쩝..왜 델파이에서는 안되는건지..??

    • 최정원
    • 2000.03.09 05:09
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2000.03.09 12:28
      제가 생각할땐 리소스 DLL을 이용하시는게 가장 좋은 방법이라고 생각됩니다. 그리고 폼을 언어별로 만들 ...
    • 이연주
    • 2000.03.09 04:19
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2000.03.09 14:00
      다음처럼 하시면 됩니다... procedure TForm1.Action1Execute(Sender: TObject); begin ....... end...
    • chobo
      2000.03.09 19:55
      procedure TWebModule1.WebModule1configAction(Sender: TObject; Request: TWebRequest; Response: TWe...
    • 최용일
      2000.03.09 22:39
      파라매터를 쓰실일이 없다면 그냥 대강 넣어주시면 되겠고..꼭 필요한 파라매터라면 필요한 값을 넣어줏셔...
    • 이재광
    • 2000.03.09 04:17
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 하얀까마귀
      2000.03.09 05:40
      안녕하세요 하얀까마귀 입니다. 뭐 딱히 좋은 방법을 알고 있는건 아니구요... 첫째는 아마도 처음 실행...
    • 김상현
      2000.03.09 04:29
      이재광 wrote: > 델파이 4.0을 사용하고 있는데 첫 화면 뜨는데 시간이 너무 오래 걸리네요. > > 좋은 ...
    • 김정선
      2000.03.09 07:45
      이러면 어떠하실지.. 디비에 있는 데이터를 레포트 양식처럼 나타낼 때 원하시는대로 한번에 나오기는...
    • 송기원
    • 2000.03.09 03:27
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 구창민
      2000.03.09 05:46
      송기원 wrote: > 어찌해서 안된다는 말인지요..?? > 제 이야기는 하나의 프로그램에서 2개의 폼을 최상위...
    • 최용일
      2000.03.09 06:30
      정말 좋은 예제를 올려주셨군요... 저두 해보긴 했는데 Form2의 Deactivate가 문제더군요... 지역적으로 ...
    • 이정욱
      2000.03.09 03:54
      한번만 올려주시기 바랍니다. 송기원 wrote: > 어찌해서 안된다는 말인지요..?? > 제 이야기는 하나의...
    • topsman
    • 2000.03.09 03:05
    • 0 COMMENTS
    • /
    • 0 LIKES
    • deulsae
    • 2000.03.09 02:59
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 구창민
      2000.03.09 04:17
      deulsae wrote: > * 사용환경 : 델파이4 Professional version/ Windows 98 > > 안녕하세요? > > ne...
    • 최경묵
    • 2000.03.09 02:19
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2000.03.14 07:07
      $30 은 십육진수 30h라는 의미입니다.. $30 = 48(십진수)
    • 이은주
      2000.03.09 02:38
      Delphi help에서 얻어온 내용입니다. -------------------------------------------------------------...
    • kby
    • 2000.03.09 02:18
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 임형호
      2000.03.09 03:50
      kby wrote: > 안녕하세요.. > TTable 콤포넌트에 보면 CachedUpdates라는 속성이 있는데 > 이 속성에 대...
    • kby
      2000.03.09 18:30
      임형호 wrote: > kby wrote: > > 안녕하세요.. > > TTable 콤포넌트에 보면 CachedUpdates라는 속성이 ...
    • 임준형
    • 2000.03.09 02:04
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 류동균
      2000.03.09 07:45
      임준형 wrote: > 여러 델파이 사용자 여러분.... > 제가 델파이 3.0에서 델파이 5.0으로 바꾸었는데 조금...
    • 최용일
      2000.03.14 07:09
      어디까지나 저의 생각이지만 몇자 적겠습니다. 아무래도 델파이 5.0이 델파이 3.0보다는 프로그램 덩치가 ...
    • 이형섭
    • 2000.03.09 01:56
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 박현
      2000.03.20 22:41
      이형섭 wrote: > 안녕하세요.. > > 리치에디트를 이용해서 메모장을 만들었습니다. > 한데.. 메모장 ...
    • kpp
    • 2000.03.09 01:32
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2000.03.09 07:54
      어떤 바코드 컴포넌트인지 잘 모르겠군요.. 혹시 ISBN과 같은 바코드 컴포넌트를 구하신다면 다음의 사이...
    • 이재식
      2000.03.09 09:52
      이문희 wrote: > 저는 이번에 회사에 첨 입사하여 프로그램쪽 일을 하고 있습니다.. > > 회사에서 이전...
    • 이재식
      2000.03.09 09:51
      이문희 wrote: > 저는 이번에 회사에 첨 입사하여 프로그램쪽 일을 하고 있습니다.. > > 회사에서 이전...
    • 이재식
      2000.03.09 09:50
      이문희 wrote: > 저는 이번에 회사에 첨 입사하여 프로그램쪽 일을 하고 있습니다.. > > 회사에서 이전...
    • 이재식
      2000.03.09 09:50
      이문희 wrote: > 저는 이번에 회사에 첨 입사하여 프로그램쪽 일을 하고 있습니다.. > > 회사에서 이전...
    • topsman
    • 2000.03.09 00:45
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 초짜
    • 2000.03.09 00:34
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2000.03.09 00:39
      5.0에서 TDataSetProvider로 바뀌었습니다... 하위 호환을 위해 여전히 지원되긴하지만 델파이 5.0을 사용...
    • 차은숙
    • 2000.03.09 00:00
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 좋은날
      2000.03.09 00:46
      차은숙 wrote: > 빠른 답변에 정말 감사합니다. > > 델파이 초보에... > 게시판에 글올리는것까지 서...
    • 새벽공기
      2000.03.09 00:35
      차은숙 wrote: > 빠른 답변에 정말 감사합니다. > > 델파이 초보에... > 게시판에 글올리는것까지 서...
    • 임형호
      2000.03.09 04:01
      새벽공기 wrote: > 차은숙 wrote: > > 빠른 답변에 정말 감사합니다. > > > > 델파이 초보에... > > ...