Q&A

  • ShowModal 영역 밖에서의 이벤트
ShowModal 폼을 불러내고 마우스 클릭이 모달폼 밖에서 클릭하면
자동으로 폼을 종료하게 하고 싶습니다.
좋은 방법이 있으면 알려주세요.


마우스 이벤트를 이용했지만 작동을 하지 않네요~
고수님들 좋은 방법좀 알려 주시기 바랍니다.

procedure TfrmPopupMenu.WMNCLButtonDown(var Msg : TWMNCLButtonDown);
var
   MousePtX,
   MousePtY  : Integer;
   FromAreaL,
   FromAreaR,
   FromAreaT,
   FromAreaB : Integer;

   FromRect  : TRect;
begin
   GetWindowRect(frmPopupMenu.Handle, FromRect);
   FromAreaL := FromRect.Left;
   FromAreaR := FromRect.Right;
   FromAreaT := FromRect.Top;
   FromAreaB := FromRect.Bottom;
  
   MousePtX  := Mouse.CursorPos.X;
   MousePtY  := Mouse.CursorPos.Y;

   if (((MousePtX < FromAreaL) and (FromAreaR < MousePtX)) and
       ((MousePtY < FromAreaT) and (FromAreaB < MousePtY)))    then //Clsoe;
                                                                    lblMainTitle.Caption := 'OUT'
                                                               else lblMainTitle.Caption := 'IN';
end;
4  COMMENTS
  • Profile
    너구리 2004.03.31 20:18
    TForm.OnActivate, OnDeactivate 는 같은 애플리케이션에서의 폼끼리 활성화,비활성화 될때만 발생을 하구요...
    다른애플리케이션(바탕화면을 클릭한다던가... )을 활성화했다가 넘어올때는 Application.OnActivate 를 이용해야 합니다.

    팁란에서 찾았는데요..

    어떤 팁에 대한 꼬릿말입니다.해보진 않았지만..
    Application.OnActivate와 OnDeactive를 이용하면 되겠네요

    그리고 팁에서는

    procedure WMActive(var Message: TWMActivate); message WM_ACTIVATE;

    procedure TForm1.WMActive(var Message: TWMActivate);
    begin
      if Message.Active = WA_INACTIVE then
        begin
        Label1.Caption := 'OUT';
        end
      else if Message.Active in [WA_ACTIVE, WA_CLICKACTIVE] then
        begin
        Label1.Caption := 'IN';
        end;
    end;

    아주 잘먹더군요..두개중에 아무거나 선택해서 쓰십시오..
    덕분에 하나 배웠네요..



  • Profile
    송태성 2004.03.31 22:51
    그대로 코딩했는데도 'IN'은 먹더군요 그런데 모달 폼이라서 그런지

    'OUT'  는 안먹더군요..

    모달폼을 뛰우고 다른곳을 클릭하면 저절로 닫히는 프로그램을 만들려고 합니다.




  • Profile
    한원희 2004.03.31 20:16
    안녕하세요. 한원희입니다.

    NC(Non-Client) 메시지는 모달폼 외부에 대한 동작으로 발생하는 것이 아니라, 현 모달 폼의 클라이언트 영역을 제외한 모든 부분... 그러니까, 캡션바, 프레임, 시스템 메뉴 등등이 이에 해당합니다. 모달 폼을 벗어난 경우에는 마우스나 포커스를 갖는 프로그램에 메시지가 전달됩니다.

    모달폼을 벗어난 곳에서의 마우스 클릭을 감시하려면, 마우스 캡쳐를 이용하셔야 합니다.

    그럼, 즐프~

  • Profile
    송태성 2004.03.31 22:53
    자세한 답변 감사드립니다.

    그런데 말씀하신 방법을 모르겠네요.

    일단 제가 필요한 코딩은 모달폼을 뛰우고 다른곳을 클릭하면 저절로
    닫히는 프로그램을 만들려고 합니다.

    밑에 쓰신 내용을 조금만 자세하게 부탁드립니다.

    • 진돌
    • 2004.03.31 22:26
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 최수림
      2004.03.31 22:54
      html 파일에서 자바스크립트로 파라미터 값으로 지정해주시면 될거 같은데요
    • 연기훈
      2004.03.31 21:32
      위에서 아래, 좌우 출력이.. 무얼 말습하시는 건지 모르것네요... 종이 방향 가로, 세로 를 말습히시...
    • 전명현
      2004.03.31 22:03
      제 질문이 좀 모호했군요.. 보통은 ColumnHeader, Detail Band 순으로 해서, 위에서 부터 한 줄씩 ...
    • 너구리
      2004.03.31 22:31
      퀵리포트에서는 안될겁니다. 무조건 위에서 아래로 밖에 안되더군요.. 하이퍼 리포트는 되더군요..
    • 민상익
    • 2004.03.31 21:02
    • 1 COMMENTS
    • /
    • 0 LIKES
    • KDDG_BaSTaD
      2004.03.31 21:46
      ==> 쉽게 말하면 델파이에서 DLL 이 나온게 아니라 C 부터 DLL 이 있어와서 그걸 지원하다보니 Delphi...
    • 연기훈
      2004.03.31 20:40
      csv 파일은 일반 text 파일입니다. access나 exel 프로그램에서 바로 변환도 가능하고요.. 프로그램...
    • Robin
    • 2004.03.31 20:26
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2004.03.31 20:32
      안녕하세요. 최용일입니다. 전체화면 얻는것과 같은 방식으로 하시면 됩니다. 단지 DC가 전체화면이 ...
    • 박수영
    • 2004.03.31 19:07
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 박수영
      2004.03.31 19:16
      A테이블의 내용이 B테이블에 그대로 있는 것 같은데 B만 읽어오면 안되나요???? B만 읽어와서 작업이 가...
    • Galaxy
      2004.03.31 20:53
      안녕하세요 답변 감사 합니다. 저도 B만 읽어오면 좋겠지만 현 사항은 그렇지가 않습니다. 아래 테이...
    • 너구리
      2004.03.31 22:25
      오라클에서는 아웃조인이 한쪽으로밖에 걸리지 않습니다. 오라클인거 같은데..어떤디비 인지는 잘모르겠...
    • Galaxy
      2004.04.01 18:17
      답변에 감사 드립니다. 안녕하세요 수고 많습니다. MS-SQL7.0을 사용하고 있습니다. 님의 말씀대로 is...
    • 송태성
    • 2004.03.31 17:54
    • 4 COMMENTS
    • /
    • 1 LIKES
    • 너구리
      2004.03.31 20:18
      TForm.OnActivate, OnDeactivate 는 같은 애플리케이션에서의 폼끼리 활성화,비활성화 될때만 발생을 하구...
    • 송태성
      2004.03.31 22:51
      그대로 코딩했는데도 'IN'은 먹더군요 그런데 모달 폼이라서 그런지 'OUT'  는 안먹더군요.. ...
    • 한원희
      2004.03.31 20:16
      안녕하세요. 한원희입니다. NC(Non-Client) 메시지는 모달폼 외부에 대한 동작으로 발생하는 것이 아니...
    • 송태성
      2004.03.31 22:53
      자세한 답변 감사드립니다. 그런데 말씀하신 방법을 모르겠네요. 일단 제가 필요한 코딩은 모달폼을 ...
    • 루이
    • 2004.03.31 08:37
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 박수영
      2004.03.31 19:21
      for문을 이용을 해서 돌리면서 비교를 하면 안되나요??? tmp := ''; for i := 1 to grid1.rowcount...
    • 너구리
      2004.03.31 22:29
      말그대로 입니다. Statement를 기대했는데 procedure가 나왔넹.. 저에러가 난 뒷부분을 보십시오.. ...
    • 왕초보
    • 2004.03.31 06:30
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 박수영
      2004.03.31 17:54
      datamodule에 연결된 query에다 직접 한번 해보세요... 전 아래와 같이 안 해봐서리...
    • 배수민
    • 2004.03.31 06:22
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 이중철
      2004.03.31 22:01
      안녕하세요 이중철입니다. 혹시 님 Mobile업체에 근무 하십니까? 소스를 보니 Terminator 문자 $FF ...
    • 최용일
      2004.03.31 20:36
      안녕하세요. 최용일입니다. Sharemem유닛을 쓸 경우 이 유닛에서 메모리 관리를 해주니까 괜찮지만... ...
    • 배수민
      2004.04.01 02:19
      조언 많은 참조 하겠습니다. 다음에 하면서 발생되는 문제가 있으면 그때 또 도와주시면 고맙겠습니다. ...
    • 한원희
      2004.03.31 03:24
      안녕하세요. 한원희입니다. 님이 원하시는 것과 동일한 기능을 하는 것이 이미 델파이에 있습니다. bpl ...
    • 이중철
      2004.04.01 03:18
      그런데 문제는 rtl.bpl이 depend 하네요 에궁 rtl.bpl도 같이 까는거 빼고는 거의 문제 없네요 ^^
    • Crazy
      2004.03.31 02:28
      if image1.Picture.Graphic = nil then begin      showmessage( '없음' ); end el...
    • Galaxy
      2004.03.31 18:23
    • 김도형
    • 2004.03.31 00:38
    • 5 COMMENTS
    • /
    • 0 LIKES
    • 연기훈
      2004.03.31 01:38
      흠.. 비트 연산하는 간단한 건데... 델파이로 할려니.. 델파이론 첨이라 맞는지 잘 모르것네요.. 다...
    • 이중철
      2004.03.31 01:53
        cnt - 1   8 - 1 => 7 저도 답변 썼다가 지웠어요 같아서요 ^^
    • 김도형
      2004.03.31 03:16
      맞게 했는지 모르겠는데요... 아래처럼 했는데 계속 ERROR가 나네욤.... =========================...
    • 연기훈
      2004.03.31 20:38
      crc 는 const 에 선언 하는 것이 아니고 var 에서 선언해주어야 합니다. procedure TForm1.Button1...
    • 이중철
      2004.03.31 22:20
      왠만하면 Data : Array of Byte; 이런식 또는 다른것으로 하시기를 아래에 보니 스트링에 해버렸네요 ...
    • goodlsw
    • 2004.03.30 21:40
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 너구리
      2004.03.30 22:18
      재생각엔 그 방식대로 하는건 좋지 않다고 봅니다.
    • 조경모
    • 2004.03.30 21:18
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 박수영
      2004.03.30 21:35
      필드가 숫자형인데 문자를 넣었다거나 아니면 날자의 형식이 다르다거나 한것 같습니다... 우...