안녕하세요. 홍문택이라고 합니다.
제가 TMenuItem을 선택했을때(OnClick 이벤트시) 마우스의 왼쪽 버튼,
오른쪽 버튼에 따라 다른 일을 수행하려고 하는데 어느 버튼으로
TMenuItem을 선택했는지 알수 있는 방법을 모르겠습니다.
다룬 Component들운 OnMouseDown, OnMouseUp 이벤트 함수의 파라미터로
Button의 종류가 넘어와서 그 종류를 알 수 있는데, TMenuItem에는 위와
같은 이벤트 종류가 없고 OnClick 이벤트가 있는데, OnClick 함수는 Button
정보를 파라미터로 넘기지 않아서 Button 종류를 잘 모르겠습니다.
혹시 알고 계신분 계시면 답변 바랍니다.
제가 예전에 함 썼던 방법인데요....
TMainMenu에서 상속 받아서 새로운 메뉴컴포넌트를 만드세요...
물론 TMenuItem에서 상속 받아서 새로운 메뉴아이템 클래스를 만들고
그담에 메인메뉴에서 상속 받아 만든 새로운 메뉴컴포넌트의 아이템 프로퍼티의
타입을 새로 만든 메뉴아이템 클래스 타입으로 해주면 되겠져.....
그 담에 새로 만든 컴포넌트를 델파이에 설치하여 그 메뉴를 사용 하면 되져....^^
이벤트 추가 해주는것은 매우 쉬워여......간단히 예제를 아래 첨부해 드리져...
구럼 즐코 하세요...
예제)
type
TBadaMenuItem = class(TMenuItem)
private
{ Private declarations }
FOnMouseDown: TNotifyEvent;
FOnMouseUp: TNotifyEvent;
protected
{ Protected declarations }
public
{ Public declarations }
procedure MouseDown(var Msg: TMessage); message CM_MOUSEDOWN;
procedure MouseUp(var Msg: TMessage); message CM_MOUSEUP;
published
{ Published declarations }
property OnMouseDown: TNotifyEvent read FOnMouseDown Write FOnMouseDown;
property OnMouseUp: TNotifyEvent read FOnMouseUp Write FOnMouseUp;
end;
procedure Register;
implementation
procedure TKwonImage.MouseDown(var Msg: TMessage);
begin
if Assigned(FOnMouseDown) then FOnMouseDown(Self);
end;
procedure TKwonImage.MouseUp(var Msg: TMessage);
begin
if Assigned(FOnMouseUp) then FOnMouseUp(Self);
end;
procedure Register;
begin
RegisterComponents('Samples', [TBadaMenuItem]);
end;
홍문택 wrote:
> 안녕하세요. 홍문택이라고 합니다.
>
> 제가 TMenuItem을 선택했을때(OnClick 이벤트시) 마우스의 왼쪽 버튼,
> 오른쪽 버튼에 따라 다른 일을 수행하려고 하는데 어느 버튼으로
> TMenuItem을 선택했는지 알수 있는 방법을 모르겠습니다.
>
> 다룬 Component들운 OnMouseDown, OnMouseUp 이벤트 함수의 파라미터로
> Button의 종류가 넘어와서 그 종류를 알 수 있는데, TMenuItem에는 위와
> 같은 이벤트 종류가 없고 OnClick 이벤트가 있는데, OnClick 함수는 Button
> 정보를 파라미터로 넘기지 않아서 Button 종류를 잘 모르겠습니다.
>
> 혹시 알고 계신분 계시면 답변 바랍니다.