Q&A

  • 이미지 바탕에 나타나는 폼이 보이지 않게 할려면...
폼상에 이미지를 올려놓았을 때, 이미지만 나타나고 폼이 나타나지 않게 할려면은 어떻게 해야 하나요?

Form1.Brush.Style := bsClear;

Form1.BorderStyle := bsNone 이방식으로는 폼은 없어지는데 없어지기전 바탕이 같이 남아 있어서 유용하지가 않습니다.(깨끗하게 리프레쉬가 안됨)

좋은 방법 있으면 알려주세요

그리고 만약 도넛모양의이미지가 있다면 이미지 부분만 나타나고 도넛의 가운데 구멍부분에서는 바탕의내용들을 클릭할 수 있도록 할려면 어떻게 해야하나요?

3  COMMENTS
  • Profile
    민성기 2000.02.02 15:36
    성병규 wrote:

    > 폼상에 이미지를 올려놓았을 때, 이미지만 나타나고 폼이 나타나지 않게 할려면은 어떻게 해야 하나요?

    > Form1.Brush.Style := bsClear;

    > Form1.BorderStyle := bsNone 이방식으로는 폼은 없어지는데 없어지기전 바탕이 같이 남아 있어서 유용하지가 않습니다.(깨끗하게 리프레쉬가 안됨)

    > 좋은 방법 있으면 알려주세요

    > 그리고 만약 도넛모양의이미지가 있다면 이미지 부분만 나타나고 도넛의 가운데 구멍부분에서는 바탕의내용들을 클릭할 수 있도록 할려면 어떻게 해야하나요?



    안녕하세요~ 민성기 입니다.



    병규님이 밑에 좋은말씀 이미 해 주셨구요... 저는 여기 추가해서 폼을 예쁘게 오려주는 도구에 대해 설명드릴라구요...



    델코의 뉴즈레터 가장 최근꺼를 보시면, BmpRgn.pas 란 유니트를 구하실 수 있습니다. 비트맵과 비트맵에서 오려낼 색깔을 주면 예쁘게 잘라진 영역값을 리턴하는 CreateBmpRgnEX 란 함수가 들어있죠. 이걸 쓰시면 원하시는 어떤 모양으로건 폼을 도려낼 수 있습니다. 쓰다보니... '도려내다'란 어감이 참 좋군요~ ^^;



    델코 자료실에서 '뉴즈레터'를 검색해 보시구요...



    아, 참고로... 이 유니트는 이번달 마소 어바웃에두 실었습니다. 워낙 쓸 게 없다보니... 히~



    ----------------------------------------------------------------

    델파이의 모든 것... 델파이 코리아. http://www.delphikorea.com

    ----------------------------------------------------------------



  • Profile
    양병규 2000.02.02 09:48
    아마도 질문하신 내용으로 봐서 스프레시폼같은걸 맹그시는것 같은디...



    질문하신 내용이 그러니깐... 그림이 있는 폼이 보일때 폼바닥(회색)이 순간적으로 "퍽"하고 나타나고 그다음에 그림이 보이는 현상... 을 말씀하신거죠? 그쵸?(아님 말구용)



    TForm1=class(TForm)

    private

    procedure WMEraseBkgnd( var Message: TMessage ); message WM_ERASEBKGND;

    end;

    :

    :



    procedure TForm.WMEraseBkgnd( var Message: TMessage );

    begin

    end;



    이렇게 해 보세요 WMEraseBkgnd에 내용이 없져?

    이 메시지는 바닥을 그려주는 역할을 합니다 물론 TWinControl이 합니다.

    위와 같이 해주면 원래 하던일을 안 하게 되죠 그래서 회색 바탕이 그려지는 일도

    안 합니다.



    그럼

    평안하시길~



    http://www.helpword.co.kr 에 놀러오셔용~

  • Profile
    이중락 2000.02.02 04:15
    성병규 wrote:

    > 폼상에 이미지를 올려놓았을 때, 이미지만 나타나고 폼이 나타나지 않게 할려면은 어떻게 해야 하나요?

    > Form1.Brush.Style := bsClear;

    > Form1.BorderStyle := bsNone 이방식으로는 폼은 없어지는데 없어지기전 바탕이 같이 남아 있어서 유용하지가 않습니다.(깨끗하게 리프레쉬가 안됨)

    > 좋은 방법 있으면 알려주세요

    > 그리고 만약 도넛모양의이미지가 있다면 이미지 부분만 나타나고 도넛의 가운데 구멍부분에서는 바탕의내용들을 클릭할 수 있도록 할려면 어떻게 해야하나요?



    제가 예전에 천리안 채소동에서 갈무리 했던 내용을 올려 드립니다. 참고하세요.

    그리고 이런내용은 이곳이나 델코나 여러군데 있습니다.

    참고로 그런 컴포넌트도 찾아보시면 있습니다. 예전에 제가 잠깐 테스트했는데 이름은

    기억이 나지 않는군요...



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







    3. 폼에 구멍뚫기







    우선 폼의 이름을 Main 이라고 하고요,



    이미지 콤포넌트를 Image, 버튼을 Btn, 상태바를 StatusBar...



    이렇게 이름붙입니다.







    그 다음 Main 의 OnCreate 이벤트핸들러를 작성합니다.







    procedure TMain.FormCreate(Sender: TObject);



    var



    MainRgn,BtnRgn,ImageRgn,BarRgn,NewRgn: HRgn; // 세개의 영역을 정한다.



    begin



    // 각각의 영역을 정의함.



    MainRgn := CreateRectRgn(0,0,Width,Height);



    BtnRgn := CreateRectRgn(Btn.Left,Btn.Top,Btn.Left+Btn.Width,Btn.Top+Btn.Height);



    BarRgn := CreateRectRgn(StatusBar.Left,StatusBar.Top,StatusBar.Left+StatusBar.Width,



    StatusBar.Top+StatusBar.Height);



    ImageRgn := CreateRoundRectRgn(Image.Left,Image.Top,Image.Left+Image.Width,



    Image.Top+Image.Height,Image.Width,Image.Height);







    // 새로 지정될 영역을 정의함



    NewRgn := CreateRectRgn(0,0,0,0);







    // RGN_OR 모드로 세 영역을 결합.



    CombineRgn(NewRgn, NewRgn, ImageRgn, RGN_OR);



    CombineRgn(NewRgn, NewRgn, BtnRgn, RGN_OR);



    CombineRgn(NewRgn, NewRgn, BarRgn, RGN_OR);



    // 폼의 영역이 새로 설정된다.



    SetWindowRgn(Handle, NewRgn, TRUE);



    end;







    이렇게 하고 실행하시면 묘한 모양이 나옵니다.







    참고로..







    씨에서 윈도우의 색깔을 NULL 로 하는 것은



    프로그램에 구멍을 뚫는 것이 아닙니다.



    만약 그런 식으로 폼을 만들었다 해도



    실행을 시켜보면 그냥 처음 실행될 때의 배경을 가질 뿐,



    폼을 움직여 보면 그 안의 그림이 그냥



    한장의 캡춰된 이미지에 불과하다는 것을 알게 됩니다.







    그럼 도움이 되셨기를...







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

    • 김동근
    • 2000.02.02 05:15
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 구창민
      2000.02.02 06:27
      김동근 wrote: > BORDBK50.dll 파일좀 압축해 보내주세요 > 이게시판은 첨부파일이 추가되지 않습니...
    • 초보왕
    • 2000.02.02 04:52
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 양병규
      2000.02.02 09:41
      만약 밑에 있는 Edit가 DBEdit이고 DBEdit와 DBGrid의 DataSource가 같은 놈이라면 절대 그런일은 없습니다...
    • 김미라
    • 2000.02.02 04:21
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 구창민
      2000.02.02 06:25
      김미라 wrote: > 안녕하세요? 고생이 많으시네요. > 제가 요즘 디렉토리 속성을 변경하는 프로그램을 만...
    • 오명석
    • 2000.02.02 04:13
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 김순호
      2000.02.02 18:17
      오명석 wrote: > 자꾸 질문만 올려서 미안합니다. > > TComm을 구해 스캐너(시리얼)로 읽으니 Hex값이 ...
    • 이중락
      2000.02.02 04:29
      오명석 wrote: > 자꾸 질문만 올려서 미안합니다. > > TComm을 구해 스캐너(시리얼)로 읽으니 Hex값이 ...
    • 이중락
      2000.02.02 04:31
      COME__ON wrote: > 델파이하고 오라클이 모에요? > 델파이는 S/W를 개발하는 언어(RAD TOOL)이고 오...
    • 이중락
    • 2000.02.02 04:11
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 문홍철
      2000.02.02 18:28
      이중락 wrote: > 안녕하세요? 이중락 입니다. > DBGrid에서 MultiSelect된 행을 삭제하려 하는데 잘 안되...
    • 구창민
      2000.02.02 05:35
      이중락 wrote: > 안녕하세요? 이중락 입니다. > DBGrid에서 MultiSelect된 행을 삭제하려 하는데 잘 안되...
    • 성병규
    • 2000.02.02 04:05
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 민성기
      2000.02.02 15:36
      성병규 wrote: > 폼상에 이미지를 올려놓았을 때, 이미지만 나타나고 폼이 나타나지 않게 할려면은 어떻게...
    • 양병규
      2000.02.02 09:48
      아마도 질문하신 내용으로 봐서 스프레시폼같은걸 맹그시는것 같은디... 질문하신 내용이 그러니깐... ...
    • 이중락
      2000.02.02 04:15
      성병규 wrote: > 폼상에 이미지를 올려놓았을 때, 이미지만 나타나고 폼이 나타나지 않게 할려면은 어떻게...
    • 이충기
    • 2000.02.02 03:56
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 박철우
      2000.02.04 04:13
      델파이4를 사용하신다면 datadump라는 것이 있습니다. 일단은 기존의 데이터를 새로 인스톨한 프로그램의 ...
    • 이중락
      2000.02.02 04:23
      이충기 wrote: > 안녕하세요? > > 델파이로 작성된 프로그램을 사용하게 되었는데 기존 쓰던 자료를 사...
    • 김기수
    • 2000.02.02 03:42
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 유 효종
      2000.02.02 18:37
      김기수 wrote: > 프로그램 실행상태에서 > > SpeedButton1 ~ SpeedButton18 까지 > > SpeedButton...
    • 하늘소
    • 2000.02.02 03:36
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 유 효종
      2000.02.02 18:44
      하늘소 wrote: > > 안녕하십니까.. > 아쉬울때만 찾아오는군요. 다른분들에게 도움도 못드리고. >...
    • 최재원
    • 2000.02.02 03:16
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 클라라
      2000.02.02 10:15
      최재원 wrote: > 수고 하십니다. > > 제가 지금 작업하고 있는 프로그램이 특정 디렉토리의 > > tx...
    • 최재원
      2000.02.02 22:41
      > 경상도 화이팅! 먼저 질문 답해주신 것 감사합니다.. 근데 한번 더 귀찮게 해드려야 겠는데요, ...
    • 최재원
      2000.02.02 23:30
      그냥 어찌 하다가 해결을 하긴 했습니다. txt파일은 여전히 첫 줄이 비는데요, 고놈은 나두고 db변환...
    • 초보왕
    • 2000.02.02 02:38
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 유 효종
      2000.02.02 02:46
      초보왕 wrote: > 1.dbgrid에서 엔터키로 필드이동하는 방법 > 2. dbgrid에서 직접입력을 하다가 특정필드...
    • 송수현
    • 2000.02.02 02:17
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 유 효종
      2000.02.02 02:42
      송수현 wrote: > 안녕하세요 꾸벅~! > program ct1; > > uses > Forms, > test1 in 'test1.pas'...
    • 유 효종
      2000.02.02 02:48
      손규만 wrote: > [질문]Delphi 4.0에서 사용한 컴포넌트를 Delphi 5.0에 사용하는데 에러가 나는데 이것을...
    • 손규만
      2000.02.02 02:55
      유효종님 감사드립니다. 그럼 한가지 더 묻겠습니다. 제가 소스는 가지고 있는데 어떻게 해야 되는지 초...
    • 유 효종
      2000.02.02 03:05
      손규만 wrote: > 유효종님 감사드립니다. > 그럼 한가지 더 묻겠습니다. > 제가 소스는 가지고 있는데 ...
    • 델초
    • 2000.02.02 01:12
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 델초
      2000.02.02 02:18
      첫번째 질문후 여기저기pc에서 테스트를 해 보았는데...참 이상하네요 1. 델파이, MSSQL-client 가 설치...
    • 이영수
      2000.02.07 09:15
      음. 어떻게 하신지는 모르겠지만. 우선 MSSQL Client 용을 Client PC 에 설치하시고. Delphi 의 BDE 에...
    • 델초
      2000.02.09 01:54
      우선 답변에 감사드립니다. 일단은 제가 실수를 한것 같습니다. DATABASE 오브젝트중 ALIAS와 DATAB...