自己写了一个控件,继承于TCustomPanel作为容器,在该控件上用一个TImage显示图片信息。我给该控件增加了一个双击事件,但发现在双击到TImage位置时不能触发事件(双击其它地方可以触发),不知怎么解决?代码如下:
TSmallImg = class(TCustomPanel)
img: TImage;
private
FDblClick:TNotifyEvent;
procedure CDblClick(var Message: TMessage); message WM_LBUTTONDBLCLK;
public
constructor Create;
destructor Destroy; override ;
property OnDblClick:TNotifyEvent read FDblClick write FDblClick;
end; constructor TSmallImg.Create;
begin
inherited Create(nil);
Width:=105;
Height:=129; img:=TImage.Create(nil);
img.Parent:=self;
img.Top:=0;
img.left:=0;
img.Show;
end; Destructor TSmallImg.Destroy;
begin
if img<>nil then img.Free;
inherited Destroy ;
end; procedure TSmallImg.CDblClick(var Message: TMessage);
begin
if assigned(FDblClick) then FDblClick(Self);
end;分不够可以加!
TSmallImg = class(TCustomPanel)
img: TImage;
private
FDblClick:TNotifyEvent;
procedure CDblClick(var Message: TMessage); message WM_LBUTTONDBLCLK;
public
constructor Create;
destructor Destroy; override ;
property OnDblClick:TNotifyEvent read FDblClick write FDblClick;
end; constructor TSmallImg.Create;
begin
inherited Create(nil);
Width:=105;
Height:=129; img:=TImage.Create(nil);
img.Parent:=self;
img.Top:=0;
img.left:=0;
img.Show;
end; Destructor TSmallImg.Destroy;
begin
if img<>nil then img.Free;
inherited Destroy ;
end; procedure TSmallImg.CDblClick(var Message: TMessage);
begin
if assigned(FDblClick) then FDblClick(Self);
end;分不够可以加!
TSmallImg = class(TCustomPanel)
img: TImage;
private
FDblClick:TNotifyEvent;
procedure CDblClick(var Message: TMessage); message WM_LBUTTONDBLCLK;
procedure ImgDblClick(Sender: TObject);
public
constructor Create;
destructor Destroy; override ;
property OnDblClick:TNotifyEvent read FDblClick write FDblClick;
end;
begin
inherited Create(nil);
Width:=105;
Height:=129; img:=TImage.Create(nil);
img.OnDblClick := ImgDblClick;
img.Parent:=self;
img.Top:=0;
img.left:=0;
img.Show;
end;procedure TSmallImg.ImgDblClick(Sender: TObject);
begin
if assigned(FDblClick) then FDblClick(Self);
end;
PostMessage(SmallIm1.handle,WM_LBUTTONDBLCLK,0,0);
TSmallImg = class(TCustomPanel)
private
img: TImage;
FDblClick:TNotifyEvent;
FRBUTTONUP:TNotifyEvent;
procedure CDblClick(var Message: TMessage); message WM_LBUTTONDBLCLK;
procedure CRBUTTONUP(var Message: TMessage); message WM_RBUTTONUP;
procedure ImgDblClick(Sender: TObject);
public
constructor Create;
destructor Destroy; override ;
property OnDblClick:TNotifyEvent read FDblClick write FDblClick;
property OnRBUTTONUP:TNotifyEvent read FRBUTTONUP write FRBUTTONUP;
end;
constructor TSmallImg.Create;
begin
inherited Create(nil);
Width:=105;
Height:=129; img:=TImage.Create(nil);
img.Parent:=self;
img.Top:=0;
img.left:=0;
img.OnDblClick:=ImgDblClick;
img.Show;
end;destructor TSmallImg.Destroy;
begin
img.Free;
inherited Destroy ;
end;procedure TSmallImg.CDblClick(var Message: TMessage);
begin
if assigned(FDblClick) then FDblClick(Self);
end;procedure TSmallImg.ImgDblClick(Sender: TObject);
begin
if assigned(FDblClick) then FDblClick(Self);
end;procedure TSmallImg.CRBUTTONUP(var Message: TMessage);
begin
if assigned(FRBUTTONUP) then FRBUTTONUP(Self);
end;
constructor TSmallImg.Create;
begin
...
img.OnMouseUp:=ImgRBUTTONUP;
...
end;procedure TSmallImg.ImgRBUTTONUP(Sender: TObject; Button: TMouseButton;Shift: TShiftState; X, Y: Integer);
begin
if Button=mbRight then
begin
if assigned(FRBUTTONUP) then FRBUTTONUP(Self);
//这里我想用发消息的办法也可以实现了
end;
end;