Q&A

  • 특정 파일을 폼안에 실행 시킨 후에 폼 사이즈 변경때 같이 변경 하는 방법좀
언제나 델파이 초보입니다.
고수님들의 도움을 기다리고 있습니다.

아래처럼 메모장 윈도우를 찾아서 그 핸들을 얻어서
실행 폼안에 메모장을 넣었습니다.
물론 캡션하고, 보더를 없애구요.

여기까지는 잘 되었는데요
문제는 프로그램을 마우스로 사이즈를 변경 하면요
아래처럼 가져온 메모장은 크기가 변경이 되지 않습니다.

어떻게 해야 할지요?

메인 resize 이벤트에서 현재 notepad가 속해있는 핸들을 얻어서
변경된 만큼 다시 SetwindowsPos 를 해 주는 방법을 해봤는데요

마우스로 크기 변경을 하기위해서 드래그하면 바로 resize 이벤트가 발행 해서
처음에는 윈도우 pos가 적용이 되는데요
문제는 setwindowpos 가 실행되면서 다시 마우스의 사이즈 변경 상태가 풀려버리내요 ..

어떻게 해야 할지 좀 알려주세요.

감사합니다.

   wnd := FindWindow('Notepade', nil); //노드패드에 핸들 구하기

   Windows.SetParent( wnd, self.Handle ); //실행프로그램의 부모를 현재폼으로 설정

   // 타이틀을 없앤다.
   wlong := GetWindowLong(wnd, GWL_STYLE);
   wlong := wlong - WS_CAPTION - WS_BORDER;

   SetWindowLong(wnd, GWL_STYLE, round(wlong));

//위치크기 설정
   SetWindowPos( wnd, 0, 0, 0, slef.Clientwidth, self.ClientHeight,
           SWP_NOZORDER or SWP_SHOWWINDOW);
3  COMMENTS
  • Profile
    도끼로이마까 2005.04.07 01:11

    이경우 메모장이 child window로 설정되기 때문에
    MoveWindow를 이용하셔야합니다...
    SetWindowPos를 MoveWindow로 바꿔주세요.

    procedure TForm1.FormResize(Sender: TObject);
    begin
      //위치크기 설정
      MoveWindow(FMemoWnd, 0, 0, ClientWidth, ClientHeight, true);
    end;


  • Profile
    한규호 2005.04.07 01:55
    그렇군요^^
    여기저기 팁들만 보고 하다보니..
    조금더 많은 공부를 해야겠내요^^

    참 그런데요. Resize 에 넣어서하니까요 화면이 너무 많이 깜빡 거리내요..
    혹시 더 좋은 방법은 없을까요?
    ^^

    감사합니다.^^

  • Profile
    도끼로이마까 2005.04.07 02:27
    Form선언부에 다음과 같이 선언하시구요.
    procedure WMEraseBkGnd(var msg: TWMEraseBkGnd); message WM_ERASEBKGND;

    구현부에 다음과 같이 써주세요.
    procedure TForm1.WMEraseBkGnd(var msg: TWMEraseBkGnd);
    begin
      msg.Result := 1;
    end;

    어짜피 클라이언트 영역을 메모장이 다 차지하니, 리사이즈될때마다 클라이언트 영역을 칠할 필요가 없겠죠.
    MoveWindow에서 마지막 파라미터를 true로 설정해야하니 메모장이 다시그려질때 깜빡이는건 어쩔수 없을듯하네요.

    • 손용성
      2005.04.08 20:55
      여전히 어쩌시려는 건줄 잘 모르겠지만 좀더 자세히 답변드리자면 procedure TCrystalReportsReviewer....
    • 손용성
      2005.04.08 20:46
      크리스탈 리포트를 어떻게 쓰시려는 줄은 잘 모르겠으나 델파이 6 리포트 10 기분으로 CrReport.Param...
    • 이경원
    • 2005.04.08 02:31
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2005.04.08 21:24
      안녕하세요. 최용일입니다. 팁/테크나 강좌란 보시면 셀의 문자열을 왼쪽/오른쪽/중앙 정렬하는 예제가 ...
    • 김영일
    • 2005.04.08 01:32
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 김영일
    • 2005.04.08 01:30
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 도끼로이마까
      2005.04.08 02:10
      김성동님이 제작하신 아크로에디트 콤포넌트 받으셔서 살펴보시면 아마도 해결책이 있을것입니다. 어슴프...
    • 김동식
    • 2005.04.08 00:53
    • 1 COMMENTS
    • /
    • 0 LIKES
    • Crazy™
      2005.04.08 18:51
      통신포트가 제대로 연결되어있다면 프로토콜 전송이 제대로인지 체크해보세요. 델파이 자료실에 가셔셔 ...
    • 라벤더
      2005.04.08 01:16
      안녕하세요.. crpe32.dll error는 VCL과 크리스탈 레포트의 버젼이 맞지 않아 생기는 에러입니...
    • 임강택
      2005.04.08 03:05
      님 감사합니다. Visual Studio.Net에서 만든 크리스탈 리포트를 부르려니깐 않되드라고요 크리스탈리포...
    • 델초보
    • 2005.04.07 01:48
    • 4 COMMENTS
    • /
    • 0 LIKES
    • 권태훈
      2005.04.07 21:47
      select distinct a, count(a), sum(a) from table where... group by a 하면 될듯..
    • 델초보
      2005.04.07 22:51
      오~ 감사합니다. 염치 없지만 하나더 질문합니다. 카운트 된 필드를 Db그리드에 어떻게 전달하죠? 그...
    • 권태훈
      2005.04.08 18:38
      문자면 sum()은 안 먹고, count만 먹겠네요. select field1 as a, count(field1) as b from table.. ...
    • Crazy™
      2005.04.07 23:05
      책을 전혀?? 안보신듯 보이네요.. 남이 알려주면 그 하나만 알지만 자기가 책을 찾으면 그에 관련된걸 많...
    • 이기용
    • 2005.04.07 01:14
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 하얀까마귀
      2005.04.09 01:49
      깜빡거림은 화면을 지웠다가 다시 그리기때문에 발생합니다. 그것이 리스트뷰든 다른 어떤 콤포넌트이든...
    • 한규호
    • 2005.04.07 00:56
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 도끼로이마까
      2005.04.07 01:11
      이경우 메모장이 child window로 설정되기 때문에 MoveWindow를 이용하셔야합니다... SetWindowPos를 M...
    • 한규호
      2005.04.07 01:55
      그렇군요^^ 여기저기 팁들만 보고 하다보니.. 조금더 많은 공부를 해야겠내요^^ 참 그런데요. Resize...
    • 도끼로이마까
      2005.04.07 02:27
      Form선언부에 다음과 같이 선언하시구요. procedure WMEraseBkGnd(var msg: TWMEraseBkGnd); message WM_E...
    • 도끼로이마까
      2005.04.07 00:57
      2번째루프에서 processed once가 출력되는 횟수는 5i + 1 - i + 1 = 4i + 2 가 되구요. 1번째루프와 ...
    • 이미영
    • 2005.04.06 20:49
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 김병윤
      2005.04.06 22:14
      혹시 프린트가 HP꺼 아닌가요? HP꺼 무지 싫어하는데... 출력에 문제생기는 프린트가 대부분...HP라서......
    • 류성길
    • 2005.04.06 20:36
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 권태훈
      2005.04.07 21:48
      commit;
    • 조광석
      2005.04.08 00:12
      ...
    • 권태훈
      2005.04.14 19:51
      commit이 실행 안되서 그런거니 commit을 실행해보시고, 그래도 안되면 commit이 실행되는가 sql monito...
    • 도끼로이마까
      2005.04.07 02:40
      타이머 interval을 1분으로 하신후, OnTimer Event를 다음과 같이 작성해보세요. <!--CodeS--> pro...
    • 김병윤
      2005.04.06 23:55
      쿼리결과를 DBGrid 타이틀만 표시해주는 건가요? 다른 내용은? 어쩌구요? ^^;; <!--CodeS--> Qu...
    • 단아
    • 2005.04.05 12:50
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 김경우
      2005.04.06 19:43
      질문하신 내용에 대해서 제일 간단하게 소스로 구현 해봤습니다. 보시고 질문사항 있으시면 메일 보내주세...
    • 단아
      2005.04.07 00:49
      감사합니다.^^
    • 가비
    • 2005.04.05 10:36
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 김병윤
      2005.04.06 23:27
      이벤트를 어디서 사용하셨는지 모르겠네요... QuickRep1의 OnNeedData 이벤트를 사용해보세요 <!--C...
    • 조현태
    • 2005.04.05 10:24
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 김경우
      2005.04.06 19:52
      질문하신 내용이 다음의 내용을 구현 하기 위함인지 잘 모르겠지만 소스보시고 아닌 것 같으시면 답변 다...
    • 조현태
      2005.04.06 20:57
      아, 감사합니다 많은 도움이 되었습니다^^