Q&A

  • 오늘도 버튼에 관한 질문입니다.
먼저 소스입니다.unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Buttons, ExtCtrls, jpeg ;

type
  TCMMouseEnter = packed record
    Msg: Cardinal;
    Unused: Integer;
    Sender: TControl;
    Result: Longint;
  end;
  TCMMouseLeave = TCMMouseEnter;

  TfrmCoolMain = class(TForm)
    pnlCoolMain: TPanel;
    SpeedButton1: TSpeedButton;
    Image1: TImage;

    procedure CMMouseEnter(var msg: TCMMouseEnter); message CM_MOUSEENTER;
    procedure CMMouseLeave(var msg: TCMMouseLeave); message CM_MOUSELEAVE;

  private

  public
    { Public declarations }
  end;

var
  frmCoolMain: TfrmCoolMain;

implementation

{$R *.dfm}

procedure TfrmCoolMain.CMMouseEnter(var msg: TCMMouseEnter);
begin
if Assigned(Msg.Sender) then
begin
   if Msg.Sender.Name = 'SpeedButton1' then
   begin
     SpeedButton1.Glyph.LoadFromFile('c:icon_01_02.bmp');
   end;
end;
end;

procedure TfrmCoolMain.CMMouseLeave(var msg: TCMMouseEnter);
begin
if Assigned(Msg.Sender) then
begin
   if Msg.Sender.Name = 'SpeedButton1' then
   begin
     SpeedButton1.Glyph.LoadFromFile('c:icon_01_01.bmp');
   end;
end;
end;

end.


마우스가 버튼 위에 올라가면 스피드 버튼의 Glyph속성을 바꿔주는 소스입니다.

그런데 panel만 넣으면 작동을 안합니다.

panel없이 form위에 바로 button을 올려 놓을 경우 Msg.Sender가 butto이 되면서 잘 작동을 합니다.

하지만 form위에 panel을 올리고 그 위에 button을 올리면 버튼위에 마우스를 올려 놓아도

Msg.Sender가 button이 되는게 아니라 panel로 인식이 되네요.

뭐가 잘못된건지 모르겠습니다. T_T 아시는 분은 가르쳐 주세요.

이 방법이 아니라 다른 방법이라도 좋습니다.

panel위에 올려진 버튼위에 마우스가 올라가면 버튼의 이미지가 바뀌게 하는 방법을 알려주세요.

감사합니다.
1  COMMENTS
  • Profile
    그냥 2003.04.09 07:12
    팬낼이 폼의 메시지를 처리하게 맹글면 됩니다.

    전역변수
    var
      Wnd : TWndMethod;

    procedure TForm1.WndProc(var Msg: TMessage);
    begin
       if Msg.Msg = CM_MOUSEENTER then
       begin
           ShowMessage('a');
       end;

       Wnd(Msg);
    end;

    procedure TForm1.FormCreate(Sender: TObject);
    begin
       Wnd := Panel1.WindowProc;
       Panel1.WindowProc:=WndProc;
    end;
    • 장경석
    • 2003.04.09 10:20
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 장경석
      2003.04.09 11:44
      ...
    • 그냥
      2003.04.09 11:18
    • 김영대
      2003.04.09 09:00
      // 안녕하세요  김영대(http://www.howto.pe.kr) 입니다   // 아래 예제는 선택된 컬...
    • 초보델
    • 2003.04.09 07:06
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 김영대
      2003.04.09 09:05
      // 안녕하세요  김영대(http://www.howto.pe.kr) 입니다   // 질문을 잘 모르겠지만 ...
    • 공세영
    • 2003.04.09 07:02
    • 4 COMMENTS
    • /
    • 0 LIKES
    • 그냥
      2003.04.09 07:31
      세상에... 이렇게 막무관에 올리면 어쩝니까..-- 배움에 의지가 없어 보이는..--; 요즘 비베 컨버팅 ...
    • 김병곤
      2003.04.09 08:44
    • 공세영
      2003.04.09 07:57
      잘하시는분들에게야 당연히 쉬운건데 그럼 쉬운거라고 쓰지 뭐라씁니까 배운지 한달도 안되서 다 생소한...
    • 그냥
      2003.04.09 08:28
      문법도 아니고 간단한 메시지 띄우는건데 지금 님께서 올리신거는 책한번 들쳐보면 나오는 구문을 찾아...
    • 고가람
    • 2003.04.09 05:43
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 그냥
      2003.04.09 07:12
      팬낼이 폼의 메시지를 처리하게 맹글면 됩니다. 전역변수 var   Wnd : TWndMethod; proc...
    • 이정택
    • 2003.04.09 04:01
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2003.04.09 04:41
      안녕하세요. 최용일입니다. 폼의 OnCreate이벤트에서 크기를 재입력하시던가, TFlatEdit컨트롤을 서브...
    • 이원상
    • 2003.04.09 03:40
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 거리
      2003.04.09 20:45
      안녕하세요..거리입니다. 2칼라라면 (검정,흰색)...즉, 그레이 스케일이 맞죠? bitmap을 그레이스케...
    • KDDG_ZZOM
      2003.04.09 04:03
      이런식으로 해보세요... procedure TForm1.Button1Click(Sender: TObject); var   BMP ...
    • 델피언
      2003.04.09 02:33
      델파이 자체에서는 그림파일의 색상을 변경하는 기능이 없습니다. 델파이 관련 이미지 컴포넌트중에 그...
    • 그냥
    • 2003.04.09 02:05
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 박상윤
      2003.04.10 00:18
      음 멀티미어계층은 1.vfw(Video for Window) 2.ACM(audio Compresstion Manger) 3.VCM(Video &nbs...
    • 황영신
    • 2003.04.09 00:48
    • 4 COMMENTS
    • /
    • 0 LIKES
    • 타락천사
      2003.04.09 21:30
      안녕하세여.. 타락임다.. 음, 그렇게 해도 되겠지만, 많은 양의 데이터를 메세지로 보내려면, WM_COPYDA...
    • 혜월
      2003.04.09 01:25
      Sendmessage로 던져야 하는거 아닌가요 ? PostMessage는 string형을 못 던지는걸로 알고 있는데...
    • 장용준
      2003.04.09 02:40
      PostMessage 도 string 넘어 가는데여 ^^; 주의할 점은 메시지가 간혹가다  공중분해 된다는......
    • 혜월
      2003.04.09 18:55
      와~ 정말 되네요. 여기껏 PostMessage는 string을 못 넘기는 줄 알았는데. 좋은거 배웠습니다. 감사. ^^...
    • 초보델
    • 2003.04.09 00:24
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 이대성
    • 2003.04.09 00:19
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2003.04.09 01:46
      안녕하세요. 최용일입니다. 델파이의 Single형과 같네요... 아래와 같이 변형하세요... procedure TF...
    • vngkgkgk
    • 2003.04.08 23:36
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 그냥
      2003.04.08 23:46
      글자색을 바꾸려면요.. Font.Color 에 컬러 값을 넣어주면 됩니다. Ex.  Form1.Font.Color...
    • vngkgkgk
      2003.04.08 23:57
      ////////////////////////////////////////////////////////////// 폼을 클릭하면요... 숫...
    • 그냥
      2003.04.09 01:43
      질문이 좀 명료하지 않군요.. 저는 님이 컴포넌트를 이용하시는줄 알았습니다. 아래에 컬러변경하는 부...
    • 김명석
    • 2003.04.08 23:03
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 오병주
      2003.04.08 23:07
      델파이를 설치하셨다면 데모 프로그램이 있습니다. 자세하게 잘나와있습니다. 왠만한건 다 해결하실...
    • 정종필
    • 2003.04.08 21:34
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 아폴론
    • 2003.04.08 21:19
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 아폴론
      2003.04.09 00:46
      이럴때 에러가 납니다. Tdate := formatdatetime('yyyy-mm-dd', date); //시스템의 날짜를 가져올때 ...
    • 최남선
      2003.04.09 00:37
      jpg로 바꿔서 저장을 하실때 TJpegImage를 사용하셨으면 CompressionQuality라는 속성을 바꾸는 방법이 있...
    • 박경진
    • 2003.04.08 21:12
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이병훈
      2003.04.09 10:12
      안녕하세요. 훔. 어떤 결과를 원하시는지 잘 몰라서 그냥 나름대로 해 보았습니다. ^^;; create ta...
    • KDDG_Hoya
      2003.04.08 21:01
      BCP.exe 를 활용하세요.
    • 델초보여요
      2003.04.08 21:32
      BCP.exe 가 어떤건가여... 제가 워낙 초보라서여... 알려주세요. 어떻게 사용하면 되는지. 아님 어디를 ...
    • KDDG_Hoya
      2003.04.09 02:36
      SQL 도움말에서 참고하시면 됩니다. DTS, BCP를 응용하여 보세요.