09e406a927
Well, actually it's just a workaround to intercept keystrokes... It still can't even catch arrow-keys, looks like I missed something... :-\
63 lines
1.3 KiB
ObjectPascal
63 lines
1.3 KiB
ObjectPascal
unit CustomDrawControl;
|
|
|
|
interface
|
|
|
|
uses
|
|
Classes, Controls, Messages, Windows, Graphics;
|
|
|
|
type
|
|
TCustomDrawControl = class(TCustomControl)
|
|
private
|
|
FOnPaint: TNotifyEvent;
|
|
|
|
procedure WMEraseBkgnd(var Message: TWMEraseBkgnd); message WM_ERASEBKGND;
|
|
// procedure WMSetFocus(var Message: TWMSetFocus); message WM_SETFOCUS;
|
|
// procedure WMKillFocus(var Message: TWMKillFocus); message WM_KILLFOCUS;
|
|
protected
|
|
|
|
public
|
|
procedure Paint; override;
|
|
|
|
property OnPaint: TNotifyEvent read FOnPaint write FOnPaint;
|
|
property Canvas;
|
|
|
|
property OnDblClick;
|
|
property OnKeyDown;
|
|
// property OnKeyPress;
|
|
// property OnKeyUp;
|
|
property OnMouseDown;
|
|
property OnMouseMove;
|
|
property OnMouseUp;
|
|
property OnMouseWheel;
|
|
// property OnMouseWheelDown;
|
|
// property OnMouseWheelUp;
|
|
property OnEnter;
|
|
property OnExit;
|
|
end;
|
|
|
|
implementation
|
|
|
|
procedure TCustomDrawControl.WMEraseBkgnd(var Message: TWMEraseBkgnd);
|
|
begin
|
|
Message.Result := 1;
|
|
end;
|
|
|
|
{
|
|
procedure TCustomDrawControl.WMSetFocus(var Message: TWMSetFocus);
|
|
begin
|
|
Invalidate;
|
|
end;
|
|
|
|
procedure TCustomDrawControl.WMKillFocus(var Message: TWMKillFocus);
|
|
begin
|
|
Invalidate;
|
|
end;
|
|
}
|
|
|
|
procedure TCustomDrawControl.Paint;
|
|
begin
|
|
if Assigned(FOnPaint) then FOnPaint(Self);
|
|
end;
|
|
|
|
end.
|