我有如下一个组件,一直使用,但有一个问题却无法解决,请专家和高手帮忙解决!
问题:1、当点击该按钮后,弹出一个对话框,但当关闭这个对话框后,这个图形按钮仍然处于“进入”状态;
2、当点击后一直按住该按钮离开按钮区域后弹起,这时按钮处于“按下”状态,而应该是“弹起”“离开”状态;
问题:1、当点击该按钮后,弹出一个对话框,但当关闭这个对话框后,这个图形按钮仍然处于“进入”状态;
2、当点击后一直按住该按钮离开按钮区域后弹起,这时按钮处于“按下”状态,而应该是“弹起”“离开”状态;
解决方案 »
- 我想画网桥或者其他网络设备,用什么软件好画并且不难看啊?
- 用DELPHI怎么才能把文件刻录到DVD光盘中呢
- 关于Delphi Listbox组件的一个问题,求教(但愿不是Delphi Bug)
- 如何把excel里的数据导入到DBGrid里面。
- 关于spcomm的菜鸟问题,各位大虾赐教!
- 如何在客户机上保存数据
- 如何将一个工具条嵌到IE中。
- 请问怎么按照时间排序!难道用order by 时间字段 这样的语句不行吗?
- 如何运用VBA在word中插入一个图片,要求插在光标所在位置的后面。
- 關於搜索文件的源碼
- Delphi内联汇编如何学习?
- 公司急需Dephi高手,工作地在福州,福州的Dephi高手进来联系下哦
Windows,Messages,SysUtils,Stdctrls,dialogs,Classes, Controls, ExtCtrls,Graphics;type
TImage4Btn = class(TImage)
private
{ Private declarations }// FBt4Handle :Hmodule;
FBt4Flag :String;
FMouseIsDown :Boolean; FOnMouseEnter,FOnMouseLeave:TNotifyEvent;
TempStr:string;
hdll:Hmodule;
procedure SetMouseIsDown(Value:Boolean);
protected
{ Protected declarations }
public
{ Public declarations }
constructor Create(AOwner:TComponent); override;
destructor Destroy; override;
published
{ Published declarations }
// property Bt4Handle :Hmodule read FBt4Handle write FBt4Handle;
property Bt4Flag :String read FBt4Flag write FBt4Flag;
property MouseIsDown:boolean read FMouseIsDown write SetMouseIsDown default false; procedure MouseUp(Button: TMouseButton; Shift: TShiftState;X, Y: Integer); override; property OnMouseLeave :TnotifyEvent Read FOnMouseLeave write FOnMouseLeave;
property OnMouseEnter :TNotifyEvent read FOnMouseEnter write FOnMouseEnter; procedure MouseLeave; virtual;
procedure MouseEnter; virtual; procedure CM_MouseLeave(var msg: TMessage); message CM_MOUSELEAVE;
procedure CM_MouseEnter(var msg: TMessage); message CM_MOUSEENTER;
end;procedure Register;implementationprocedure Register;
begin
RegisterComponents('AAA Components', [TImage4Btn]);
end;
constructor TImage4Btn.Create(AOwner:TComponent);
begin
inherited Create(AOwner);
FMouseIsDown :=False;
end;
destructor TImage4Btn.Destroy;
begin
inherited Destroy;
end;
procedure TImage4Btn.MouseUp(Button: TMouseButton;Shift: TShiftState; X, Y: Integer);
begin
if Not (csDesigning in ComponentState) then
BEGIN
Try
hdll :=LoadLibrary('Bin\C7181.dll');
IF FMouseIsDown then
begin
Try
TempStr :=Bt4Flag+'UpEnter';
Picture.Bitmap.Handle :=LoadBitmap(hdll,pChar(TempStr));
MouseIsDown :=False;
Finally
FreeLibrary(hdll);
end;
end
ELSE
begin
Try
TempStr :=Bt4Flag+'DownEnter';
Picture.Bitmap.Handle :=LoadBitmap(hdll,pChar(TempStr));
MouseIsDown :=True;;
Finally
FreeLibrary(hdll);
end;
end;
FreeLibrary(hdll);
Finally
FreeLibrary(hdll);
END;
END;
end;
Procedure TImage4Btn.MouseEnter;
Begin
if Not (csDesigning in ComponentState) then
begin
Try
hdll :=LoadLibrary('Bin\C7181.dll');
IF FMouseIsDown then
begin
Try
TempStr :=Bt4Flag+'DownEnter';
Picture.Bitmap.Handle :=LoadBitmap(hdll,pChar(TempStr));
Finally
FreeLibrary(hdll);
end;
end
ELSE
begin
Try
TempStr :=Bt4Flag+'UpEnter';
Picture.Bitmap.Handle :=LoadBitmap(hdll,pChar(TempStr));
Finally
FreeLibrary(hdll);
end;
end;
FreeLibrary(hdll);
Finally
FreeLibrary(hdll);
END;
If assigned(FOnMouseEnter) Then
FOnMouseEnter(self);
end;
end;
Procedure TImage4Btn.MouseLeave;
Begin
if not (csDesigning in ComponentState) then
begin
Try
hdll :=LoadLibrary('Bin\C7181.dll');
IF FMouseIsDown then
begin
Try
TempStr :=Bt4Flag+'DownLeave';
Picture.Bitmap.Handle :=LoadBitmap(hdll,pChar(TempStr));
Finally
FreeLibrary(hdll);
end;
end
ELSE
begin
Try
TempStr :=Bt4Flag+'UpLeave';
Picture.Bitmap.Handle :=LoadBitmap(hdll,pChar(TempStr));
Finally
FreeLibrary(hdll);
end;
end;
FreeLibrary(hdll);
Finally
FreeLibrary(hdll);
END;
If assigned(FOnMouseLeave) Then
FOnMouseLeave(self);
end;
end;Procedure TImage4Btn.CM_MouseEnter(var msg:Tmessage);
Begin
Inherited; MouseEnter;
end;
Procedure TImage4Btn.CM_MouseLeave(var msg:Tmessage);
Begin
Inherited; MouseLeave;
end;
procedure TImage4Btn.SetMouseIsDown(Value:Boolean);
begin
FMouseIsDown :=Value;
end;
end.