Q&A

  • 폼 depth 를 컨트롤 하고 싶습니다.


안녕하세요.

문제는 나중에 생성되는 폼이 기존 폼 뒤쪽에 그려진다는 것인데요.

보시는 그림처럼 창 A, B가 있습니다. 각각 form 이지요.



상황 ) 창 A에 있는 command1 버튼을 누르면 창 B가 show 됩니다.

2번째 그림처럼 폼이 그려지는게 정상일 때

현재는 3번째 그림처럼 포커스는 창 B가 가져가면서도 창 A 뒤쪽에 그려지는 문제가 발생합니다.

더우기 창 B를 클릭해도 창 A위쪽으로 올라오지 않습니다.



방안 ) 임시방편으로 창 B.show 하기 직전에 창 A.sendtoback 를 해줬습니다.

이렇게 했을 때의 문제는 창 A가 아주 않보였다가 창 B.close된 후에야 창 A가 다시 올라옵니다.

결론적으로 세번째 그림처럼 창 B가 창 A 위로 올라와야 한다는 것이지요.

인터넷을 찾아보니 Z-order라는 것이 있어서 창 A.sendbackward 하면

(sendtoback 처럼 완전히 사라지는 것이 아니라) 1단계만 아래로 내려가서 3번째 그림처럼 된다고 되어있더군요. 바로 제가 바라는 정답이지요.



문제 ) 문제는 사용중인 delphi 2005와 delphi 6 두 버전 모두 .sendbackward 메소드가 없는거 같습니다.

sendtoback, bringtofront는 모두 있고요. F1에서 찾아보니 .sendbackward 메소드도 나오는데

ASP나 그림객체에 한해서 적용되는거 같습니다.

나중에 호출되는 자식창이 부모창 위에서 그려지는게 당연한거 아닌가요?

이건 별다른 코딩이 없어도 원래 되어야 하는거 아닌가요? 창 A의 속성으로 제가 잘못 건드린것이 있을까요?



창이 백여개도 넘는데 일일히 수정하기도 어려울꺼 같고 ... 고수님들의 지혜를 부탁드려봅니다.
4  COMMENTS
  • Profile
    장성호 2008.07.03 11:26
    그냥 참조하세요

    WndParent 를 조정해 보심은 어떨런지요?

    Delphi2005 는 어떻게 돌아가는지 잘모르겠습니다만


    Delphi7을 포함해 이전버젼과 Delphi2006이상은 윈도우클래스(Form)의 WndParent 설정이 좀 다릅니다.

    Delphi7 이전은 모든 폼의 wndParent는 Application.Handle 이었습니다.
    Delphi2006 ,2007 은 설정에 따람 Form의 WndParent가 Application.Handle 일수도 있고 MainForm일수도 잇습니다.

    Active되는 Window가 항상 앞에 오려면 WndParent를 Application.Handle 으로 하도록 하면 될것입니다.

    Delphi7과 그 이전은 기본이 그렇구
    2006-2007에서는 Application->MainFormOnTaskBar=false; 를 하면
    모든 Form의 WndParent가 Application.Handle 이 됩니다.

    만약 WndParent를 내가 원하는 윈도우(Form)으로 바꾸고 싶다면
    CreateParams 에서 하면 됩니다.


    위 세번째 그림은?
    Form1의 WndParent가 Form3가 되어버린것 같기두 하고... 이상하긴 하네요



  • Profile
    석주현 2008.07.03 11:44
    음 지금 제가 직접해봤는데 질문하신 내용에서 정상과 동일하게 되는데

    뭐가 안된다는 건지 모르겠습니다. 위에 보면 비주얼 베이직 폼 같은데 비베에서만 안되는게 아닌지.

    제가 테스트한 환경은 델파이 7.0에 XP 입니다.
  • Profile
    다른남자 2008.07.05 09:11
    감사합니다. 해결
  • Profile
    장성호 2008.07.05 11:00
    Application.MainFormOnTaskBar:=false; 는 프로그램이 시작될때 한번만 해주면됩니다.

    Application->MainFormOnTaskBar=false; 이렇게 "->"가 들어간 것은 C++Builder로 테스트 했기때문입니다.

    delphi는 아직 delphi7을 쓰고 있어서..

    • 루단스
    • 2008.07.04 19:55
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 루단스
      2008.07.04 22:21
      The ExpressPageControl - shipped with the ExpressQuantumGrid Suite ..... 라고 되어있네요. ㅜ.ㅜ Ex...
    • 김상진
    • 2008.07.04 17:32
    • 1 COMMENTS
    • /
    • 0 LIKES
    • phono
      2008.07.04 18:24
      cxDateEdit.Date 프로퍼티를 사용하세요.
    • 석주현
      2008.07.03 18:18
      기본적인 라이브러리에 해당하는 파일을 못찾는걸 보면 다시 설치하세요. 델파이의 Path 부분 설정이...
    • 석주현
      2008.07.03 19:17
      쪽지 보내신 답을 여기에 적어 봅니다. 기본적으로 델파이에서 제공되는 컴포넌트 라이브러리들은 패...
    • 가르쳐주삼
      2008.07.04 01:56
      감사합니다~
    • 다른남자
    • 2008.07.03 10:01
    • 4 COMMENTS
    • /
    • 0 LIKES
    • 장성호
      2008.07.03 11:26
      그냥 참조하세요 WndParent 를 조정해 보심은 어떨런지요? Delphi2005 는 어떻게 돌아가는지 잘모...
    • 석주현
      2008.07.03 11:44
      음 지금 제가 직접해봤는데 질문하신 내용에서 정상과 동일하게 되는데 뭐가 안된다는 건지 모르겠습...
    • 다른남자
      2008.07.05 09:11
      감사합니다. 해결
    • 장성호
      2008.07.05 11:00
      Application.MainFormOnTaskBar:=false; 는 프로그램이 시작될때 한번만 해주면됩니다. Application-...
    • 최은아
    • 2008.07.03 07:35
    • 6 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      2008.07.03 08:53
      아주 간단한 클라이언트서버 라면 DBIsam 이라는 제품이 있습니다. 지금은 ElevateDB 라는 제품으로 바...
    • 최은아
      2008.07.03 09:21
      정욱님.. 답글 감사요. ~~ 마음은 급한데 답글이 없어서 좌절모드 하고 있었는데... 정욱님.. 제가 ...
    • 이정욱
      2008.07.03 14:34
      흠.. 파라독스를 다른 DB로 이전한다는 것이었습니다. 정확히 어떤 상황인지 잘 인지가 안되네요... ...
    • 최은아
      2008.07.03 17:51
      위에 썼는데.. 전 asp 개발자로 제가 맡은 프로젝트는 쇼핑몰입니다. 회원들은 투자금으로 쇼핑몰에...
    • 구창민
      2008.07.03 22:09
      대충 말씀을 읽어보니 asp 에서 파라독스와 붙여서 읽고 쓰고 해야 하는 상황이군요..? 제가 asp 를 ...
    • 이정욱
      2008.07.04 10:24
      음? 그렇다는 뜻은.. 파라독스 DB는 투자자의 컴퓨터에 깔려있는것이고, ASP로 구현한 웹에서 물건을 구...
    • 이정욱
      2008.07.03 08:48
      Zeos 를 안써봐서 정확히는 모르겠지만, 혹시 그 컴포넌트 안에 Cache 관련된 프로퍼티가 있는지 확인해...
    • 허학송
      2008.07.03 17:57
      Zeos 6.6.2라면 Query(ZQuery)의 속성중 CacheUpdate속성을 False로 지정하시고 해보시기 바랍니다.
    • 초보델피
      2008.07.04 03:45
      이상하네요.. CachedUpdate 속성은 False로 되어 있는데도 그렇네요..
    • 허학송
      2008.07.07 21:42
      cachedupdate가 False로 되어있다면 다른 Client에서 자료를 Update(Insert,Update)할때 Commit를 하지...
    • 초보델피
      2008.07.08 05:45
      제가 설명을 않드린 부분이 있는데 로컬 DB가 아니라 원격지DB에 접속을 합니다.. 타이머로 3초간격으...
    • 초보델피
      2008.07.08 06:12
      아~~ 해결 했습니다.. ZConnection.IsolationLevel 을 tiREADCOMMITTED으로 변경하니까 됩니다.. ...
    • steps
    • 2008.07.03 06:42
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      2008.07.03 08:47
      파일의 이름이 깨진다는것이 다이얼로그 상에서 깨지는것인가요? 흠.. OpenDialog 는 윈도우에 있는 ...
    • steps
      2008.07.03 19:58
      다이얼로그상에서는 파일이름이 제대로 나옵니다. 그런데 다이얼로그의 filename을 읽으면 영문자든 중문...
    • 신철우
      2008.07.03 03:32
      [자답] ADOQuery에서는 min,max 함수 사용시 엄청 오래 걸림. 그래서 select top 1 regdate from class_...
    • 이정욱
      2008.07.03 08:44
      MSQuery도 비스타에서 문제 없습니다..
    • phono
      2008.07.04 18:28
      또 하나.. RecordCount 보다는 SELECT count(*) CNT FROM TABLE1 을 사용하여.. 레코드 카운트를 읽...
    • 이정욱
      2008.07.03 08:43
      DevExpress 사의 것은 설치 하시면 바로 컴포넌트로 등록이 되서 사용이 가능해 집니다. 즉, 사용하시...
    • 석주현
      2008.07.02 19:05
      동영상 강좌가 있긴 합니다만 책한권은 구입하셔서 보시는 게 좋을 겁니다. http://codeway.co.kr/...
    • Johnny
    • 2008.07.02 09:50
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 노경훈
    • 2008.07.02 01:04
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 홍성락
      2008.07.02 03:03
      조금 수정하시면 될거 같아요. 아래는 소스를 바꾸지 않는 상태에서 조금 수정하였습니다. 일단 숫자로 ...
    • 임정미
      2008.07.02 05:58
      감사합니다. 덕분에 잘 해결되었어요. TryEncodeDate에 하나 빼먹으셨네요. ㅎㅎ TryEncodeDate(2007...
    • 김상진
    • 2008.07.02 00:39
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      2008.07.02 01:25
      DLL 로드시 DLL핸들을 다르게 주셔서 호출 하시면 될것 같은데요 ^^
    • 한윤식
    • 2008.07.01 19:56
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      2008.07.01 00:04
      procedure CreateMDIChild(const Name: string); 이것을 Form1의 Private 부분에 넣으세요.
    • 석주현
      2008.07.01 01:48
      이정욱님 말씀처럼 하시면 되고요. 단축키로 Shift + Ctrl + C 를 누르시면 자동으로 생성이 됩니다. ^^
    • 구창민
      2008.06.30 21:49
      안녕하세요... DrawCell 이벤트에 아래처럼 기술하시고 테스트 해보세요.. var TW: integer; be...