Q&A

  • 이미지를 버튼 처럼...
안녕하세요.. 고수 여러분... ^^



다름이 아니고 이미지에 마우스가 올라가면 그림이 바뀌고 마우스가 그곳을 벗어나면

다시 원래에 이미지가 오는 것을 구현하려고 합니다..



OnMouseMove 로 구현을 했더니 바뀌긴 바뀌는데 원 상태로는 돌아오질 않는군요..



또 밑에 글을 읽어보니 mouseenter 와 mouseleave 같은 것이 있는데 정확히 어떻게 사용하는지를 모르겠어요....



제발 고수여러분의 답변을 학수 고대합니다...



더와 주십시요.... ^^

1  COMMENTS
  • Profile
    장은석 2000.04.09 14:11
    지너 wrote:

    > 안녕하세요.. 고수 여러분... ^^

    >

    > 다름이 아니고 이미지에 마우스가 올라가면 그림이 바뀌고 마우스가 그곳을 벗어나면

    > 다시 원래에 이미지가 오는 것을 구현하려고 합니다..

    >

    > OnMouseMove 로 구현을 했더니 바뀌긴 바뀌는데 원 상태로는 돌아오질 않는군요..

    >

    > 또 밑에 글을 읽어보니 mouseenter 와 mouseleave 같은 것이 있는데 정확히 어떻게 사용하는지를 모르겠어요....

    >

    > 제발 고수여러분의 답변을 학수 고대합니다...

    >

    > 더와 주십시요.... ^^



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



    CM_MouseEnter와 CM_MouseLeave는 Controls.pas 에 정의 되어 있는 컨트롤메시지 입니다.

    Timage 클래스는 TGraphicControl을 상속하고 TGraphicControl 클래스는 TControl을 상속한 거지요...

    이렇게 조상을 거슬러 올라가면 CM_MouseLeave와 같은 메시지가 정의 되어있으니

    이를 써먹자는 취지에서 컴포넌트의 메소드로 추가하여 정의 하는식의 팁이 아래와 같이 올라와 있습니다만...

    요놈의 것이 타이머를 이용하는것 보다 정확하지 못하다는 흉문이 돌기에...

    그 아래에 좋은 방법을 퍼 왔으니 참고 하세요...



    procedure CMMouseEnter(var Message: TMessage); message CM_MouseEnter;

    procedure CMMouseLeave(var Message: TMessage); message CM_MouseLeave;



    procedure TMyComponent.CMMouseEnter(var Message: TMessage);

    begin

    // 컴포넌트 영역에 들어왔을때

    end;



    procedure TMyComponent.CMMouseLeave(var Message: TMessage);

    begin

    // 컴포넌트 영역에서 나갔을때

    end;



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



    델코의 민성기님이 올리신 메시지 후킹 강좌중 일부를 빼내서 아주 쬐끔 수정해서 올려 드립니다. 하하



    unit Unit1;



    interface



    uses

    Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

    StdCtrls, ExtCtrls;



    type

    TForm1 = class(TForm)

    Image1: TImage;

    procedure FormCreate(Sender: TObject);

    procedure FormDestroy(Sender: TObject);

    private

    ImageOrgWndProc : TWndMethod;

    procedure ImageWndProc( var Msg : TMessage );

    public

    { Public declarations }

    end;



    var

    Form1: TForm1;



    implementation



    {$R *.DFM}



    procedure TForm1.ImageWndProc( var Msg : TMessage );

    begin

    case Msg.Msg of

    CM_MOUSELEAVE:

    begin

    image1.Picture.LoadFromFile('C:아이콘1.ICO');

    end;

    CM_MOUSEENTER:

    begin

    image1.Picture.LoadFromFile('C:아이콘2.ICO');

    end;

    end;

    ImageOrgWndProc(Msg);

    end;



    procedure TForm1.FormCreate(Sender: TObject);

    begin

    ImageOrgWndProc := Image1.WindowProc;

    Image1.WindowProc := ImageWndProc;

    end;



    procedure TForm1.FormDestroy(Sender: TObject);

    begin

    Image1.WindowProc := ImageOrgWndProc;

    end;



    end.



    그럼...



    • 정윤호
      2000.04.11 17:46
      정윤호 wrote: > 안녕하세요.. > > 각설하구.. 질문드리겠습니다. > > oracle 7.3에서는 TTable com...
    • 류종택
      2000.04.10 22:08
      혹시 클라이언트가 7.3은 아니신지요.. 저도 비슷한 경험이 있었는데.. 바이너리 데이타의 RawID를 인식...
    • mr.Q
    • 2000.04.10 14:10
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 하얀까마귀
      2000.04.10 18:50
      안녕하세요 하얀까마구 입니다.. 음... 결과에서 번호가 나오는게 이상하네요.. 지금 사용하신 쿼리...
    • 최용일
      2000.04.10 19:05
      안녕하세요. 최용일입니다. 무척 오래간만에 뵙내요. 그동안 많이 바쁘셨나봐요. 앞으로도 계속해서 ...
    • 하얀까마귀
      2000.04.10 19:13
      안녕하세요 하얀까마귀 입니다.. 저에 몸이 안좋은 바람에 프로젝트가 늦어져서... 그거 일정 따라잡는...
    • 최은정
    • 2000.04.10 09:03
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 윤진석
      2000.04.10 11:25
      최은정 wrote: > Query를 한다음 그 결과값에 대한것을 순서대로 콤보박스로 add시키는 방법... > 그리고...
    • 우진
    • 2000.04.10 09:02
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 안치봉
      2000.04.10 23:14
      굳이 소스만 필요하시다면... TClientSocket 을 가지고 간단히 구현할수도 있습니다. 만약 리눅스서버...
    • mr.Q
    • 2000.04.10 07:40
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 하얀까마귀
      2000.04.10 18:56
      안녕하세요 하얀까마귀 입니다.. 음.. 쿼리에서 order by를 주셧다면 순차정열을 할겁니다... 다시 ...
    • bhkmm
    • 2000.04.10 07:23
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이상탁
      2000.04.10 18:52
      bhkmm wrote: > code_max:= Query1.fieldbyname('code_num').asstring; > code_max :=inttostr(s...
    • 장은석
      2000.04.10 00:25
      까마귀 wrote: > 안녕하세요. > 까마귀입니다. > 일요일 오후...날도 좋은데 여기서 활동하시느라 욕보...
    • 하얀까마귀
      2000.04.10 19:10
      안녕하세요 하얀까마귀 입니다.. 장은석님의 말씀처럼 char와 varchar의 차이는 이것이 가변이냐 고정이...
    • 까마귀
      2000.04.11 00:38
      장은석님 하얀까마귀님 두분모두 감사드립니다. 한가지만 더 질문을 할께요. VarChar로 잡았을 경우에 데...
    • 하얀까마귀
      2000.04.11 07:03
      안녕하세요 하얀까마귀 입니다.. 지금 질문하신 내용은 음.. 질문은 아주 간단한것 같은데... 답변은 그...
    • 윤진화
      2000.04.11 05:40
      정확한 예제인지 몰겠군요! . . . . implementation uses ComObj, OLECtrls; {$R *.DFM} ...
    • 차카게살자
      2000.04.10 18:38
      mad wrote: > MDI를 사용하고 있습니다. 메뉴에서 1,2,3은 같은 폼에 위치한 페이지 컨트롤의 > Sheet1,2...
    • 지너
    • 2000.04.09 09:52
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 장은석
      2000.04.09 14:11
      지너 wrote: > 안녕하세요.. 고수 여러분... ^^ > > 다름이 아니고 이미지에 마우스가 올라가면 그림이...
    • 이규승
    • 2000.04.09 03:41
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이선규
      2000.04.11 01:55
      이규승 wrote: > StringGrid를 여러개 사용한 폼에서 > 출력을 하고 싶습니다. > 제가 원하는 형태는 아...
    • 강두헌
    • 2000.04.09 03:41
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 이상탁
      2000.04.10 18:58
      강두헌 wrote: > Delphi와는 직접적인 관련이 없지만, Programming을 하다보니 Font를 직접 만들어야 할 ...
    • 강두헌
      2000.04.16 07:32
      늦었네요... 제가 게을러서.. 한델에 질문드렸던 강두헌입니다.(True Type Font관련) 많은 도움이 되...
    • 최은정
    • 2000.04.09 03:06
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 장은석
      2000.04.09 10:04
      최은정 wrote: > 스트링 그리드의 값을 한번에 콤보박스로 옮길려고 아래처럼 작성했지만 잘 안되네요.. ...
    • 최용일
      2000.04.09 05:27
      안녕하세요. 최용일입니다. 예전에 제가 검색해 보라고 했었는데 못 찾으신 것 같군요. 사실 똑같은 코...
    • 초이
      2000.04.10 19:50
      김종춘 wrote: > 델파이에서 GPIB를 이용하여 계측기의 값을 읽어오려 합니다. > 염치 없지만 혹시 GPIB...