Q&A

  • [컴포넌트]다시 질문하겠습니다.
BitBtn의 속성 중 하나인 Glyph 에 관한 것입니다.



Glyph라는 본 이름을 바꾸어, 즉, 비슷한 이름의 속성을 두개 정하고,

그 둘다 Glyph와 같은 기능을 하도록 하고 싶습니다.



이정욱 님의 답변 정말 감사합니다만, 좀 명확하지가 않은 것 같습니다.

구체적, 혹은 다른 조언 있으신 분은 꼭 답변 해주시기 바랍니다.

2  COMMENTS
  • Profile
    강민주 2000.03.20 20:15
    양은주 wrote:

    > BitBtn의 속성 중 하나인 Glyph 에 관한 것입니다.

    >

    > Glyph라는 본 이름을 바꾸어, 즉, 비슷한 이름의 속성을 두개 정하고,

    > 그 둘다 Glyph와 같은 기능을 하도록 하고 싶습니다.

    >

    > 이정욱 님의 답변 정말 감사합니다만, 좀 명확하지가 않은 것 같습니다.

    > 구체적, 혹은 다른 조언 있으신 분은 꼭 답변 해주시기 바랍니다.



    FGlyph1: TBitmap;

    FGlyph2: TBitmap;

    만든 컴포넌트에 넣구요..

    생성할때 만들어서.. 값을넣어서 출력하고.. 해제할때 같이해제하면될것같은데

    그니깐..

    constructor TTest.Create(AOwner: TComponent);

    begin

    inherited Create(AOwner);

    FGlyph1 := TBitmap.Create;

    FGlyph2 := TBitmap.Create;

    end;



    destructor TTest.Destory;

    begin

    FGlyph1.Free;

    FGlyph2.Free;

    end;



    procedure SetGlyph1(Value: TBitmap);

    begin

    FGlyph1.Assign(Value);

    end;



    procedure SetGlyph2(Value: TBitmap);

    begin

    FGlyph2.Assign(Value);

    end;



    이런식으로.. 하면 될것 같은데.. 맞는 답변인지는

    모르겠네요.. 참고하세요.

    그럼..이만.

  • Profile
    최용일 2000.03.20 20:20
    원래의 속성이름을 바꾸는 것은 불가능합니다. 다른용도로 쓰거나 새로운 프로퍼티를

    선언하는 것은 가능하지만...



    지금까지의 질문에 비추어 보면 마우스가 버튼위에 오면 Glyph1이란 속성의 비트맵이

    그려지고 마우스가 버튼에서 벗어나변 Glyph2란 비트맵이 그려지는 것을 구현하려고

    하는것 같군요...



    마우스가 컨트롤위에 오면 CM_MOUSEENTER이란 메세지가 발생합니다, 또 마우스가

    컨트롤에서 벗어나면 CM_MOUSELEAVE란 메세지가 발생하죠. 그러니까 이 메세지에

    대한 메세지 이벤트 핸들러를 작성하시면 되는 것 입니다.



    코드는 아주 쉽게 되어있으니 설명은 생략...



    unit MouseBtn;



    interface



    uses

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

    StdCtrls, Buttons;



    type

    TMyBitBtn = class(TBitBtn)

    private

    FGlyph1: TBitmap;

    FGlyph2: TBitmap;

    procedure SetGlyph1(const Value: TBitmap);

    procedure SetGlyph2(const Value: TBitmap);

    protected

    // 마우스가 컨트롤내로 들어왔을때를 처리하는 메세지핸들러

    procedure CMMouseEnter(var Message: TMessage); Message CM_MOUSEENTER;

    // 마우스가 컨트롤밖으로 나갔을때를 처리하는 메세지핸들러

    procedure CMMouseLeave(var Message: TMessage); Message CM_MOUSELEAVE;

    public

    constructor Create(AOwner: TComponent);

    destructor Destroy; override;

    published

    property Glyph1: TBitmap read FGlyph1 write SetGlyph1;

    property Glyph2: TBitmap read FGlyph2 write SetGlyph2;

    end;



    implementation



    { TMyBitBtn }



    constructor TMyBitBtn.Create(AOwner: TComponent);

    begin

    inherited Create(AOwner);

    FGlyph1 := TBitmap.Create;

    FGlyph2 := TBitmap.Create;

    if Glyph = nil then

    Glyph := TBitmap.Create;

    end;



    destructor TMyBitBtn.Destroy;

    begin

    FGlyph1.Free;

    FGlyph2.Free;

    inherited;

    end;



    procedure TMyBitBtn.CMMouseEnter(var Message: TMessage);

    begin

    Glyph.Assign(Glyph1);

    end;



    procedure TMyBitBtn.CMMouseLeave(var Message: TMessage);

    begin

    Glyph.Assign(Glyph2);

    end;



    procedure TMyBitBtn.SetGlyph1(const Value: TBitmap);

    begin

    FGlyph1.Assign(Value);

    end;



    procedure TMyBitBtn.SetGlyph2(const Value: TBitmap);

    begin

    FGlyph2.Assign(Value);

    end;



    end.



    양은주 wrote:

    > BitBtn의 속성 중 하나인 Glyph 에 관한 것입니다.

    >

    > Glyph라는 본 이름을 바꾸어, 즉, 비슷한 이름의 속성을 두개 정하고,

    > 그 둘다 Glyph와 같은 기능을 하도록 하고 싶습니다.

    >

    > 이정욱 님의 답변 정말 감사합니다만, 좀 명확하지가 않은 것 같습니다.

    > 구체적, 혹은 다른 조언 있으신 분은 꼭 답변 해주시기 바랍니다.