//只有重载Button;
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;type
TNewButton = class(TButton)
procedure WMHotKey(var Mse: TMessage); message WM_HOTKEY;
private
FOnRegisterError: TNotifyEvent;
FIsRegister: Boolean;
procedure SetIsRegister(const Value: Boolean);
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
property OnRegisterError: TNotifyEvent read FOnRegisterError write FOnRegisterError;
property IsRegister: Boolean read FIsRegister write SetIsRegister;
end; TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
private
{ Private declarations }
FNewButton: TNewButton;
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.DFM}{ TNewButton }constructor TNewButton.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
Parent := TWinControl(AOwner); //有父窗体才能Register
IsRegister := RegisterHotKey(Handle, 0, MOD_ALT or MOD_CONTROL, 65);
end;destructor TNewButton.Destroy;
begin
if FIsRegister then UnregisterHotKey(Handle, 0);
inherited;
end;procedure TNewButton.SetIsRegister(const Value: Boolean);
begin
FIsRegister := Value;
if (not FIsRegister) and Assigned(FOnRegisterError) then
FOnRegisterError(Self);
end;procedure TNewButton.WMHotKey(var Mse: TMessage);
var
AType :TMsgDlgType;
AButtons: TMsgDlgButtons;
WResult: Word;
begin
Self.Visible := True;
AType := mtConfirmation;
AButtons := mbYesNoCancel;
WResult := MessageDlg('运行结束吗?', AType, Abuttons, 0);
if WResult = mrYes then TForm(Parent).Close;
end;procedure TForm1.FormCreate(Sender: TObject);
begin
FNewButton := TNewButton.Create(Self);
FNewButton.Visible := True;
FNewButton.Left := 10;
FNewButton.Top := 10;
end;procedure TForm1.FormDestroy(Sender: TObject);
begin
FNewButton.Free;
end;end.
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;type
TNewButton = class(TButton)
procedure WMHotKey(var Mse: TMessage); message WM_HOTKEY;
private
FOnRegisterError: TNotifyEvent;
FIsRegister: Boolean;
procedure SetIsRegister(const Value: Boolean);
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
property OnRegisterError: TNotifyEvent read FOnRegisterError write FOnRegisterError;
property IsRegister: Boolean read FIsRegister write SetIsRegister;
end; TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
private
{ Private declarations }
FNewButton: TNewButton;
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.DFM}{ TNewButton }constructor TNewButton.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
Parent := TWinControl(AOwner); //有父窗体才能Register
IsRegister := RegisterHotKey(Handle, 0, MOD_ALT or MOD_CONTROL, 65);
end;destructor TNewButton.Destroy;
begin
if FIsRegister then UnregisterHotKey(Handle, 0);
inherited;
end;procedure TNewButton.SetIsRegister(const Value: Boolean);
begin
FIsRegister := Value;
if (not FIsRegister) and Assigned(FOnRegisterError) then
FOnRegisterError(Self);
end;procedure TNewButton.WMHotKey(var Mse: TMessage);
var
AType :TMsgDlgType;
AButtons: TMsgDlgButtons;
WResult: Word;
begin
Self.Visible := True;
AType := mtConfirmation;
AButtons := mbYesNoCancel;
WResult := MessageDlg('运行结束吗?', AType, Abuttons, 0);
if WResult = mrYes then TForm(Parent).Close;
end;procedure TForm1.FormCreate(Sender: TObject);
begin
FNewButton := TNewButton.Create(Self);
FNewButton.Visible := True;
FNewButton.Left := 10;
FNewButton.Top := 10;
end;procedure TForm1.FormDestroy(Sender: TObject);
begin
FNewButton.Free;
end;end.
解决方案 »
- 学完~object pascal了!!很迷茫?我接下来该学些什么?
- 在调用dll中的窗体时,如何将窗体与主程序融合?
- Delphi中文技术论坛擂台赛第五期新鲜出炉!
- 请各位大侠帮一下忙,急急急....
- 问一个小问题 在线等
- 谁能给一个例子:就如SQL server服务管理器一样的NT服务程序。
- 在线急问: 怎样保存一个正在运行程序的内存数据?
- 把cxGrid里面的一个字段的Properties属性设为ComboBox,如何在代码里动态往这个ComboBox里填加值
- intraweb头痛的问题!!!!!!!!
- 请高手帮忙,dbgrid问题!!!!
- 我即将参加网络生存大赛,想请各位捧场.
- 我用TADOQuery访问数据库得到的值TField怎么转为整数呢,在表中该字段为字符形,我用strtoint为什么不行!谢谢!
把它注册到Delphi的控件板上
//可以参照我的...
unit DragFile;interfaceuses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ShellApi, ExtCtrls;type
TDragFile = class(TWinControl)
private
FFileNames: TStringList;
FOnDragFile: TNotifyEvent;
FActive: Boolean;
FImage: TImage;
{ Private declarations }
procedure WMDROPFILES(var Msg: TMessage); message WM_DROPFILES;
procedure SetActive(const Value: Boolean);
protected
{ Protected declarations }
public
{ Public declarations }
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
property FileNames: TStringList read FFileNames;
property Image: TImage read FImage write FImage;
published
{ Published declarations }
property Active: Boolean read FActive write SetActive default False;
property Color default clBtnFace;
property ParentColor default False;
property OnDragFile: TNotifyEvent read FOnDragFile write FOnDragFile;
end;procedure Register;implementationprocedure Register;
begin
RegisterComponents('Samples', [TDragFile]);
end;{ TDragFile }constructor TDragFile.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
Width := 100;
Height := 100;
FFileNames := TStringList.Create;
FImage := TImage.Create(Self);
FImage.Parent := Self;
FImage.Align := alClient;
end;destructor TDragFile.Destroy;
begin
FFileNames.Free;
FImage.Free;
inherited;
end;procedure TDragFile.SetActive(const Value: Boolean);
begin
if FActive = Value then Exit;
FActive := Value;
DragAcceptFiles(Handle, FActive);
end;procedure TDragFile.WMDROPFILES(var Msg: TMessage);
var
hDrop: THandle;
fName: array[0 ..MAX_PATH] of Char;
NumberOfFiles: Integer;
fCounter: Integer;
begin
hDrop := Msg.wParam;
NumberOfFiles := DragQueryFile(hDrop, $FFFFFFFF, fName, MAX_PATH);
FFileNames.Clear;
for fCounter := 0 to Pred(NumberOfFiles) do
begin
DragQueryFile(hDrop, fCounter, fName, MAX_PATH);
FFileNames.Add(fName);
end;
DragFinish(hDrop);
if Assigned(FOnDragFile) then FOnDragFile(Self);
end;end.