Q&A

  • 도와주세요.. 액티브컨트롤 IE에서 스크롤시 깨집니다.
안녕하세요..



델파이 액티브 폼으로 액티브 컨트롤을 하나 만들어야 합니다. IE 5.0에서 쓸 예정이고요.

별 문제 없이 잘 만들고 있는데, 우연히 IE 창을 작게 만들어서 스크롤 하니까 컨트롤 화면이 우장창 깨지는 군요.. --;

전에 만들었던 컨트롤도 그런가 확인해 보니 역시.. 델파이로 만든 액티브 컨트롤은 모두다 깨집니다..



자세한 상황을 말씀드리면,



컨트롤 width=500, height=600 일 때,

IE 창을 그 이하의 크기로 만들면 IE 자체에 스크롤 바가 생기잖아요..

이때 스크롤을 시도하면 컨트롤 내부 화면만 밀리듯이 해서 깨져버립니다.



Win98, Win2k 모두.. --;



IE 버근가 싶어서 VB랑 VC로 만들어 보니 아무 이상 없더군요.. --;

저만 이런가 싶어서 옆에 윈도우 금방 깔은 따끈따끈한 컴퓨터에서 해봐도 역시.. --;



코드에 뭐 특별한 게 있는 것도 아닙니다.. 맨 액티브 폼에다가 레이블 두어개,

입력필드 두어개 올려 놓은 것 밖에 없는데.. 제발.. 부탁합니다.. 도와주세요.. 고수님들..



으아.. 큰일입니다.. 이런 기본적인 것두 제대로 안되니 원..

제발.. 델파이로도 액티브 컨트롤 잘 만들어 쓸 수 있단 걸 보여주세요...



도와주세요.. 저 비주얼 씨 배우기 싫어요.. T.T

사람하나 살리는 셈 치구.. 제발 도와주세요.. 비주얼씨 같은 거 쓰면서 어떻게 살아요..

5  COMMENTS
  • Profile
    hugehead 2000.08.09 00:01
    그건 이미 잘 알려진 Delphi 버그 입니다.

    본 자료실, Q/A, 또는 borland.public.delphi.activex.controls.writing 뉴스그룹을 검색해보면 어떻게 패치해야 하는지 자세하게 나와 있습니다.



    자세하게 말해서, AxCtrls.pas를 패치해서 컴파일하면 AxCtrls.dcu가 새롭게 나오는데, 이것을 Borland/Delphi5/Lib 폴더에 엎어치기 하면 됩니다.







    장준혁 wrote:

    > 안녕하세요..

    >

    > 델파이 액티브 폼으로 액티브 컨트롤을 하나 만들어야 합니다. IE 5.0에서 쓸 예정이고요.

    > 별 문제 없이 잘 만들고 있는데, 우연히 IE 창을 작게 만들어서 스크롤 하니까 컨트롤 화면이 우장창 깨지는 군요.. --;

    > 전에 만들었던 컨트롤도 그런가 확인해 보니 역시.. 델파이로 만든 액티브 컨트롤은 모두다 깨집니다..

    >

    > 자세한 상황을 말씀드리면,

    >

    > 컨트롤 width=500, height=600 일 때,

    > IE 창을 그 이하의 크기로 만들면 IE 자체에 스크롤 바가 생기잖아요..

    > 이때 스크롤을 시도하면 컨트롤 내부 화면만 밀리듯이 해서 깨져버립니다.

    >

    > Win98, Win2k 모두.. --;

    >

    > IE 버근가 싶어서 VB랑 VC로 만들어 보니 아무 이상 없더군요.. --;

    > 저만 이런가 싶어서 옆에 윈도우 금방 깔은 따끈따끈한 컴퓨터에서 해봐도 역시.. --;

    >

    > 코드에 뭐 특별한 게 있는 것도 아닙니다.. 맨 액티브 폼에다가 레이블 두어개,

    > 입력필드 두어개 올려 놓은 것 밖에 없는데.. 제발.. 부탁합니다.. 도와주세요.. 고수님들..

    >

    > 으아.. 큰일입니다.. 이런 기본적인 것두 제대로 안되니 원..

    > 제발.. 델파이로도 액티브 컨트롤 잘 만들어 쓸 수 있단 걸 보여주세요...

    >

    > 도와주세요.. 저 비주얼 씨 배우기 싫어요.. T.T

    > 사람하나 살리는 셈 치구.. 제발 도와주세요.. 비주얼씨 같은 거 쓰면서 어떻게 살아요..

  • Profile
    최용일 2000.08.08 23:10
    http://www.delphi.co.kr/cgi-bin/cwb/CrazyWWWBoard.cgi?mode=read&num=17522&db=newqa&fval=깨&backdepth=1



    장준혁 wrote:

    > 안녕하세요..

    >

    > 델파이 액티브 폼으로 액티브 컨트롤을 하나 만들어야 합니다. IE 5.0에서 쓸 예정이고요.

    > 별 문제 없이 잘 만들고 있는데, 우연히 IE 창을 작게 만들어서 스크롤 하니까 컨트롤 화면이 우장창 깨지는 군요.. --;

    > 전에 만들었던 컨트롤도 그런가 확인해 보니 역시.. 델파이로 만든 액티브 컨트롤은 모두다 깨집니다..

    >

    > 자세한 상황을 말씀드리면,

    >

    > 컨트롤 width=500, height=600 일 때,

    > IE 창을 그 이하의 크기로 만들면 IE 자체에 스크롤 바가 생기잖아요..

    > 이때 스크롤을 시도하면 컨트롤 내부 화면만 밀리듯이 해서 깨져버립니다.

    >

    > Win98, Win2k 모두.. --;

    >

    > IE 버근가 싶어서 VB랑 VC로 만들어 보니 아무 이상 없더군요.. --;

    > 저만 이런가 싶어서 옆에 윈도우 금방 깔은 따끈따끈한 컴퓨터에서 해봐도 역시.. --;

    >

    > 코드에 뭐 특별한 게 있는 것도 아닙니다.. 맨 액티브 폼에다가 레이블 두어개,

    > 입력필드 두어개 올려 놓은 것 밖에 없는데.. 제발.. 부탁합니다.. 도와주세요.. 고수님들..

    >

    > 으아.. 큰일입니다.. 이런 기본적인 것두 제대로 안되니 원..

    > 제발.. 델파이로도 액티브 컨트롤 잘 만들어 쓸 수 있단 걸 보여주세요...

    >

    > 도와주세요.. 저 비주얼 씨 배우기 싫어요.. T.T

    > 사람하나 살리는 셈 치구.. 제발 도와주세요.. 비주얼씨 같은 거 쓰면서 어떻게 살아요..

  • Profile
    장준혁 2000.08.08 23:31
    답변 정말루 고맙습니다.. 역시 델파이의 파워는 사용자들의 힘이 아닐까 합니다. ^^

    그런데 몇가지 궁금한게 더 있습니다.. 제발.. 이것두 답변을...



    우선 axctrls.pas를 새로 컴파일하려면 어떻게 해야 하죠? 방법을 몰라서.. ^^

    그런데 그렇게 컴파일 하면 만일 VCL50.BPL을 따로 쓰기로 한 경우

    (Compile with Runtime Library 옵션 사용해서) 문제가 여전하지 않을까요?



    그래서 이방법 보다 Panel하나를 띄우는 방법을 써보려고 하는데요.. 잘 안되네요..

    더 화려하게 깨지는데요.. 자세히 가르쳐 주세요.. 부탁드립니다..



    다시한번 정말 정말 고맙습니다.



    p.s. 다음 분들을 위해 이전 질/답 내용을 같이 올립니다. (제목이 이상해서 찾기 어렵더군요)



    최석기 wrote:

    > bohemian wrote:

    > > Active Form을 만들고, 웹브라우저로 볼때

    > > 웹브라우저의 스크롤바를 사용해서 안보이는

    > > 부분까지 보고자하면 스크롤이 되면서 화면이

    > > 깨져버립니다.

    > >

    > > 왜그럴까요?

    > >

    >

    > 델파이 4에서는 않그랬는데 델파이 5에서는 그러더군요..

    >

    > 델파이 버그예요..

    >

    > 저두 예전에 그 현상 때분에 고생했는데 여기 저기 물어봐도 아시는 분이 않 계시더군요.

    >

    > 그래서 외국에 뉴스 그룹 뒤지다 알아냈어요..

    >

    > 델파이 Lib 소스를 수정해야 되요.

    >

    > axctrls.pas에

    >

    > function TActiveXControl.SetObjectRects(const rcPosRect: TRect;

    > const rcClipRect: TRect): HResult;

    > begin

    > try

    > FWinControl.BoundsRect := rcPosRect;

    > Result := S_OK;

    > except

    > Result := HandleException;

    > end;

    > end;

    >

    > 부분을 다음과 같이 수정하면 됨.

    >

    > function TActiveXControl.SetObjectRects(const rcPosRect: TRect;

    > const rcClipRect: TRect): HResult;

    > var

    > WinRect: TRect;

    > begin

    > try

    > IntersectRect(WinRect, rcPosRect, rcClipRect);

    > // BEGIN FIX

    > WinRect := Bounds(rcPosRect.left, rcPosRect.Top,

    > WinRect.Right - WinRect.Left + rcClipRect.Left - rcPosRect.Left,

    > WinRect.Bottom - WinRect.Top + rcClipRect.Top - rcPosRect.Top);

    > // END FIX

    > FWinControl.BoundsRect := WinRect;

    > Result := S_OK;

    > except

    > Result := HandleException;

    > end;

    > end;

    >

    > 아니면 ActiveX 메인 폼 위에 Panel을 하나 전체로 놓으시고 그 Panel에 다른 일반 폼을 띄워서 그 일반 폼이 메인 폼 인것 같이 속이시면 되는데...





  • Profile
    최석기 2000.08.09 01:21
    장준혁 wrote:

    > 답변 정말루 고맙습니다.. 역시 델파이의 파워는 사용자들의 힘이 아닐까 합니다. ^^

    > 그런데 몇가지 궁금한게 더 있습니다.. 제발.. 이것두 답변을...

    >

    > 우선 axctrls.pas를 새로 컴파일하려면 어떻게 해야 하죠? 방법을 몰라서.. ^^

    > 그런데 그렇게 컴파일 하면 만일 VCL50.BPL을 따로 쓰기로 한 경우

    > (Compile with Runtime Library 옵션 사용해서) 문제가 여전하지 않을까요?

    >

    > 그래서 이방법 보다 Panel하나를 띄우는 방법을 써보려고 하는데요.. 잘 안되네요..

    > 더 화려하게 깨지는데요.. 자세히 가르쳐 주세요.. 부탁드립니다..

    >

    > 다시한번 정말 정말 고맙습니다.

    >

    > p.s. 다음 분들을 위해 이전 질/답 내용을 같이 올립니다. (제목이 이상해서 찾기 어렵더군요)

    >

    > 최석기 wrote:

    > > bohemian wrote:

    > > > Active Form을 만들고, 웹브라우저로 볼때

    > > > 웹브라우저의 스크롤바를 사용해서 안보이는

    > > > 부분까지 보고자하면 스크롤이 되면서 화면이

    > > > 깨져버립니다.

    > > >

    > > > 왜그럴까요?

    > > >

    > >

    > > 델파이 4에서는 않그랬는데 델파이 5에서는 그러더군요..

    > >

    > > 델파이 버그예요..

    > >

    > > 저두 예전에 그 현상 때분에 고생했는데 여기 저기 물어봐도 아시는 분이 않 계시더군요.

    > >

    > > 그래서 외국에 뉴스 그룹 뒤지다 알아냈어요..

    > >

    > > 델파이 Lib 소스를 수정해야 되요.

    > >

    > > axctrls.pas에

    > >

    > > function TActiveXControl.SetObjectRects(const rcPosRect: TRect;

    > > const rcClipRect: TRect): HResult;

    > > begin

    > > try

    > > FWinControl.BoundsRect := rcPosRect;

    > > Result := S_OK;

    > > except

    > > Result := HandleException;

    > > end;

    > > end;

    > >

    > > 부분을 다음과 같이 수정하면 됨.

    > >

    > > function TActiveXControl.SetObjectRects(const rcPosRect: TRect;

    > > const rcClipRect: TRect): HResult;

    > > var

    > > WinRect: TRect;

    > > begin

    > > try

    > > IntersectRect(WinRect, rcPosRect, rcClipRect);

    > > // BEGIN FIX

    > > WinRect := Bounds(rcPosRect.left, rcPosRect.Top,

    > > WinRect.Right - WinRect.Left + rcClipRect.Left - rcPosRect.Left,

    > > WinRect.Bottom - WinRect.Top + rcClipRect.Top - rcPosRect.Top);

    > > // END FIX

    > > FWinControl.BoundsRect := WinRect;

    > > Result := S_OK;

    > > except

    > > Result := HandleException;

    > > end;

    > > end;

    > >

    > > 아니면 ActiveX 메인 폼 위에 Panel을 하나 전체로 놓으시고 그 Panel에 다른 일반 폼을 띄워서 그 일반 폼이 메인 폼 인것 같이 속이시면 되는데...

    >

    >



    일단 BPl을 따로 런타임 라이브러리로 사용하더라도 소스 자체를 다시 컴파일 하여 BPL이 생성 되서 상관 없을꺼 같네요..



    그리고 Panel에 편법으로 사용하는 방법은 제가 자료실에 ActivX Form에서 MDI 흉내내는 소스 올려 놓은거 참고 하시면 되는데..



    일반 폼으로 메인 폼을 만드시고 ActiveX Form에 alClient로 Panel을 하나 배치해서 일반으로 구성한 메인폼의 Parent를 ActiveX Form에 alClient로 Panel로 잡으시면 일반 폼이 Panel 안으로 들어가 집니다..



    그런 식으로 사용 하시면 될텐데요..

  • Profile
    장준혁 2000.08.09 02:09
    덕분에 프로젝트를 차질없게 진행할 수 있게 되었습니다.



    답변 정말 고맙습니다.

    • 황동수
    • 2000.08.09 04:17
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 김일영
      2000.08.09 11:28
      어떤 내용인지 잘 알기 힘든 상황이지만... 일단 '가변적'하면 TList, TStringList, Dynamic array 이 셋...
    • 황동수
      2000.08.09 18:17
      김일영 wrote: > 어떤 내용인지 잘 알기 힘든 상황이지만... > 일단 '가변적'하면 TList, TStringList, D...
    • 김일영
      2000.08.09 19:05
      대충 의미만 전달되게 소스로 설명드리겠습니다. 문법적으로 완전한건 아니지만 쉽게 아실 수 있을 겁니...
    • 김일영
      2000.08.09 11:33
      굉장히 어려운걸 하시는군요... Design Time Package 제작 시 쓰이는 것으로서 Custom Property Editor를...
    • 장준혁
      2000.09.30 02:50
      장준혁 wrote: > 안녕하세요.. > > 이번에 프로젝트 하다 보니 궁금한 점이 너무나 많습니다. > > ...
    • 최용일
      2000.08.09 06:47
      안녕하세요. 최용일입니다. 예전에 제가 윈도우 프로시져 바꾸는 방법을 알려드렸잖아요. 폼에서 탭키를...
    • 어린왕자
      2000.08.09 21:50
      > procedure TForm1.FormCreate(Sender: TObject); > begin > OldWndMethod := ListBox1.WindowProc;...
    • 장준혁
      2000.08.09 00:38
      제가 질문하고 제가 답하는 군요.. 아래 예로 든 자바 스크립트에서 MyGrid.ColumnName[1] = 'abc';...
    • 김정식
    • 2000.08.09 00:12
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 손님
      2000.08.11 02:02
      그것은 말이져... transaction을 타지 않아서그래여... 즉 transaction이 시작되지도 않았는데... tr...
    • 최석기
      2000.08.09 01:23
    • 사발우성
      2000.08.09 01:33
    • 최석기
      2000.08.09 02:49
    • 사발우성
      2000.08.09 03:12
    • 최석기
      2000.08.09 04:16
    • 사발우성
      2000.08.09 06:01
    • 임형호
      2000.08.09 00:32
      김만성 wrote: > > 델 가족 여러분 안녕하세요... > 짐 막 사이즈에 관련된 정보를 찾아봤는데요... ...
    • 김명성
      2000.08.10 08:05
      ShowModal이 안되었던것이 아니었고, 제가 변수를 잘못사용하여서 일어났던 에러였습 니다. 이때까지의 에...
    • 김일영
      2000.08.09 11:37
      그것 참... 실은 자유게시판에 글을 올리시는 유솔로몬님 또한 이런 문제를 언급하시고 해결책도 쓰셨던...
    • 왕초보
      2000.08.09 02:38
      김명성 wrote: > 무려 세번째 질문을 올립니다. 제발 보시구요 답변을 부탁드립니다. > 이런 비슷한 질문...
    • 강인규
      2000.08.09 01:26
      그폼만 SDI로 하심 안되나여? 왜 에러가 나는데 MDI를 고집하시는지 알 수가 없군요. 이유가 있으시다면....
    • 타락천사
      2000.08.09 00:31
      안녕하세여..타락임다.. MDI child를 모달폼으로 나타낼수 없습니다.. 글구 SetWindowPos도 안되여.....
    • 김명성
      2000.08.09 04:23
      타락천사 wrote: > 안녕하세여..타락임다.. > > MDI child를 모달폼으로 나타낼수 없습니다.. > > ...
    • 박원관
    • 2000.08.08 23:17
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 황광일
      2000.08.09 09:35
      http://myhome.shinbiro.com/~opencomm 으로 놀러오십시오... 원관님이 원하시는 게 다 있습니다. 엄...
    • 장준혁
    • 2000.08.08 22:59
    • 5 COMMENTS
    • /
    • 1 LIKES
    • hugehead
      2000.08.09 00:01
      그건 이미 잘 알려진 Delphi 버그 입니다. 본 자료실, Q/A, 또는 borland.public.delphi.activex.control...
    • 최용일
      2000.08.08 23:10
      http://www.delphi.co.kr/cgi-bin/cwb/CrazyWWWBoard.cgi?mode=read&num=17522&db=newqa&fval=깨&backdepth...
    • 장준혁
      2000.08.08 23:31
      답변 정말루 고맙습니다.. 역시 델파이의 파워는 사용자들의 힘이 아닐까 합니다. ^^ 그런데 몇가지 궁금...
    • 최석기
      2000.08.09 01:21
      장준혁 wrote: > 답변 정말루 고맙습니다.. 역시 델파이의 파워는 사용자들의 힘이 아닐까 합니다. ^^ > ...
    • 장준혁
      2000.08.09 02:09
      덕분에 프로젝트를 차질없게 진행할 수 있게 되었습니다. 답변 정말 고맙습니다.
    • 이정희
    • 2000.08.08 22:58
    • 4 COMMENTS
    • /
    • 0 LIKES
    • 내가 찾아볼께
      2000.09.02 09:19
      이정희 wrote: > > 안녕하세요. > 저는 회사에서 Delphi5와 DB2를 사용하고 있습니다. > ACE400이라는...
    • 담배연기
      2000.08.09 01:16
      이정희 wrote: > > 안녕하세요. > 저는 회사에서 Delphi5와 DB2를 사용하고 있습니다. > ACE400이라는...
    • 이정희
      2000.08.09 02:27
      답변 감사드립니다. 그럼, ACE400에 대해서 말씀드리면, Middle ware입니다. 프랑스에서 만든 S/W인데...
    • 담배연기
      2000.08.09 03:52
      답변 감사합니다. 그런데 델파이 400에서 UPRADE된 제품이 델파이 5가 아닙니다. 델파이 400은 AS/400 ...
    • 초짜
    • 2000.08.08 22:27
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2000.08.08 22:35
      http://www.delphi.co.kr/cgi-bin/cwb/CrazyWWWBoard.cgi?mode=read&num=16558&db=newqa&fval=dsgnintf&bac...
    • 초짜
      2000.08.08 22:39
      최용일 wrote: > http://www.delphi.co.kr/cgi-bin/cwb/CrazyWWWBoard.cgi?mode=read&num=16558&db=newqa&...
    • Mr.Q
    • 2000.08.08 21:57
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2000.08.08 21:41
      안녕하세요. 최용일입니다. B와 C를 or 연산해서 A에 넣으란 말인데요... 논리/비트연산은 수학시간에 ...