Componentes.Terceros.jvcl/official/3.32/run/JvExExtCtrls.pas

7093 lines
212 KiB
ObjectPascal

{-----------------------------------------------------------------------------
The contents of this file are subject to the Mozilla Public License
Version 1.1 (the "License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.mozilla.org/MPL/MPL-1.1.html
Software distributed under the License is distributed on an "AS IS" basis,
WITHOUT WARRANTY OF ANY KIND, either expressed or implied. See the License for
the specific language governing rights and limitations under the License.
The Original Code is: JvExExtCtrls.pas, released on 2004-01-04
The Initial Developer of the Original Code is Andreas Hausladen [Andreas dott Hausladen att gmx dott de]
Portions created by Andreas Hausladen are Copyright (C) 2004 Andreas Hausladen.
All Rights Reserved.
Contributor(s): -
You may retrieve the latest version of this file at the Project JEDI's JVCL home page,
located at http://jvcl.sourceforge.net
Known Issues:
-----------------------------------------------------------------------------}
// $Id: JvExExtCtrls.pas 10883 2006-08-13 13:20:07Z ahuser $
unit JvExExtCtrls;
{$I jvcl.inc}
{MACROINCLUDE JvExControls.macros}
{*****************************************************************************
* WARNING: Do not edit this file.
* This file is autogenerated from the source in devtools/JvExVCL/src.
* If you do it despite this warning your changes will be discarded by the next
* update of this file. Do your changes in the template files.
****************************************************************************}
{$D-} // do not step into this unit
interface
uses
Windows, Messages,
{$IFDEF HAS_UNIT_TYPES}
Types,
{$ENDIF HAS_UNIT_TYPES}
SysUtils, Classes, Graphics, Controls, Forms, ExtCtrls,
{$IFDEF UNITVERSIONING}
JclUnitVersioning,
{$ENDIF UNITVERSIONING}
JvTypes, JvThemes, JVCLVer, JvExControls;
type
TJvExShape = class(TShape, IJvExControl)
private
FAboutJVCL: TJVCLAboutInfo;
FHintColor: TColor;
FMouseOver: Boolean;
FHintWindowClass: THintWindowClass;
{$IFDEF VCL}
FOnMouseEnter: TNotifyEvent;
FOnMouseLeave: TNotifyEvent;
{$ENDIF VCL}
FOnParentColorChanged: TNotifyEvent;
function BaseWndProc(Msg: Integer; WParam: Integer = 0; LParam: Longint = 0): Integer; overload;
function BaseWndProc(Msg: Integer; WParam: Integer; LParam: TControl): Integer; overload;
function BaseWndProcEx(Msg: Integer; WParam: Integer; var LParam): Integer;
protected
procedure WndProc(var Msg: TMessage); override;
{$IFNDEF CLR}
procedure FocusChanged(AControl: TWinControl); dynamic;
{$ENDIF !CLR}
procedure VisibleChanged; reintroduce; dynamic;
procedure EnabledChanged; reintroduce; dynamic;
procedure TextChanged; reintroduce; virtual;
procedure ColorChanged; reintroduce; dynamic;
procedure FontChanged; reintroduce; dynamic;
procedure ParentFontChanged; reintroduce; dynamic;
procedure ParentColorChanged; reintroduce; dynamic;
procedure ParentShowHintChanged; reintroduce; dynamic;
function WantKey(Key: Integer; Shift: TShiftState; const KeyText: WideString): Boolean; reintroduce; virtual;
function HintShow(var HintInfo: THintInfo): Boolean; reintroduce; dynamic;
function HitTest(X, Y: Integer): Boolean; reintroduce; virtual;
procedure MouseEnter(AControl: TControl); reintroduce; dynamic;
procedure MouseLeave(AControl: TControl); reintroduce; dynamic;
{$IFDEF COMPILER5}
{$IFNDEF HASAUTOSIZE}
procedure CMSetAutoSize(var Msg: TMessage); message CM_SETAUTOSIZE;
procedure SetAutoSize(Value: Boolean); virtual;
{$ENDIF !HASAUTOSIZE}
{$ENDIF COMPILER5}
property MouseOver: Boolean read FMouseOver write FMouseOver;
property HintColor: TColor read FHintColor write FHintColor default clDefault;
{$IFDEF VCL}
property OnMouseEnter: TNotifyEvent read FOnMouseEnter write FOnMouseEnter;
property OnMouseLeave: TNotifyEvent read FOnMouseLeave write FOnMouseLeave;
{$ENDIF VCL}
property OnParentColorChange: TNotifyEvent read FOnParentColorChanged write FOnParentColorChanged;
public
constructor Create(AOwner: TComponent); override;
property HintWindowClass: THintWindowClass read FHintWindowClass write FHintWindowClass;
published
property AboutJVCL: TJVCLAboutInfo read FAboutJVCL write FAboutJVCL stored False;
end;
TJvExPaintBox = class(TPaintBox, IJvExControl)
private
FAboutJVCL: TJVCLAboutInfo;
FHintColor: TColor;
FMouseOver: Boolean;
FHintWindowClass: THintWindowClass;
{$IFDEF VCL}
FOnMouseEnter: TNotifyEvent;
FOnMouseLeave: TNotifyEvent;
{$ENDIF VCL}
FOnParentColorChanged: TNotifyEvent;
function BaseWndProc(Msg: Integer; WParam: Integer = 0; LParam: Longint = 0): Integer; overload;
function BaseWndProc(Msg: Integer; WParam: Integer; LParam: TControl): Integer; overload;
function BaseWndProcEx(Msg: Integer; WParam: Integer; var LParam): Integer;
protected
procedure WndProc(var Msg: TMessage); override;
{$IFNDEF CLR}
procedure FocusChanged(AControl: TWinControl); dynamic;
{$ENDIF !CLR}
procedure VisibleChanged; reintroduce; dynamic;
procedure EnabledChanged; reintroduce; dynamic;
procedure TextChanged; reintroduce; virtual;
procedure ColorChanged; reintroduce; dynamic;
procedure FontChanged; reintroduce; dynamic;
procedure ParentFontChanged; reintroduce; dynamic;
procedure ParentColorChanged; reintroduce; dynamic;
procedure ParentShowHintChanged; reintroduce; dynamic;
function WantKey(Key: Integer; Shift: TShiftState; const KeyText: WideString): Boolean; reintroduce; virtual;
function HintShow(var HintInfo: THintInfo): Boolean; reintroduce; dynamic;
function HitTest(X, Y: Integer): Boolean; reintroduce; virtual;
procedure MouseEnter(AControl: TControl); reintroduce; dynamic;
procedure MouseLeave(AControl: TControl); reintroduce; dynamic;
{$IFDEF COMPILER5}
{$IFNDEF HASAUTOSIZE}
procedure CMSetAutoSize(var Msg: TMessage); message CM_SETAUTOSIZE;
procedure SetAutoSize(Value: Boolean); virtual;
{$ENDIF !HASAUTOSIZE}
{$ENDIF COMPILER5}
property MouseOver: Boolean read FMouseOver write FMouseOver;
property HintColor: TColor read FHintColor write FHintColor default clDefault;
{$IFDEF VCL}
property OnMouseEnter: TNotifyEvent read FOnMouseEnter write FOnMouseEnter;
property OnMouseLeave: TNotifyEvent read FOnMouseLeave write FOnMouseLeave;
{$ENDIF VCL}
property OnParentColorChange: TNotifyEvent read FOnParentColorChanged write FOnParentColorChanged;
public
constructor Create(AOwner: TComponent); override;
property HintWindowClass: THintWindowClass read FHintWindowClass write FHintWindowClass;
published
property AboutJVCL: TJVCLAboutInfo read FAboutJVCL write FAboutJVCL stored False;
end;
TJvExImage = class(TImage, IJvExControl)
private
FAboutJVCL: TJVCLAboutInfo;
FHintColor: TColor;
FMouseOver: Boolean;
FHintWindowClass: THintWindowClass;
{$IFDEF VCL}
FOnMouseEnter: TNotifyEvent;
FOnMouseLeave: TNotifyEvent;
{$ENDIF VCL}
FOnParentColorChanged: TNotifyEvent;
function BaseWndProc(Msg: Integer; WParam: Integer = 0; LParam: Longint = 0): Integer; overload;
function BaseWndProc(Msg: Integer; WParam: Integer; LParam: TControl): Integer; overload;
function BaseWndProcEx(Msg: Integer; WParam: Integer; var LParam): Integer;
protected
procedure WndProc(var Msg: TMessage); override;
{$IFNDEF CLR}
procedure FocusChanged(AControl: TWinControl); dynamic;
{$ENDIF !CLR}
procedure VisibleChanged; reintroduce; dynamic;
procedure EnabledChanged; reintroduce; dynamic;
procedure TextChanged; reintroduce; virtual;
procedure ColorChanged; reintroduce; dynamic;
procedure FontChanged; reintroduce; dynamic;
procedure ParentFontChanged; reintroduce; dynamic;
procedure ParentColorChanged; reintroduce; dynamic;
procedure ParentShowHintChanged; reintroduce; dynamic;
function WantKey(Key: Integer; Shift: TShiftState; const KeyText: WideString): Boolean; reintroduce; virtual;
function HintShow(var HintInfo: THintInfo): Boolean; reintroduce; dynamic;
function HitTest(X, Y: Integer): Boolean; reintroduce; virtual;
procedure MouseEnter(AControl: TControl); reintroduce; dynamic;
procedure MouseLeave(AControl: TControl); reintroduce; dynamic;
{$IFDEF COMPILER5}
{$IFNDEF HASAUTOSIZE}
procedure CMSetAutoSize(var Msg: TMessage); message CM_SETAUTOSIZE;
procedure SetAutoSize(Value: Boolean); virtual;
{$ENDIF !HASAUTOSIZE}
{$ENDIF COMPILER5}
property MouseOver: Boolean read FMouseOver write FMouseOver;
property HintColor: TColor read FHintColor write FHintColor default clDefault;
{$IFDEF VCL}
property OnMouseEnter: TNotifyEvent read FOnMouseEnter write FOnMouseEnter;
property OnMouseLeave: TNotifyEvent read FOnMouseLeave write FOnMouseLeave;
{$ENDIF VCL}
property OnParentColorChange: TNotifyEvent read FOnParentColorChanged write FOnParentColorChanged;
public
constructor Create(AOwner: TComponent); override;
property HintWindowClass: THintWindowClass read FHintWindowClass write FHintWindowClass;
published
property AboutJVCL: TJVCLAboutInfo read FAboutJVCL write FAboutJVCL stored False;
end;
TJvExBevel = class(TBevel, IJvExControl)
private
FAboutJVCL: TJVCLAboutInfo;
FHintColor: TColor;
FMouseOver: Boolean;
FHintWindowClass: THintWindowClass;
{$IFDEF VCL}
FOnMouseEnter: TNotifyEvent;
FOnMouseLeave: TNotifyEvent;
{$ENDIF VCL}
FOnParentColorChanged: TNotifyEvent;
function BaseWndProc(Msg: Integer; WParam: Integer = 0; LParam: Longint = 0): Integer; overload;
function BaseWndProc(Msg: Integer; WParam: Integer; LParam: TControl): Integer; overload;
function BaseWndProcEx(Msg: Integer; WParam: Integer; var LParam): Integer;
protected
procedure WndProc(var Msg: TMessage); override;
{$IFNDEF CLR}
procedure FocusChanged(AControl: TWinControl); dynamic;
{$ENDIF !CLR}
procedure VisibleChanged; reintroduce; dynamic;
procedure EnabledChanged; reintroduce; dynamic;
procedure TextChanged; reintroduce; virtual;
procedure ColorChanged; reintroduce; dynamic;
procedure FontChanged; reintroduce; dynamic;
procedure ParentFontChanged; reintroduce; dynamic;
procedure ParentColorChanged; reintroduce; dynamic;
procedure ParentShowHintChanged; reintroduce; dynamic;
function WantKey(Key: Integer; Shift: TShiftState; const KeyText: WideString): Boolean; reintroduce; virtual;
function HintShow(var HintInfo: THintInfo): Boolean; reintroduce; dynamic;
function HitTest(X, Y: Integer): Boolean; reintroduce; virtual;
procedure MouseEnter(AControl: TControl); reintroduce; dynamic;
procedure MouseLeave(AControl: TControl); reintroduce; dynamic;
{$IFDEF COMPILER5}
{$IFNDEF HASAUTOSIZE}
procedure CMSetAutoSize(var Msg: TMessage); message CM_SETAUTOSIZE;
procedure SetAutoSize(Value: Boolean); virtual;
{$ENDIF !HASAUTOSIZE}
{$ENDIF COMPILER5}
property MouseOver: Boolean read FMouseOver write FMouseOver;
property HintColor: TColor read FHintColor write FHintColor default clDefault;
{$IFDEF VCL}
property OnMouseEnter: TNotifyEvent read FOnMouseEnter write FOnMouseEnter;
property OnMouseLeave: TNotifyEvent read FOnMouseLeave write FOnMouseLeave;
{$ENDIF VCL}
property OnParentColorChange: TNotifyEvent read FOnParentColorChanged write FOnParentColorChanged;
public
constructor Create(AOwner: TComponent); override;
property HintWindowClass: THintWindowClass read FHintWindowClass write FHintWindowClass;
published
property AboutJVCL: TJVCLAboutInfo read FAboutJVCL write FAboutJVCL stored False;
end;
TJvExCustomPanel = class(TCustomPanel, IJvExControl)
private
FAboutJVCL: TJVCLAboutInfo;
FHintColor: TColor;
FMouseOver: Boolean;
FHintWindowClass: THintWindowClass;
{$IFDEF VCL}
FOnMouseEnter: TNotifyEvent;
FOnMouseLeave: TNotifyEvent;
{$ENDIF VCL}
FOnParentColorChanged: TNotifyEvent;
function BaseWndProc(Msg: Integer; WParam: Integer = 0; LParam: Longint = 0): Integer; overload;
function BaseWndProc(Msg: Integer; WParam: Integer; LParam: TControl): Integer; overload;
function BaseWndProcEx(Msg: Integer; WParam: Integer; var LParam): Integer;
protected
procedure WndProc(var Msg: TMessage); override;
{$IFNDEF CLR}
procedure FocusChanged(AControl: TWinControl); dynamic;
{$ENDIF !CLR}
procedure VisibleChanged; reintroduce; dynamic;
procedure EnabledChanged; reintroduce; dynamic;
procedure TextChanged; reintroduce; virtual;
procedure ColorChanged; reintroduce; dynamic;
procedure FontChanged; reintroduce; dynamic;
procedure ParentFontChanged; reintroduce; dynamic;
procedure ParentColorChanged; reintroduce; dynamic;
procedure ParentShowHintChanged; reintroduce; dynamic;
function WantKey(Key: Integer; Shift: TShiftState; const KeyText: WideString): Boolean; reintroduce; virtual;
function HintShow(var HintInfo: THintInfo): Boolean; reintroduce; dynamic;
function HitTest(X, Y: Integer): Boolean; reintroduce; virtual;
procedure MouseEnter(AControl: TControl); reintroduce; dynamic;
procedure MouseLeave(AControl: TControl); reintroduce; dynamic;
{$IFDEF COMPILER5}
{$IFNDEF HASAUTOSIZE}
procedure CMSetAutoSize(var Msg: TMessage); message CM_SETAUTOSIZE;
procedure SetAutoSize(Value: Boolean); virtual;
{$ENDIF !HASAUTOSIZE}
{$ENDIF COMPILER5}
property MouseOver: Boolean read FMouseOver write FMouseOver;
property HintColor: TColor read FHintColor write FHintColor default clDefault;
{$IFDEF VCL}
property OnMouseEnter: TNotifyEvent read FOnMouseEnter write FOnMouseEnter;
property OnMouseLeave: TNotifyEvent read FOnMouseLeave write FOnMouseLeave;
{$ENDIF VCL}
property OnParentColorChange: TNotifyEvent read FOnParentColorChanged write FOnParentColorChanged;
public
constructor Create(AOwner: TComponent); override;
property HintWindowClass: THintWindowClass read FHintWindowClass write FHintWindowClass;
published
property AboutJVCL: TJVCLAboutInfo read FAboutJVCL write FAboutJVCL stored False;
private
FDotNetHighlighting: Boolean;
protected
procedure BoundsChanged; reintroduce; virtual;
procedure CursorChanged; reintroduce; dynamic;
procedure ShowingChanged; reintroduce; dynamic;
procedure ShowHintChanged; reintroduce; dynamic;
{$IFNDEF CLR}
procedure ControlsListChanging(Control: TControl; Inserting: Boolean); reintroduce; dynamic;
procedure ControlsListChanged(Control: TControl; Inserting: Boolean); reintroduce; dynamic;
{$ENDIF !CLR}
procedure GetDlgCode(var Code: TDlgCodes); virtual;
procedure FocusSet(PrevWnd: THandle); virtual;
procedure FocusKilled(NextWnd: THandle); virtual;
function DoEraseBackground(Canvas: TCanvas; Param: Integer): Boolean; virtual;
{$IFDEF JVCLThemesEnabledD56}
private
function GetParentBackground: Boolean;
protected
procedure SetParentBackground(Value: Boolean); virtual;
property ParentBackground: Boolean read GetParentBackground write SetParentBackground;
{$ENDIF JVCLThemesEnabledD56}
published
property DotNetHighlighting: Boolean read FDotNetHighlighting write FDotNetHighlighting default False;
end;
TJvExPubCustomPanel = class(TJvExCustomPanel)
published
property BiDiMode;
property DragCursor;
property DragKind;
property DragMode;
property ParentBiDiMode;
property OnEndDock;
property OnStartDock;
end;
TJvExCustomRadioGroup = class(TCustomRadioGroup, IJvExControl)
private
FAboutJVCL: TJVCLAboutInfo;
FHintColor: TColor;
FMouseOver: Boolean;
FHintWindowClass: THintWindowClass;
{$IFDEF VCL}
FOnMouseEnter: TNotifyEvent;
FOnMouseLeave: TNotifyEvent;
{$ENDIF VCL}
FOnParentColorChanged: TNotifyEvent;
function BaseWndProc(Msg: Integer; WParam: Integer = 0; LParam: Longint = 0): Integer; overload;
function BaseWndProc(Msg: Integer; WParam: Integer; LParam: TControl): Integer; overload;
function BaseWndProcEx(Msg: Integer; WParam: Integer; var LParam): Integer;
protected
procedure WndProc(var Msg: TMessage); override;
{$IFNDEF CLR}
procedure FocusChanged(AControl: TWinControl); dynamic;
{$ENDIF !CLR}
procedure VisibleChanged; reintroduce; dynamic;
procedure EnabledChanged; reintroduce; dynamic;
procedure TextChanged; reintroduce; virtual;
procedure ColorChanged; reintroduce; dynamic;
procedure FontChanged; reintroduce; dynamic;
procedure ParentFontChanged; reintroduce; dynamic;
procedure ParentColorChanged; reintroduce; dynamic;
procedure ParentShowHintChanged; reintroduce; dynamic;
function WantKey(Key: Integer; Shift: TShiftState; const KeyText: WideString): Boolean; reintroduce; virtual;
function HintShow(var HintInfo: THintInfo): Boolean; reintroduce; dynamic;
function HitTest(X, Y: Integer): Boolean; reintroduce; virtual;
procedure MouseEnter(AControl: TControl); reintroduce; dynamic;
procedure MouseLeave(AControl: TControl); reintroduce; dynamic;
{$IFDEF COMPILER5}
{$IFNDEF HASAUTOSIZE}
procedure CMSetAutoSize(var Msg: TMessage); message CM_SETAUTOSIZE;
procedure SetAutoSize(Value: Boolean); virtual;
{$ENDIF !HASAUTOSIZE}
{$ENDIF COMPILER5}
property MouseOver: Boolean read FMouseOver write FMouseOver;
property HintColor: TColor read FHintColor write FHintColor default clDefault;
{$IFDEF VCL}
property OnMouseEnter: TNotifyEvent read FOnMouseEnter write FOnMouseEnter;
property OnMouseLeave: TNotifyEvent read FOnMouseLeave write FOnMouseLeave;
{$ENDIF VCL}
property OnParentColorChange: TNotifyEvent read FOnParentColorChanged write FOnParentColorChanged;
public
constructor Create(AOwner: TComponent); override;
property HintWindowClass: THintWindowClass read FHintWindowClass write FHintWindowClass;
published
property AboutJVCL: TJVCLAboutInfo read FAboutJVCL write FAboutJVCL stored False;
private
FDotNetHighlighting: Boolean;
protected
procedure BoundsChanged; reintroduce; virtual;
procedure CursorChanged; reintroduce; dynamic;
procedure ShowingChanged; reintroduce; dynamic;
procedure ShowHintChanged; reintroduce; dynamic;
{$IFNDEF CLR}
procedure ControlsListChanging(Control: TControl; Inserting: Boolean); reintroduce; dynamic;
procedure ControlsListChanged(Control: TControl; Inserting: Boolean); reintroduce; dynamic;
{$ENDIF !CLR}
procedure GetDlgCode(var Code: TDlgCodes); virtual;
procedure FocusSet(PrevWnd: THandle); virtual;
procedure FocusKilled(NextWnd: THandle); virtual;
function DoEraseBackground(Canvas: TCanvas; Param: Integer): Boolean; virtual;
{$IFDEF JVCLThemesEnabledD56}
private
function GetParentBackground: Boolean;
protected
procedure SetParentBackground(Value: Boolean); virtual;
property ParentBackground: Boolean read GetParentBackground write SetParentBackground;
{$ENDIF JVCLThemesEnabledD56}
published
property DotNetHighlighting: Boolean read FDotNetHighlighting write FDotNetHighlighting default False;
end;
TJvExSplitter = class(TSplitter, IJvExControl)
private
FAboutJVCL: TJVCLAboutInfo;
FHintColor: TColor;
FMouseOver: Boolean;
FHintWindowClass: THintWindowClass;
{$IFDEF VCL}
FOnMouseEnter: TNotifyEvent;
FOnMouseLeave: TNotifyEvent;
{$ENDIF VCL}
FOnParentColorChanged: TNotifyEvent;
function BaseWndProc(Msg: Integer; WParam: Integer = 0; LParam: Longint = 0): Integer; overload;
function BaseWndProc(Msg: Integer; WParam: Integer; LParam: TControl): Integer; overload;
function BaseWndProcEx(Msg: Integer; WParam: Integer; var LParam): Integer;
protected
procedure WndProc(var Msg: TMessage); override;
{$IFNDEF CLR}
procedure FocusChanged(AControl: TWinControl); dynamic;
{$ENDIF !CLR}
procedure VisibleChanged; reintroduce; dynamic;
procedure EnabledChanged; reintroduce; dynamic;
procedure TextChanged; reintroduce; virtual;
procedure ColorChanged; reintroduce; dynamic;
procedure FontChanged; reintroduce; dynamic;
procedure ParentFontChanged; reintroduce; dynamic;
procedure ParentColorChanged; reintroduce; dynamic;
procedure ParentShowHintChanged; reintroduce; dynamic;
function WantKey(Key: Integer; Shift: TShiftState; const KeyText: WideString): Boolean; reintroduce; virtual;
function HintShow(var HintInfo: THintInfo): Boolean; reintroduce; dynamic;
function HitTest(X, Y: Integer): Boolean; reintroduce; virtual;
procedure MouseEnter(AControl: TControl); reintroduce; dynamic;
procedure MouseLeave(AControl: TControl); reintroduce; dynamic;
{$IFDEF COMPILER5}
{$IFNDEF HASAUTOSIZE}
procedure CMSetAutoSize(var Msg: TMessage); message CM_SETAUTOSIZE;
procedure SetAutoSize(Value: Boolean); virtual;
{$ENDIF !HASAUTOSIZE}
{$ENDIF COMPILER5}
property MouseOver: Boolean read FMouseOver write FMouseOver;
property HintColor: TColor read FHintColor write FHintColor default clDefault;
{$IFDEF VCL}
property OnMouseEnter: TNotifyEvent read FOnMouseEnter write FOnMouseEnter;
property OnMouseLeave: TNotifyEvent read FOnMouseLeave write FOnMouseLeave;
{$ENDIF VCL}
property OnParentColorChange: TNotifyEvent read FOnParentColorChanged write FOnParentColorChanged;
public
constructor Create(AOwner: TComponent); override;
property HintWindowClass: THintWindowClass read FHintWindowClass write FHintWindowClass;
published
property AboutJVCL: TJVCLAboutInfo read FAboutJVCL write FAboutJVCL stored False;
protected
procedure MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); override;
end;
TJvExCustomControlBar = class(TCustomControlBar, IJvExControl)
private
FAboutJVCL: TJVCLAboutInfo;
FHintColor: TColor;
FMouseOver: Boolean;
FHintWindowClass: THintWindowClass;
{$IFDEF VCL}
FOnMouseEnter: TNotifyEvent;
FOnMouseLeave: TNotifyEvent;
{$ENDIF VCL}
FOnParentColorChanged: TNotifyEvent;
function BaseWndProc(Msg: Integer; WParam: Integer = 0; LParam: Longint = 0): Integer; overload;
function BaseWndProc(Msg: Integer; WParam: Integer; LParam: TControl): Integer; overload;
function BaseWndProcEx(Msg: Integer; WParam: Integer; var LParam): Integer;
protected
procedure WndProc(var Msg: TMessage); override;
{$IFNDEF CLR}
procedure FocusChanged(AControl: TWinControl); dynamic;
{$ENDIF !CLR}
procedure VisibleChanged; reintroduce; dynamic;
procedure EnabledChanged; reintroduce; dynamic;
procedure TextChanged; reintroduce; virtual;
procedure ColorChanged; reintroduce; dynamic;
procedure FontChanged; reintroduce; dynamic;
procedure ParentFontChanged; reintroduce; dynamic;
procedure ParentColorChanged; reintroduce; dynamic;
procedure ParentShowHintChanged; reintroduce; dynamic;
function WantKey(Key: Integer; Shift: TShiftState; const KeyText: WideString): Boolean; reintroduce; virtual;
function HintShow(var HintInfo: THintInfo): Boolean; reintroduce; dynamic;
function HitTest(X, Y: Integer): Boolean; reintroduce; virtual;
procedure MouseEnter(AControl: TControl); reintroduce; dynamic;
procedure MouseLeave(AControl: TControl); reintroduce; dynamic;
{$IFDEF COMPILER5}
{$IFNDEF HASAUTOSIZE}
procedure CMSetAutoSize(var Msg: TMessage); message CM_SETAUTOSIZE;
procedure SetAutoSize(Value: Boolean); virtual;
{$ENDIF !HASAUTOSIZE}
{$ENDIF COMPILER5}
property MouseOver: Boolean read FMouseOver write FMouseOver;
property HintColor: TColor read FHintColor write FHintColor default clDefault;
{$IFDEF VCL}
property OnMouseEnter: TNotifyEvent read FOnMouseEnter write FOnMouseEnter;
property OnMouseLeave: TNotifyEvent read FOnMouseLeave write FOnMouseLeave;
{$ENDIF VCL}
property OnParentColorChange: TNotifyEvent read FOnParentColorChanged write FOnParentColorChanged;
public
constructor Create(AOwner: TComponent); override;
property HintWindowClass: THintWindowClass read FHintWindowClass write FHintWindowClass;
published
property AboutJVCL: TJVCLAboutInfo read FAboutJVCL write FAboutJVCL stored False;
private
FDotNetHighlighting: Boolean;
protected
procedure BoundsChanged; reintroduce; virtual;
procedure CursorChanged; reintroduce; dynamic;
procedure ShowingChanged; reintroduce; dynamic;
procedure ShowHintChanged; reintroduce; dynamic;
{$IFNDEF CLR}
procedure ControlsListChanging(Control: TControl; Inserting: Boolean); reintroduce; dynamic;
procedure ControlsListChanged(Control: TControl; Inserting: Boolean); reintroduce; dynamic;
{$ENDIF !CLR}
procedure GetDlgCode(var Code: TDlgCodes); virtual;
procedure FocusSet(PrevWnd: THandle); virtual;
procedure FocusKilled(NextWnd: THandle); virtual;
function DoEraseBackground(Canvas: TCanvas; Param: Integer): Boolean; virtual;
{$IFDEF JVCLThemesEnabledD56}
private
function GetParentBackground: Boolean;
protected
procedure SetParentBackground(Value: Boolean); virtual;
property ParentBackground: Boolean read GetParentBackground write SetParentBackground;
{$ENDIF JVCLThemesEnabledD56}
published
property DotNetHighlighting: Boolean read FDotNetHighlighting write FDotNetHighlighting default False;
end;
TJvExControlBar = class(TControlBar, IJvExControl)
private
FAboutJVCL: TJVCLAboutInfo;
FHintColor: TColor;
FMouseOver: Boolean;
FHintWindowClass: THintWindowClass;
{$IFDEF VCL}
FOnMouseEnter: TNotifyEvent;
FOnMouseLeave: TNotifyEvent;
{$ENDIF VCL}
FOnParentColorChanged: TNotifyEvent;
function BaseWndProc(Msg: Integer; WParam: Integer = 0; LParam: Longint = 0): Integer; overload;
function BaseWndProc(Msg: Integer; WParam: Integer; LParam: TControl): Integer; overload;
function BaseWndProcEx(Msg: Integer; WParam: Integer; var LParam): Integer;
protected
procedure WndProc(var Msg: TMessage); override;
{$IFNDEF CLR}
procedure FocusChanged(AControl: TWinControl); dynamic;
{$ENDIF !CLR}
procedure VisibleChanged; reintroduce; dynamic;
procedure EnabledChanged; reintroduce; dynamic;
procedure TextChanged; reintroduce; virtual;
procedure ColorChanged; reintroduce; dynamic;
procedure FontChanged; reintroduce; dynamic;
procedure ParentFontChanged; reintroduce; dynamic;
procedure ParentColorChanged; reintroduce; dynamic;
procedure ParentShowHintChanged; reintroduce; dynamic;
function WantKey(Key: Integer; Shift: TShiftState; const KeyText: WideString): Boolean; reintroduce; virtual;
function HintShow(var HintInfo: THintInfo): Boolean; reintroduce; dynamic;
function HitTest(X, Y: Integer): Boolean; reintroduce; virtual;
procedure MouseEnter(AControl: TControl); reintroduce; dynamic;
procedure MouseLeave(AControl: TControl); reintroduce; dynamic;
{$IFDEF COMPILER5}
{$IFNDEF HASAUTOSIZE}
procedure CMSetAutoSize(var Msg: TMessage); message CM_SETAUTOSIZE;
procedure SetAutoSize(Value: Boolean); virtual;
{$ENDIF !HASAUTOSIZE}
{$ENDIF COMPILER5}
property MouseOver: Boolean read FMouseOver write FMouseOver;
property HintColor: TColor read FHintColor write FHintColor default clDefault;
{$IFDEF VCL}
property OnMouseEnter: TNotifyEvent read FOnMouseEnter write FOnMouseEnter;
property OnMouseLeave: TNotifyEvent read FOnMouseLeave write FOnMouseLeave;
{$ENDIF VCL}
property OnParentColorChange: TNotifyEvent read FOnParentColorChanged write FOnParentColorChanged;
public
constructor Create(AOwner: TComponent); override;
property HintWindowClass: THintWindowClass read FHintWindowClass write FHintWindowClass;
published
property AboutJVCL: TJVCLAboutInfo read FAboutJVCL write FAboutJVCL stored False;
private
FDotNetHighlighting: Boolean;
protected
procedure BoundsChanged; reintroduce; virtual;
procedure CursorChanged; reintroduce; dynamic;
procedure ShowingChanged; reintroduce; dynamic;
procedure ShowHintChanged; reintroduce; dynamic;
{$IFNDEF CLR}
procedure ControlsListChanging(Control: TControl; Inserting: Boolean); reintroduce; dynamic;
procedure ControlsListChanged(Control: TControl; Inserting: Boolean); reintroduce; dynamic;
{$ENDIF !CLR}
procedure GetDlgCode(var Code: TDlgCodes); virtual;
procedure FocusSet(PrevWnd: THandle); virtual;
procedure FocusKilled(NextWnd: THandle); virtual;
function DoEraseBackground(Canvas: TCanvas; Param: Integer): Boolean; virtual;
{$IFDEF JVCLThemesEnabledD56}
private
function GetParentBackground: Boolean;
protected
procedure SetParentBackground(Value: Boolean); virtual;
property ParentBackground: Boolean read GetParentBackground write SetParentBackground;
{$ENDIF JVCLThemesEnabledD56}
published
property DotNetHighlighting: Boolean read FDotNetHighlighting write FDotNetHighlighting default False;
end;
TJvExPanel = class(TPanel, IJvExControl)
private
FAboutJVCL: TJVCLAboutInfo;
FHintColor: TColor;
FMouseOver: Boolean;
FHintWindowClass: THintWindowClass;
{$IFDEF VCL}
FOnMouseEnter: TNotifyEvent;
FOnMouseLeave: TNotifyEvent;
{$ENDIF VCL}
FOnParentColorChanged: TNotifyEvent;
function BaseWndProc(Msg: Integer; WParam: Integer = 0; LParam: Longint = 0): Integer; overload;
function BaseWndProc(Msg: Integer; WParam: Integer; LParam: TControl): Integer; overload;
function BaseWndProcEx(Msg: Integer; WParam: Integer; var LParam): Integer;
protected
procedure WndProc(var Msg: TMessage); override;
{$IFNDEF CLR}
procedure FocusChanged(AControl: TWinControl); dynamic;
{$ENDIF !CLR}
procedure VisibleChanged; reintroduce; dynamic;
procedure EnabledChanged; reintroduce; dynamic;
procedure TextChanged; reintroduce; virtual;
procedure ColorChanged; reintroduce; dynamic;
procedure FontChanged; reintroduce; dynamic;
procedure ParentFontChanged; reintroduce; dynamic;
procedure ParentColorChanged; reintroduce; dynamic;
procedure ParentShowHintChanged; reintroduce; dynamic;
function WantKey(Key: Integer; Shift: TShiftState; const KeyText: WideString): Boolean; reintroduce; virtual;
function HintShow(var HintInfo: THintInfo): Boolean; reintroduce; dynamic;
function HitTest(X, Y: Integer): Boolean; reintroduce; virtual;
procedure MouseEnter(AControl: TControl); reintroduce; dynamic;
procedure MouseLeave(AControl: TControl); reintroduce; dynamic;
{$IFDEF COMPILER5}
{$IFNDEF HASAUTOSIZE}
procedure CMSetAutoSize(var Msg: TMessage); message CM_SETAUTOSIZE;
procedure SetAutoSize(Value: Boolean); virtual;
{$ENDIF !HASAUTOSIZE}
{$ENDIF COMPILER5}
property MouseOver: Boolean read FMouseOver write FMouseOver;
property HintColor: TColor read FHintColor write FHintColor default clDefault;
{$IFDEF VCL}
property OnMouseEnter: TNotifyEvent read FOnMouseEnter write FOnMouseEnter;
property OnMouseLeave: TNotifyEvent read FOnMouseLeave write FOnMouseLeave;
{$ENDIF VCL}
property OnParentColorChange: TNotifyEvent read FOnParentColorChanged write FOnParentColorChanged;
public
constructor Create(AOwner: TComponent); override;
property HintWindowClass: THintWindowClass read FHintWindowClass write FHintWindowClass;
published
property AboutJVCL: TJVCLAboutInfo read FAboutJVCL write FAboutJVCL stored False;
private
FDotNetHighlighting: Boolean;
protected
procedure BoundsChanged; reintroduce; virtual;
procedure CursorChanged; reintroduce; dynamic;
procedure ShowingChanged; reintroduce; dynamic;
procedure ShowHintChanged; reintroduce; dynamic;
{$IFNDEF CLR}
procedure ControlsListChanging(Control: TControl; Inserting: Boolean); reintroduce; dynamic;
procedure ControlsListChanged(Control: TControl; Inserting: Boolean); reintroduce; dynamic;
{$ENDIF !CLR}
procedure GetDlgCode(var Code: TDlgCodes); virtual;
procedure FocusSet(PrevWnd: THandle); virtual;
procedure FocusKilled(NextWnd: THandle); virtual;
function DoEraseBackground(Canvas: TCanvas; Param: Integer): Boolean; virtual;
{$IFDEF JVCLThemesEnabledD56}
private
function GetParentBackground: Boolean;
protected
procedure SetParentBackground(Value: Boolean); virtual;
property ParentBackground: Boolean read GetParentBackground write SetParentBackground;
{$ENDIF JVCLThemesEnabledD56}
published
property DotNetHighlighting: Boolean read FDotNetHighlighting write FDotNetHighlighting default False;
end;
TJvExRadioGroup = class(TRadioGroup, IJvExControl)
private
FAboutJVCL: TJVCLAboutInfo;
FHintColor: TColor;
FMouseOver: Boolean;
FHintWindowClass: THintWindowClass;
{$IFDEF VCL}
FOnMouseEnter: TNotifyEvent;
FOnMouseLeave: TNotifyEvent;
{$ENDIF VCL}
FOnParentColorChanged: TNotifyEvent;
function BaseWndProc(Msg: Integer; WParam: Integer = 0; LParam: Longint = 0): Integer; overload;
function BaseWndProc(Msg: Integer; WParam: Integer; LParam: TControl): Integer; overload;
function BaseWndProcEx(Msg: Integer; WParam: Integer; var LParam): Integer;
protected
procedure WndProc(var Msg: TMessage); override;
{$IFNDEF CLR}
procedure FocusChanged(AControl: TWinControl); dynamic;
{$ENDIF !CLR}
procedure VisibleChanged; reintroduce; dynamic;
procedure EnabledChanged; reintroduce; dynamic;
procedure TextChanged; reintroduce; virtual;
procedure ColorChanged; reintroduce; dynamic;
procedure FontChanged; reintroduce; dynamic;
procedure ParentFontChanged; reintroduce; dynamic;
procedure ParentColorChanged; reintroduce; dynamic;
procedure ParentShowHintChanged; reintroduce; dynamic;
function WantKey(Key: Integer; Shift: TShiftState; const KeyText: WideString): Boolean; reintroduce; virtual;
function HintShow(var HintInfo: THintInfo): Boolean; reintroduce; dynamic;
function HitTest(X, Y: Integer): Boolean; reintroduce; virtual;
procedure MouseEnter(AControl: TControl); reintroduce; dynamic;
procedure MouseLeave(AControl: TControl); reintroduce; dynamic;
{$IFDEF COMPILER5}
{$IFNDEF HASAUTOSIZE}
procedure CMSetAutoSize(var Msg: TMessage); message CM_SETAUTOSIZE;
procedure SetAutoSize(Value: Boolean); virtual;
{$ENDIF !HASAUTOSIZE}
{$ENDIF COMPILER5}
property MouseOver: Boolean read FMouseOver write FMouseOver;
property HintColor: TColor read FHintColor write FHintColor default clDefault;
{$IFDEF VCL}
property OnMouseEnter: TNotifyEvent read FOnMouseEnter write FOnMouseEnter;
property OnMouseLeave: TNotifyEvent read FOnMouseLeave write FOnMouseLeave;
{$ENDIF VCL}
property OnParentColorChange: TNotifyEvent read FOnParentColorChanged write FOnParentColorChanged;
public
constructor Create(AOwner: TComponent); override;
property HintWindowClass: THintWindowClass read FHintWindowClass write FHintWindowClass;
published
property AboutJVCL: TJVCLAboutInfo read FAboutJVCL write FAboutJVCL stored False;
private
FDotNetHighlighting: Boolean;
protected
procedure BoundsChanged; reintroduce; virtual;
procedure CursorChanged; reintroduce; dynamic;
procedure ShowingChanged; reintroduce; dynamic;
procedure ShowHintChanged; reintroduce; dynamic;
{$IFNDEF CLR}
procedure ControlsListChanging(Control: TControl; Inserting: Boolean); reintroduce; dynamic;
procedure ControlsListChanged(Control: TControl; Inserting: Boolean); reintroduce; dynamic;
{$ENDIF !CLR}
procedure GetDlgCode(var Code: TDlgCodes); virtual;
procedure FocusSet(PrevWnd: THandle); virtual;
procedure FocusKilled(NextWnd: THandle); virtual;
function DoEraseBackground(Canvas: TCanvas; Param: Integer): Boolean; virtual;
{$IFDEF JVCLThemesEnabledD56}
private
function GetParentBackground: Boolean;
protected
procedure SetParentBackground(Value: Boolean); virtual;
property ParentBackground: Boolean read GetParentBackground write SetParentBackground;
{$ENDIF JVCLThemesEnabledD56}
published
property DotNetHighlighting: Boolean read FDotNetHighlighting write FDotNetHighlighting default False;
end;
TJvExPage = class(TPage, IJvExControl)
private
FAboutJVCL: TJVCLAboutInfo;
FHintColor: TColor;
FMouseOver: Boolean;
FHintWindowClass: THintWindowClass;
{$IFDEF VCL}
FOnMouseEnter: TNotifyEvent;
FOnMouseLeave: TNotifyEvent;
{$ENDIF VCL}
FOnParentColorChanged: TNotifyEvent;
function BaseWndProc(Msg: Integer; WParam: Integer = 0; LParam: Longint = 0): Integer; overload;
function BaseWndProc(Msg: Integer; WParam: Integer; LParam: TControl): Integer; overload;
function BaseWndProcEx(Msg: Integer; WParam: Integer; var LParam): Integer;
protected
procedure WndProc(var Msg: TMessage); override;
{$IFNDEF CLR}
procedure FocusChanged(AControl: TWinControl); dynamic;
{$ENDIF !CLR}
procedure VisibleChanged; reintroduce; dynamic;
procedure EnabledChanged; reintroduce; dynamic;
procedure TextChanged; reintroduce; virtual;
procedure ColorChanged; reintroduce; dynamic;
procedure FontChanged; reintroduce; dynamic;
procedure ParentFontChanged; reintroduce; dynamic;
procedure ParentColorChanged; reintroduce; dynamic;
procedure ParentShowHintChanged; reintroduce; dynamic;
function WantKey(Key: Integer; Shift: TShiftState; const KeyText: WideString): Boolean; reintroduce; virtual;
function HintShow(var HintInfo: THintInfo): Boolean; reintroduce; dynamic;
function HitTest(X, Y: Integer): Boolean; reintroduce; virtual;
procedure MouseEnter(AControl: TControl); reintroduce; dynamic;
procedure MouseLeave(AControl: TControl); reintroduce; dynamic;
{$IFDEF COMPILER5}
{$IFNDEF HASAUTOSIZE}
procedure CMSetAutoSize(var Msg: TMessage); message CM_SETAUTOSIZE;
procedure SetAutoSize(Value: Boolean); virtual;
{$ENDIF !HASAUTOSIZE}
{$ENDIF COMPILER5}
property MouseOver: Boolean read FMouseOver write FMouseOver;
property HintColor: TColor read FHintColor write FHintColor default clDefault;
{$IFDEF VCL}
property OnMouseEnter: TNotifyEvent read FOnMouseEnter write FOnMouseEnter;
property OnMouseLeave: TNotifyEvent read FOnMouseLeave write FOnMouseLeave;
{$ENDIF VCL}
property OnParentColorChange: TNotifyEvent read FOnParentColorChanged write FOnParentColorChanged;
public
constructor Create(AOwner: TComponent); override;
property HintWindowClass: THintWindowClass read FHintWindowClass write FHintWindowClass;
published
property AboutJVCL: TJVCLAboutInfo read FAboutJVCL write FAboutJVCL stored False;
private
FDotNetHighlighting: Boolean;
protected
procedure BoundsChanged; reintroduce; virtual;
procedure CursorChanged; reintroduce; dynamic;
procedure ShowingChanged; reintroduce; dynamic;
procedure ShowHintChanged; reintroduce; dynamic;
{$IFNDEF CLR}
procedure ControlsListChanging(Control: TControl; Inserting: Boolean); reintroduce; dynamic;
procedure ControlsListChanged(Control: TControl; Inserting: Boolean); reintroduce; dynamic;
{$ENDIF !CLR}
procedure GetDlgCode(var Code: TDlgCodes); virtual;
procedure FocusSet(PrevWnd: THandle); virtual;
procedure FocusKilled(NextWnd: THandle); virtual;
function DoEraseBackground(Canvas: TCanvas; Param: Integer): Boolean; virtual;
{$IFDEF JVCLThemesEnabledD56}
private
function GetParentBackground: Boolean;
protected
procedure SetParentBackground(Value: Boolean); virtual;
property ParentBackground: Boolean read GetParentBackground write SetParentBackground;
{$ENDIF JVCLThemesEnabledD56}
published
property DotNetHighlighting: Boolean read FDotNetHighlighting write FDotNetHighlighting default False;
end;
TJvExNotebook = class(TNotebook, IJvExControl)
private
FAboutJVCL: TJVCLAboutInfo;
FHintColor: TColor;
FMouseOver: Boolean;
FHintWindowClass: THintWindowClass;
{$IFDEF VCL}
FOnMouseEnter: TNotifyEvent;
FOnMouseLeave: TNotifyEvent;
{$ENDIF VCL}
FOnParentColorChanged: TNotifyEvent;
function BaseWndProc(Msg: Integer; WParam: Integer = 0; LParam: Longint = 0): Integer; overload;
function BaseWndProc(Msg: Integer; WParam: Integer; LParam: TControl): Integer; overload;
function BaseWndProcEx(Msg: Integer; WParam: Integer; var LParam): Integer;
protected
procedure WndProc(var Msg: TMessage); override;
{$IFNDEF CLR}
procedure FocusChanged(AControl: TWinControl); dynamic;
{$ENDIF !CLR}
procedure VisibleChanged; reintroduce; dynamic;
procedure EnabledChanged; reintroduce; dynamic;
procedure TextChanged; reintroduce; virtual;
procedure ColorChanged; reintroduce; dynamic;
procedure FontChanged; reintroduce; dynamic;
procedure ParentFontChanged; reintroduce; dynamic;
procedure ParentColorChanged; reintroduce; dynamic;
procedure ParentShowHintChanged; reintroduce; dynamic;
function WantKey(Key: Integer; Shift: TShiftState; const KeyText: WideString): Boolean; reintroduce; virtual;
function HintShow(var HintInfo: THintInfo): Boolean; reintroduce; dynamic;
function HitTest(X, Y: Integer): Boolean; reintroduce; virtual;
procedure MouseEnter(AControl: TControl); reintroduce; dynamic;
procedure MouseLeave(AControl: TControl); reintroduce; dynamic;
{$IFDEF COMPILER5}
{$IFNDEF HASAUTOSIZE}
procedure CMSetAutoSize(var Msg: TMessage); message CM_SETAUTOSIZE;
procedure SetAutoSize(Value: Boolean); virtual;
{$ENDIF !HASAUTOSIZE}
{$ENDIF COMPILER5}
property MouseOver: Boolean read FMouseOver write FMouseOver;
property HintColor: TColor read FHintColor write FHintColor default clDefault;
{$IFDEF VCL}
property OnMouseEnter: TNotifyEvent read FOnMouseEnter write FOnMouseEnter;
property OnMouseLeave: TNotifyEvent read FOnMouseLeave write FOnMouseLeave;
{$ENDIF VCL}
property OnParentColorChange: TNotifyEvent read FOnParentColorChanged write FOnParentColorChanged;
public
constructor Create(AOwner: TComponent); override;
property HintWindowClass: THintWindowClass read FHintWindowClass write FHintWindowClass;
published
property AboutJVCL: TJVCLAboutInfo read FAboutJVCL write FAboutJVCL stored False;
private
FDotNetHighlighting: Boolean;
protected
procedure BoundsChanged; reintroduce; virtual;
procedure CursorChanged; reintroduce; dynamic;
procedure ShowingChanged; reintroduce; dynamic;
procedure ShowHintChanged; reintroduce; dynamic;
{$IFNDEF CLR}
procedure ControlsListChanging(Control: TControl; Inserting: Boolean); reintroduce; dynamic;
procedure ControlsListChanged(Control: TControl; Inserting: Boolean); reintroduce; dynamic;
{$ENDIF !CLR}
procedure GetDlgCode(var Code: TDlgCodes); virtual;
procedure FocusSet(PrevWnd: THandle); virtual;
procedure FocusKilled(NextWnd: THandle); virtual;
function DoEraseBackground(Canvas: TCanvas; Param: Integer): Boolean; virtual;
{$IFDEF JVCLThemesEnabledD56}
private
function GetParentBackground: Boolean;
protected
procedure SetParentBackground(Value: Boolean); virtual;
property ParentBackground: Boolean read GetParentBackground write SetParentBackground;
{$ENDIF JVCLThemesEnabledD56}
published
property DotNetHighlighting: Boolean read FDotNetHighlighting write FDotNetHighlighting default False;
end;
TJvExHeader = class(THeader, IJvExControl)
private
FAboutJVCL: TJVCLAboutInfo;
FHintColor: TColor;
FMouseOver: Boolean;
FHintWindowClass: THintWindowClass;
{$IFDEF VCL}
FOnMouseEnter: TNotifyEvent;
FOnMouseLeave: TNotifyEvent;
{$ENDIF VCL}
FOnParentColorChanged: TNotifyEvent;
function BaseWndProc(Msg: Integer; WParam: Integer = 0; LParam: Longint = 0): Integer; overload;
function BaseWndProc(Msg: Integer; WParam: Integer; LParam: TControl): Integer; overload;
function BaseWndProcEx(Msg: Integer; WParam: Integer; var LParam): Integer;
protected
procedure WndProc(var Msg: TMessage); override;
{$IFNDEF CLR}
procedure FocusChanged(AControl: TWinControl); dynamic;
{$ENDIF !CLR}
procedure VisibleChanged; reintroduce; dynamic;
procedure EnabledChanged; reintroduce; dynamic;
procedure TextChanged; reintroduce; virtual;
procedure ColorChanged; reintroduce; dynamic;
procedure FontChanged; reintroduce; dynamic;
procedure ParentFontChanged; reintroduce; dynamic;
procedure ParentColorChanged; reintroduce; dynamic;
procedure ParentShowHintChanged; reintroduce; dynamic;
function WantKey(Key: Integer; Shift: TShiftState; const KeyText: WideString): Boolean; reintroduce; virtual;
function HintShow(var HintInfo: THintInfo): Boolean; reintroduce; dynamic;
function HitTest(X, Y: Integer): Boolean; reintroduce; virtual;
procedure MouseEnter(AControl: TControl); reintroduce; dynamic;
procedure MouseLeave(AControl: TControl); reintroduce; dynamic;
{$IFDEF COMPILER5}
{$IFNDEF HASAUTOSIZE}
procedure CMSetAutoSize(var Msg: TMessage); message CM_SETAUTOSIZE;
procedure SetAutoSize(Value: Boolean); virtual;
{$ENDIF !HASAUTOSIZE}
{$ENDIF COMPILER5}
property MouseOver: Boolean read FMouseOver write FMouseOver;
property HintColor: TColor read FHintColor write FHintColor default clDefault;
{$IFDEF VCL}
property OnMouseEnter: TNotifyEvent read FOnMouseEnter write FOnMouseEnter;
property OnMouseLeave: TNotifyEvent read FOnMouseLeave write FOnMouseLeave;
{$ENDIF VCL}
property OnParentColorChange: TNotifyEvent read FOnParentColorChanged write FOnParentColorChanged;
public
constructor Create(AOwner: TComponent); override;
property HintWindowClass: THintWindowClass read FHintWindowClass write FHintWindowClass;
published
property AboutJVCL: TJVCLAboutInfo read FAboutJVCL write FAboutJVCL stored False;
private
FDotNetHighlighting: Boolean;
protected
procedure BoundsChanged; reintroduce; virtual;
procedure CursorChanged; reintroduce; dynamic;
procedure ShowingChanged; reintroduce; dynamic;
procedure ShowHintChanged; reintroduce; dynamic;
{$IFNDEF CLR}
procedure ControlsListChanging(Control: TControl; Inserting: Boolean); reintroduce; dynamic;
procedure ControlsListChanged(Control: TControl; Inserting: Boolean); reintroduce; dynamic;
{$ENDIF !CLR}
procedure GetDlgCode(var Code: TDlgCodes); virtual;
procedure FocusSet(PrevWnd: THandle); virtual;
procedure FocusKilled(NextWnd: THandle); virtual;
function DoEraseBackground(Canvas: TCanvas; Param: Integer): Boolean; virtual;
{$IFDEF JVCLThemesEnabledD56}
private
function GetParentBackground: Boolean;
protected
procedure SetParentBackground(Value: Boolean); virtual;
property ParentBackground: Boolean read GetParentBackground write SetParentBackground;
{$ENDIF JVCLThemesEnabledD56}
published
property DotNetHighlighting: Boolean read FDotNetHighlighting write FDotNetHighlighting default False;
end;
{$IFDEF COMPILER6_UP}
TJvExBoundLabel = class(TBoundLabel, IJvExControl)
private
FAboutJVCL: TJVCLAboutInfo;
FHintColor: TColor;
FMouseOver: Boolean;
FHintWindowClass: THintWindowClass;
{$IFDEF VCL}
FOnMouseEnter: TNotifyEvent;
FOnMouseLeave: TNotifyEvent;
{$ENDIF VCL}
FOnParentColorChanged: TNotifyEvent;
function BaseWndProc(Msg: Integer; WParam: Integer = 0; LParam: Longint = 0): Integer; overload;
function BaseWndProc(Msg: Integer; WParam: Integer; LParam: TControl): Integer; overload;
function BaseWndProcEx(Msg: Integer; WParam: Integer; var LParam): Integer;
protected
procedure WndProc(var Msg: TMessage); override;
{$IFNDEF CLR}
procedure FocusChanged(AControl: TWinControl); dynamic;
{$ENDIF !CLR}
procedure VisibleChanged; reintroduce; dynamic;
procedure EnabledChanged; reintroduce; dynamic;
procedure TextChanged; reintroduce; virtual;
procedure ColorChanged; reintroduce; dynamic;
procedure FontChanged; reintroduce; dynamic;
procedure ParentFontChanged; reintroduce; dynamic;
procedure ParentColorChanged; reintroduce; dynamic;
procedure ParentShowHintChanged; reintroduce; dynamic;
function WantKey(Key: Integer; Shift: TShiftState; const KeyText: WideString): Boolean; reintroduce; virtual;
function HintShow(var HintInfo: THintInfo): Boolean; reintroduce; dynamic;
function HitTest(X, Y: Integer): Boolean; reintroduce; virtual;
procedure MouseEnter(AControl: TControl); reintroduce; dynamic;
procedure MouseLeave(AControl: TControl); reintroduce; dynamic;
{$IFDEF COMPILER5}
{$IFNDEF HASAUTOSIZE}
procedure CMSetAutoSize(var Msg: TMessage); message CM_SETAUTOSIZE;
procedure SetAutoSize(Value: Boolean); virtual;
{$ENDIF !HASAUTOSIZE}
{$ENDIF COMPILER5}
property MouseOver: Boolean read FMouseOver write FMouseOver;
property HintColor: TColor read FHintColor write FHintColor default clDefault;
{$IFDEF VCL}
property OnMouseEnter: TNotifyEvent read FOnMouseEnter write FOnMouseEnter;
property OnMouseLeave: TNotifyEvent read FOnMouseLeave write FOnMouseLeave;
{$ENDIF VCL}
property OnParentColorChange: TNotifyEvent read FOnParentColorChanged write FOnParentColorChanged;
public
constructor Create(AOwner: TComponent); override;
property HintWindowClass: THintWindowClass read FHintWindowClass write FHintWindowClass;
published
property AboutJVCL: TJVCLAboutInfo read FAboutJVCL write FAboutJVCL stored False;
end;
TJvExCustomLabeledEdit = class(TCustomLabeledEdit, IJvExControl)
private
FAboutJVCL: TJVCLAboutInfo;
FHintColor: TColor;
FMouseOver: Boolean;
FHintWindowClass: THintWindowClass;
{$IFDEF VCL}
FOnMouseEnter: TNotifyEvent;
FOnMouseLeave: TNotifyEvent;
{$ENDIF VCL}
FOnParentColorChanged: TNotifyEvent;
function BaseWndProc(Msg: Integer; WParam: Integer = 0; LParam: Longint = 0): Integer; overload;
function BaseWndProc(Msg: Integer; WParam: Integer; LParam: TControl): Integer; overload;
function BaseWndProcEx(Msg: Integer; WParam: Integer; var LParam): Integer;
protected
procedure WndProc(var Msg: TMessage); override;
{$IFNDEF CLR}
procedure FocusChanged(AControl: TWinControl); dynamic;
{$ENDIF !CLR}
procedure VisibleChanged; reintroduce; dynamic;
procedure EnabledChanged; reintroduce; dynamic;
procedure TextChanged; reintroduce; virtual;
procedure ColorChanged; reintroduce; dynamic;
procedure FontChanged; reintroduce; dynamic;
procedure ParentFontChanged; reintroduce; dynamic;
procedure ParentColorChanged; reintroduce; dynamic;
procedure ParentShowHintChanged; reintroduce; dynamic;
function WantKey(Key: Integer; Shift: TShiftState; const KeyText: WideString): Boolean; reintroduce; virtual;
function HintShow(var HintInfo: THintInfo): Boolean; reintroduce; dynamic;
function HitTest(X, Y: Integer): Boolean; reintroduce; virtual;
procedure MouseEnter(AControl: TControl); reintroduce; dynamic;
procedure MouseLeave(AControl: TControl); reintroduce; dynamic;
{$IFDEF COMPILER5}
{$IFNDEF HASAUTOSIZE}
procedure CMSetAutoSize(var Msg: TMessage); message CM_SETAUTOSIZE;
procedure SetAutoSize(Value: Boolean); virtual;
{$ENDIF !HASAUTOSIZE}
{$ENDIF COMPILER5}
property MouseOver: Boolean read FMouseOver write FMouseOver;
property HintColor: TColor read FHintColor write FHintColor default clDefault;
{$IFDEF VCL}
property OnMouseEnter: TNotifyEvent read FOnMouseEnter write FOnMouseEnter;
property OnMouseLeave: TNotifyEvent read FOnMouseLeave write FOnMouseLeave;
{$ENDIF VCL}
property OnParentColorChange: TNotifyEvent read FOnParentColorChanged write FOnParentColorChanged;
public
constructor Create(AOwner: TComponent); override;
property HintWindowClass: THintWindowClass read FHintWindowClass write FHintWindowClass;
published
property AboutJVCL: TJVCLAboutInfo read FAboutJVCL write FAboutJVCL stored False;
private
FDotNetHighlighting: Boolean;
protected
procedure BoundsChanged; reintroduce; virtual;
procedure CursorChanged; reintroduce; dynamic;
procedure ShowingChanged; reintroduce; dynamic;
procedure ShowHintChanged; reintroduce; dynamic;
{$IFNDEF CLR}
procedure ControlsListChanging(Control: TControl; Inserting: Boolean); reintroduce; dynamic;
procedure ControlsListChanged(Control: TControl; Inserting: Boolean); reintroduce; dynamic;
{$ENDIF !CLR}
procedure GetDlgCode(var Code: TDlgCodes); virtual;
procedure FocusSet(PrevWnd: THandle); virtual;
procedure FocusKilled(NextWnd: THandle); virtual;
function DoEraseBackground(Canvas: TCanvas; Param: Integer): Boolean; virtual;
{$IFDEF JVCLThemesEnabledD56}
private
function GetParentBackground: Boolean;
protected
procedure SetParentBackground(Value: Boolean); virtual;
property ParentBackground: Boolean read GetParentBackground write SetParentBackground;
{$ENDIF JVCLThemesEnabledD56}
published
property DotNetHighlighting: Boolean read FDotNetHighlighting write FDotNetHighlighting default False;
end;
TJvExLabeledEdit = class(TLabeledEdit, IJvExControl)
private
FAboutJVCL: TJVCLAboutInfo;
FHintColor: TColor;
FMouseOver: Boolean;
FHintWindowClass: THintWindowClass;
{$IFDEF VCL}
FOnMouseEnter: TNotifyEvent;
FOnMouseLeave: TNotifyEvent;
{$ENDIF VCL}
FOnParentColorChanged: TNotifyEvent;
function BaseWndProc(Msg: Integer; WParam: Integer = 0; LParam: Longint = 0): Integer; overload;
function BaseWndProc(Msg: Integer; WParam: Integer; LParam: TControl): Integer; overload;
function BaseWndProcEx(Msg: Integer; WParam: Integer; var LParam): Integer;
protected
procedure WndProc(var Msg: TMessage); override;
{$IFNDEF CLR}
procedure FocusChanged(AControl: TWinControl); dynamic;
{$ENDIF !CLR}
procedure VisibleChanged; reintroduce; dynamic;
procedure EnabledChanged; reintroduce; dynamic;
procedure TextChanged; reintroduce; virtual;
procedure ColorChanged; reintroduce; dynamic;
procedure FontChanged; reintroduce; dynamic;
procedure ParentFontChanged; reintroduce; dynamic;
procedure ParentColorChanged; reintroduce; dynamic;
procedure ParentShowHintChanged; reintroduce; dynamic;
function WantKey(Key: Integer; Shift: TShiftState; const KeyText: WideString): Boolean; reintroduce; virtual;
function HintShow(var HintInfo: THintInfo): Boolean; reintroduce; dynamic;
function HitTest(X, Y: Integer): Boolean; reintroduce; virtual;
procedure MouseEnter(AControl: TControl); reintroduce; dynamic;
procedure MouseLeave(AControl: TControl); reintroduce; dynamic;
{$IFDEF COMPILER5}
{$IFNDEF HASAUTOSIZE}
procedure CMSetAutoSize(var Msg: TMessage); message CM_SETAUTOSIZE;
procedure SetAutoSize(Value: Boolean); virtual;
{$ENDIF !HASAUTOSIZE}
{$ENDIF COMPILER5}
property MouseOver: Boolean read FMouseOver write FMouseOver;
property HintColor: TColor read FHintColor write FHintColor default clDefault;
{$IFDEF VCL}
property OnMouseEnter: TNotifyEvent read FOnMouseEnter write FOnMouseEnter;
property OnMouseLeave: TNotifyEvent read FOnMouseLeave write FOnMouseLeave;
{$ENDIF VCL}
property OnParentColorChange: TNotifyEvent read FOnParentColorChanged write FOnParentColorChanged;
public
constructor Create(AOwner: TComponent); override;
property HintWindowClass: THintWindowClass read FHintWindowClass write FHintWindowClass;
published
property AboutJVCL: TJVCLAboutInfo read FAboutJVCL write FAboutJVCL stored False;
private
FDotNetHighlighting: Boolean;
protected
procedure BoundsChanged; reintroduce; virtual;
procedure CursorChanged; reintroduce; dynamic;
procedure ShowingChanged; reintroduce; dynamic;
procedure ShowHintChanged; reintroduce; dynamic;
{$IFNDEF CLR}
procedure ControlsListChanging(Control: TControl; Inserting: Boolean); reintroduce; dynamic;
procedure ControlsListChanged(Control: TControl; Inserting: Boolean); reintroduce; dynamic;
{$ENDIF !CLR}
procedure GetDlgCode(var Code: TDlgCodes); virtual;
procedure FocusSet(PrevWnd: THandle); virtual;
procedure FocusKilled(NextWnd: THandle); virtual;
function DoEraseBackground(Canvas: TCanvas; Param: Integer): Boolean; virtual;
{$IFDEF JVCLThemesEnabledD56}
private
function GetParentBackground: Boolean;
protected
procedure SetParentBackground(Value: Boolean); virtual;
property ParentBackground: Boolean read GetParentBackground write SetParentBackground;
{$ENDIF JVCLThemesEnabledD56}
published
property DotNetHighlighting: Boolean read FDotNetHighlighting write FDotNetHighlighting default False;
end;
TJvExCustomColorBox = class(TCustomColorBox, IJvExControl)
private
FAboutJVCL: TJVCLAboutInfo;
FHintColor: TColor;
FMouseOver: Boolean;
FHintWindowClass: THintWindowClass;
{$IFDEF VCL}
FOnMouseEnter: TNotifyEvent;
FOnMouseLeave: TNotifyEvent;
{$ENDIF VCL}
FOnParentColorChanged: TNotifyEvent;
function BaseWndProc(Msg: Integer; WParam: Integer = 0; LParam: Longint = 0): Integer; overload;
function BaseWndProc(Msg: Integer; WParam: Integer; LParam: TControl): Integer; overload;
function BaseWndProcEx(Msg: Integer; WParam: Integer; var LParam): Integer;
protected
procedure WndProc(var Msg: TMessage); override;
{$IFNDEF CLR}
procedure FocusChanged(AControl: TWinControl); dynamic;
{$ENDIF !CLR}
procedure VisibleChanged; reintroduce; dynamic;
procedure EnabledChanged; reintroduce; dynamic;
procedure TextChanged; reintroduce; virtual;
procedure ColorChanged; reintroduce; dynamic;
procedure FontChanged; reintroduce; dynamic;
procedure ParentFontChanged; reintroduce; dynamic;
procedure ParentColorChanged; reintroduce; dynamic;
procedure ParentShowHintChanged; reintroduce; dynamic;
function WantKey(Key: Integer; Shift: TShiftState; const KeyText: WideString): Boolean; reintroduce; virtual;
function HintShow(var HintInfo: THintInfo): Boolean; reintroduce; dynamic;
function HitTest(X, Y: Integer): Boolean; reintroduce; virtual;
procedure MouseEnter(AControl: TControl); reintroduce; dynamic;
procedure MouseLeave(AControl: TControl); reintroduce; dynamic;
{$IFDEF COMPILER5}
{$IFNDEF HASAUTOSIZE}
procedure CMSetAutoSize(var Msg: TMessage); message CM_SETAUTOSIZE;
procedure SetAutoSize(Value: Boolean); virtual;
{$ENDIF !HASAUTOSIZE}
{$ENDIF COMPILER5}
property MouseOver: Boolean read FMouseOver write FMouseOver;
property HintColor: TColor read FHintColor write FHintColor default clDefault;
{$IFDEF VCL}
property OnMouseEnter: TNotifyEvent read FOnMouseEnter write FOnMouseEnter;
property OnMouseLeave: TNotifyEvent read FOnMouseLeave write FOnMouseLeave;
{$ENDIF VCL}
property OnParentColorChange: TNotifyEvent read FOnParentColorChanged write FOnParentColorChanged;
public
constructor Create(AOwner: TComponent); override;
property HintWindowClass: THintWindowClass read FHintWindowClass write FHintWindowClass;
published
property AboutJVCL: TJVCLAboutInfo read FAboutJVCL write FAboutJVCL stored False;
private
FDotNetHighlighting: Boolean;
protected
procedure BoundsChanged; reintroduce; virtual;
procedure CursorChanged; reintroduce; dynamic;
procedure ShowingChanged; reintroduce; dynamic;
procedure ShowHintChanged; reintroduce; dynamic;
{$IFNDEF CLR}
procedure ControlsListChanging(Control: TControl; Inserting: Boolean); reintroduce; dynamic;
procedure ControlsListChanged(Control: TControl; Inserting: Boolean); reintroduce; dynamic;
{$ENDIF !CLR}
procedure GetDlgCode(var Code: TDlgCodes); virtual;
procedure FocusSet(PrevWnd: THandle); virtual;
procedure FocusKilled(NextWnd: THandle); virtual;
function DoEraseBackground(Canvas: TCanvas; Param: Integer): Boolean; virtual;
{$IFDEF JVCLThemesEnabledD56}
private
function GetParentBackground: Boolean;
protected
procedure SetParentBackground(Value: Boolean); virtual;
property ParentBackground: Boolean read GetParentBackground write SetParentBackground;
{$ENDIF JVCLThemesEnabledD56}
published
property DotNetHighlighting: Boolean read FDotNetHighlighting write FDotNetHighlighting default False;
end;
TJvExColorBox = class(TColorBox, IJvExControl)
private
FAboutJVCL: TJVCLAboutInfo;
FHintColor: TColor;
FMouseOver: Boolean;
FHintWindowClass: THintWindowClass;
{$IFDEF VCL}
FOnMouseEnter: TNotifyEvent;
FOnMouseLeave: TNotifyEvent;
{$ENDIF VCL}
FOnParentColorChanged: TNotifyEvent;
function BaseWndProc(Msg: Integer; WParam: Integer = 0; LParam: Longint = 0): Integer; overload;
function BaseWndProc(Msg: Integer; WParam: Integer; LParam: TControl): Integer; overload;
function BaseWndProcEx(Msg: Integer; WParam: Integer; var LParam): Integer;
protected
procedure WndProc(var Msg: TMessage); override;
{$IFNDEF CLR}
procedure FocusChanged(AControl: TWinControl); dynamic;
{$ENDIF !CLR}
procedure VisibleChanged; reintroduce; dynamic;
procedure EnabledChanged; reintroduce; dynamic;
procedure TextChanged; reintroduce; virtual;
procedure ColorChanged; reintroduce; dynamic;
procedure FontChanged; reintroduce; dynamic;
procedure ParentFontChanged; reintroduce; dynamic;
procedure ParentColorChanged; reintroduce; dynamic;
procedure ParentShowHintChanged; reintroduce; dynamic;
function WantKey(Key: Integer; Shift: TShiftState; const KeyText: WideString): Boolean; reintroduce; virtual;
function HintShow(var HintInfo: THintInfo): Boolean; reintroduce; dynamic;
function HitTest(X, Y: Integer): Boolean; reintroduce; virtual;
procedure MouseEnter(AControl: TControl); reintroduce; dynamic;
procedure MouseLeave(AControl: TControl); reintroduce; dynamic;
{$IFDEF COMPILER5}
{$IFNDEF HASAUTOSIZE}
procedure CMSetAutoSize(var Msg: TMessage); message CM_SETAUTOSIZE;
procedure SetAutoSize(Value: Boolean); virtual;
{$ENDIF !HASAUTOSIZE}
{$ENDIF COMPILER5}
property MouseOver: Boolean read FMouseOver write FMouseOver;
property HintColor: TColor read FHintColor write FHintColor default clDefault;
{$IFDEF VCL}
property OnMouseEnter: TNotifyEvent read FOnMouseEnter write FOnMouseEnter;
property OnMouseLeave: TNotifyEvent read FOnMouseLeave write FOnMouseLeave;
{$ENDIF VCL}
property OnParentColorChange: TNotifyEvent read FOnParentColorChanged write FOnParentColorChanged;
public
constructor Create(AOwner: TComponent); override;
property HintWindowClass: THintWindowClass read FHintWindowClass write FHintWindowClass;
published
property AboutJVCL: TJVCLAboutInfo read FAboutJVCL write FAboutJVCL stored False;
private
FDotNetHighlighting: Boolean;
protected
procedure BoundsChanged; reintroduce; virtual;
procedure CursorChanged; reintroduce; dynamic;
procedure ShowingChanged; reintroduce; dynamic;
procedure ShowHintChanged; reintroduce; dynamic;
{$IFNDEF CLR}
procedure ControlsListChanging(Control: TControl; Inserting: Boolean); reintroduce; dynamic;
procedure ControlsListChanged(Control: TControl; Inserting: Boolean); reintroduce; dynamic;
{$ENDIF !CLR}
procedure GetDlgCode(var Code: TDlgCodes); virtual;
procedure FocusSet(PrevWnd: THandle); virtual;
procedure FocusKilled(NextWnd: THandle); virtual;
function DoEraseBackground(Canvas: TCanvas; Param: Integer): Boolean; virtual;
{$IFDEF JVCLThemesEnabledD56}
private
function GetParentBackground: Boolean;
protected
procedure SetParentBackground(Value: Boolean); virtual;
property ParentBackground: Boolean read GetParentBackground write SetParentBackground;
{$ENDIF JVCLThemesEnabledD56}
published
property DotNetHighlighting: Boolean read FDotNetHighlighting write FDotNetHighlighting default False;
end;
{$ENDIF COMPILER6_UP}
// SplitterMouseDownFix fixes a bug in the VCL that causes the splitter to no
// more work with the control in the left/top of it when the control has a size
// of 0. This is actually a TWinControl.AlignControl bug.
procedure SplitterMouseDownFix(Splitter: TSplitter);
{$IFDEF UNITVERSIONING}
const
UnitVersioning: TUnitVersionInfo = (
RCSfile: '$URL: https://jvcl.svn.sourceforge.net/svnroot/jvcl/tags/JVCL3_32/run/JvExExtCtrls.pas $';
Revision: '$Revision: 10883 $';
Date: '$Date: 2006-08-13 15:20:07 +0200 (dim., 13 août 2006) $';
LogPath: 'JVCL\run'
);
{$ENDIF UNITVERSIONING}
implementation
constructor TJvExShape.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
FHintColor := clDefault;
end;
function TJvExShape.BaseWndProc(Msg: Integer; WParam: Integer = 0; LParam: Longint = 0): Integer;
var
Mesg: TMessage;
begin
Mesg := CreateWMMessage(Msg, WParam, LParam);
inherited WndProc(Mesg);
Result := Mesg.Result;
end;
function TJvExShape.BaseWndProc(Msg: Integer; WParam: Integer; LParam: TControl): Integer;
var
Mesg: TMessage;
begin
Mesg := CreateWMMessage(Msg, WParam, LParam);
inherited WndProc(Mesg);
Result := Mesg.Result;
end;
function TJvExShape.BaseWndProcEx(Msg: Integer; WParam: Integer; var LParam): Integer;
var
Mesg: TStructPtrMessage;
begin
Mesg := TStructPtrMessage.Create(Msg, WParam, LParam);
try
inherited WndProc(Mesg.Msg);
finally
Result := Mesg.Msg.Result;
Mesg.Free;
end;
end;
procedure TJvExShape.VisibleChanged;
begin
BaseWndProc(CM_VISIBLECHANGED);
end;
procedure TJvExShape.EnabledChanged;
begin
BaseWndProc(CM_ENABLEDCHANGED);
end;
procedure TJvExShape.TextChanged;
begin
BaseWndProc(CM_TEXTCHANGED);
end;
procedure TJvExShape.FontChanged;
begin
BaseWndProc(CM_FONTCHANGED);
end;
procedure TJvExShape.ColorChanged;
begin
BaseWndProc(CM_COLORCHANGED);
end;
procedure TJvExShape.ParentFontChanged;
begin
BaseWndProc(CM_PARENTFONTCHANGED);
end;
procedure TJvExShape.ParentColorChanged;
begin
BaseWndProc(CM_PARENTCOLORCHANGED);
if Assigned(OnParentColorChange) then
OnParentColorChange(Self);
end;
procedure TJvExShape.ParentShowHintChanged;
begin
BaseWndProc(CM_PARENTSHOWHINTCHANGED);
end;
function TJvExShape.WantKey(Key: Integer; Shift: TShiftState; const KeyText: WideString): Boolean;
begin
Result := BaseWndProc(CM_DIALOGCHAR, Word(Key), ShiftStateToKeyData(Shift)) <> 0;
end;
function TJvExShape.HitTest(X, Y: Integer): Boolean;
begin
Result := BaseWndProc(CM_HITTEST, 0, SmallPointToLong(PointToSmallPoint(Point(X, Y)))) <> 0;
end;
function TJvExShape.HintShow(var HintInfo: THintInfo): Boolean;
begin
GetHintColor(HintInfo, Self, FHintColor);
if FHintWindowClass <> nil then
HintInfo.HintWindowClass := FHintWindowClass;
Result := BaseWndProcEx(CM_HINTSHOW, 0, HintInfo) <> 0;
end;
procedure TJvExShape.MouseEnter(AControl: TControl);
begin
FMouseOver := True;
{$IFDEF VCL}
if Assigned(FOnMouseEnter) then
FOnMouseEnter(Self);
{$ENDIF VCL}
BaseWndProc(CM_MOUSEENTER, 0, AControl);
end;
procedure TJvExShape.MouseLeave(AControl: TControl);
begin
FMouseOver := False;
BaseWndProc(CM_MOUSELEAVE, 0, AControl);
{$IFDEF VCL}
if Assigned(FOnMouseLeave) then
FOnMouseLeave(Self);
{$ENDIF VCL}
end;
{$IFNDEF CLR}
procedure TJvExShape.FocusChanged(AControl: TWinControl);
begin
BaseWndProc(CM_FOCUSCHANGED, 0, AControl);
end;
{$ENDIF !CLR}
{$IFDEF COMPILER5}
{$IFNDEF HASAUTOSIZE}
procedure TJvExShape.CMSetAutoSize(var Msg: TMessage);
begin
SetAutoSize(Msg.WParam <> 0);
end;
procedure TJvExShape.SetAutoSize(Value: Boolean);
begin
TOpenControl_SetAutoSize(Self, Value);
end;
{$ENDIF !HASAUTOSIZE}
{$ENDIF COMPILER5}
procedure TJvExShape.WndProc(var Msg: TMessage);
{$IFDEF CLR}
var
AHintInfo: THintInfo;
{$ENDIF CLR}
begin
if not DispatchIsDesignMsg(Self, Msg) then
case Msg.Msg of
CM_DENYSUBCLASSING:
{$IFNDEF CLR}
Msg.Result := Ord(GetInterfaceEntry(IJvDenySubClassing) <> nil);
{$ELSE}
Msg.Result := Integer(Supports(Self, IJvDenySubClassing));
{$ENDIF !CLR}
CM_DIALOGCHAR:
with TCMDialogChar{$IFDEF CLR}.Create{$ENDIF}(Msg) do
Result := Ord(WantKey(CharCode, KeyDataToShiftState(KeyData), WideChar(CharCode)));
CM_HINTSHOW:
{$IFNDEF CLR}
with TCMHintShow(Msg) do
Result := Integer(HintShow(HintInfo^));
{$ELSE}
with TCMHintShow.Create(Msg) do
begin
AHintInfo := HintInfo;
Result := Integer(HintShow(AHintInfo));
HintInfo := AHintInfo;
end;
{$ENDIF !CLR}
CM_HITTEST:
with TCMHitTest{$IFDEF CLR}.Create{$ENDIF}(Msg) do
Result := Integer(HitTest(XPos, YPos));
CM_MOUSEENTER:
MouseEnter({$IFDEF CLR}nil{$ELSE}TControl(Msg.LParam){$ENDIF});
CM_MOUSELEAVE:
MouseLeave({$IFDEF CLR}nil{$ELSE}TControl(Msg.LParam){$ENDIF});
CM_VISIBLECHANGED:
VisibleChanged;
CM_ENABLEDCHANGED:
EnabledChanged;
CM_TEXTCHANGED:
TextChanged;
CM_FONTCHANGED:
FontChanged;
CM_COLORCHANGED:
ColorChanged;
{$IFNDEF CLR}
CM_FOCUSCHANGED:
FocusChanged(TWinControl(Msg.LParam));
{$ENDIF !CLR}
CM_PARENTFONTCHANGED:
ParentFontChanged;
CM_PARENTCOLORCHANGED:
ParentColorChanged;
CM_PARENTSHOWHINTCHANGED:
ParentShowHintChanged;
else
inherited WndProc(Msg);
end;
end;
//============================================================================
constructor TJvExPaintBox.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
FHintColor := clDefault;
end;
function TJvExPaintBox.BaseWndProc(Msg: Integer; WParam: Integer = 0; LParam: Longint = 0): Integer;
var
Mesg: TMessage;
begin
Mesg := CreateWMMessage(Msg, WParam, LParam);
inherited WndProc(Mesg);
Result := Mesg.Result;
end;
function TJvExPaintBox.BaseWndProc(Msg: Integer; WParam: Integer; LParam: TControl): Integer;
var
Mesg: TMessage;
begin
Mesg := CreateWMMessage(Msg, WParam, LParam);
inherited WndProc(Mesg);
Result := Mesg.Result;
end;
function TJvExPaintBox.BaseWndProcEx(Msg: Integer; WParam: Integer; var LParam): Integer;
var
Mesg: TStructPtrMessage;
begin
Mesg := TStructPtrMessage.Create(Msg, WParam, LParam);
try
inherited WndProc(Mesg.Msg);
finally
Result := Mesg.Msg.Result;
Mesg.Free;
end;
end;
procedure TJvExPaintBox.VisibleChanged;
begin
BaseWndProc(CM_VISIBLECHANGED);
end;
procedure TJvExPaintBox.EnabledChanged;
begin
BaseWndProc(CM_ENABLEDCHANGED);
end;
procedure TJvExPaintBox.TextChanged;
begin
BaseWndProc(CM_TEXTCHANGED);
end;
procedure TJvExPaintBox.FontChanged;
begin
BaseWndProc(CM_FONTCHANGED);
end;
procedure TJvExPaintBox.ColorChanged;
begin
BaseWndProc(CM_COLORCHANGED);
end;
procedure TJvExPaintBox.ParentFontChanged;
begin
BaseWndProc(CM_PARENTFONTCHANGED);
end;
procedure TJvExPaintBox.ParentColorChanged;
begin
BaseWndProc(CM_PARENTCOLORCHANGED);
if Assigned(OnParentColorChange) then
OnParentColorChange(Self);
end;
procedure TJvExPaintBox.ParentShowHintChanged;
begin
BaseWndProc(CM_PARENTSHOWHINTCHANGED);
end;
function TJvExPaintBox.WantKey(Key: Integer; Shift: TShiftState; const KeyText: WideString): Boolean;
begin
Result := BaseWndProc(CM_DIALOGCHAR, Word(Key), ShiftStateToKeyData(Shift)) <> 0;
end;
function TJvExPaintBox.HitTest(X, Y: Integer): Boolean;
begin
Result := BaseWndProc(CM_HITTEST, 0, SmallPointToLong(PointToSmallPoint(Point(X, Y)))) <> 0;
end;
function TJvExPaintBox.HintShow(var HintInfo: THintInfo): Boolean;
begin
GetHintColor(HintInfo, Self, FHintColor);
if FHintWindowClass <> nil then
HintInfo.HintWindowClass := FHintWindowClass;
Result := BaseWndProcEx(CM_HINTSHOW, 0, HintInfo) <> 0;
end;
procedure TJvExPaintBox.MouseEnter(AControl: TControl);
begin
FMouseOver := True;
{$IFDEF VCL}
if Assigned(FOnMouseEnter) then
FOnMouseEnter(Self);
{$ENDIF VCL}
BaseWndProc(CM_MOUSEENTER, 0, AControl);
end;
procedure TJvExPaintBox.MouseLeave(AControl: TControl);
begin
FMouseOver := False;
BaseWndProc(CM_MOUSELEAVE, 0, AControl);
{$IFDEF VCL}
if Assigned(FOnMouseLeave) then
FOnMouseLeave(Self);
{$ENDIF VCL}
end;
{$IFNDEF CLR}
procedure TJvExPaintBox.FocusChanged(AControl: TWinControl);
begin
BaseWndProc(CM_FOCUSCHANGED, 0, AControl);
end;
{$ENDIF !CLR}
{$IFDEF COMPILER5}
{$IFNDEF HASAUTOSIZE}
procedure TJvExPaintBox.CMSetAutoSize(var Msg: TMessage);
begin
SetAutoSize(Msg.WParam <> 0);
end;
procedure TJvExPaintBox.SetAutoSize(Value: Boolean);
begin
TOpenControl_SetAutoSize(Self, Value);
end;
{$ENDIF !HASAUTOSIZE}
{$ENDIF COMPILER5}
procedure TJvExPaintBox.WndProc(var Msg: TMessage);
{$IFDEF CLR}
var
AHintInfo: THintInfo;
{$ENDIF CLR}
begin
if not DispatchIsDesignMsg(Self, Msg) then
case Msg.Msg of
CM_DENYSUBCLASSING:
{$IFNDEF CLR}
Msg.Result := Ord(GetInterfaceEntry(IJvDenySubClassing) <> nil);
{$ELSE}
Msg.Result := Integer(Supports(Self, IJvDenySubClassing));
{$ENDIF !CLR}
CM_DIALOGCHAR:
with TCMDialogChar{$IFDEF CLR}.Create{$ENDIF}(Msg) do
Result := Ord(WantKey(CharCode, KeyDataToShiftState(KeyData), WideChar(CharCode)));
CM_HINTSHOW:
{$IFNDEF CLR}
with TCMHintShow(Msg) do
Result := Integer(HintShow(HintInfo^));
{$ELSE}
with TCMHintShow.Create(Msg) do
begin
AHintInfo := HintInfo;
Result := Integer(HintShow(AHintInfo));
HintInfo := AHintInfo;
end;
{$ENDIF !CLR}
CM_HITTEST:
with TCMHitTest{$IFDEF CLR}.Create{$ENDIF}(Msg) do
Result := Integer(HitTest(XPos, YPos));
CM_MOUSEENTER:
MouseEnter({$IFDEF CLR}nil{$ELSE}TControl(Msg.LParam){$ENDIF});
CM_MOUSELEAVE:
MouseLeave({$IFDEF CLR}nil{$ELSE}TControl(Msg.LParam){$ENDIF});
CM_VISIBLECHANGED:
VisibleChanged;
CM_ENABLEDCHANGED:
EnabledChanged;
CM_TEXTCHANGED:
TextChanged;
CM_FONTCHANGED:
FontChanged;
CM_COLORCHANGED:
ColorChanged;
{$IFNDEF CLR}
CM_FOCUSCHANGED:
FocusChanged(TWinControl(Msg.LParam));
{$ENDIF !CLR}
CM_PARENTFONTCHANGED:
ParentFontChanged;
CM_PARENTCOLORCHANGED:
ParentColorChanged;
CM_PARENTSHOWHINTCHANGED:
ParentShowHintChanged;
else
inherited WndProc(Msg);
end;
end;
//============================================================================
constructor TJvExImage.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
FHintColor := clDefault;
end;
function TJvExImage.BaseWndProc(Msg: Integer; WParam: Integer = 0; LParam: Longint = 0): Integer;
var
Mesg: TMessage;
begin
Mesg := CreateWMMessage(Msg, WParam, LParam);
inherited WndProc(Mesg);
Result := Mesg.Result;
end;
function TJvExImage.BaseWndProc(Msg: Integer; WParam: Integer; LParam: TControl): Integer;
var
Mesg: TMessage;
begin
Mesg := CreateWMMessage(Msg, WParam, LParam);
inherited WndProc(Mesg);
Result := Mesg.Result;
end;
function TJvExImage.BaseWndProcEx(Msg: Integer; WParam: Integer; var LParam): Integer;
var
Mesg: TStructPtrMessage;
begin
Mesg := TStructPtrMessage.Create(Msg, WParam, LParam);
try
inherited WndProc(Mesg.Msg);
finally
Result := Mesg.Msg.Result;
Mesg.Free;
end;
end;
procedure TJvExImage.VisibleChanged;
begin
BaseWndProc(CM_VISIBLECHANGED);
end;
procedure TJvExImage.EnabledChanged;
begin
BaseWndProc(CM_ENABLEDCHANGED);
end;
procedure TJvExImage.TextChanged;
begin
BaseWndProc(CM_TEXTCHANGED);
end;
procedure TJvExImage.FontChanged;
begin
BaseWndProc(CM_FONTCHANGED);
end;
procedure TJvExImage.ColorChanged;
begin
BaseWndProc(CM_COLORCHANGED);
end;
procedure TJvExImage.ParentFontChanged;
begin
BaseWndProc(CM_PARENTFONTCHANGED);
end;
procedure TJvExImage.ParentColorChanged;
begin
BaseWndProc(CM_PARENTCOLORCHANGED);
if Assigned(OnParentColorChange) then
OnParentColorChange(Self);
end;
procedure TJvExImage.ParentShowHintChanged;
begin
BaseWndProc(CM_PARENTSHOWHINTCHANGED);
end;
function TJvExImage.WantKey(Key: Integer; Shift: TShiftState; const KeyText: WideString): Boolean;
begin
Result := BaseWndProc(CM_DIALOGCHAR, Word(Key), ShiftStateToKeyData(Shift)) <> 0;
end;
function TJvExImage.HitTest(X, Y: Integer): Boolean;
begin
Result := BaseWndProc(CM_HITTEST, 0, SmallPointToLong(PointToSmallPoint(Point(X, Y)))) <> 0;
end;
function TJvExImage.HintShow(var HintInfo: THintInfo): Boolean;
begin
GetHintColor(HintInfo, Self, FHintColor);
if FHintWindowClass <> nil then
HintInfo.HintWindowClass := FHintWindowClass;
Result := BaseWndProcEx(CM_HINTSHOW, 0, HintInfo) <> 0;
end;
procedure TJvExImage.MouseEnter(AControl: TControl);
begin
FMouseOver := True;
{$IFDEF VCL}
if Assigned(FOnMouseEnter) then
FOnMouseEnter(Self);
{$ENDIF VCL}
BaseWndProc(CM_MOUSEENTER, 0, AControl);
end;
procedure TJvExImage.MouseLeave(AControl: TControl);
begin
FMouseOver := False;
BaseWndProc(CM_MOUSELEAVE, 0, AControl);
{$IFDEF VCL}
if Assigned(FOnMouseLeave) then
FOnMouseLeave(Self);
{$ENDIF VCL}
end;
{$IFNDEF CLR}
procedure TJvExImage.FocusChanged(AControl: TWinControl);
begin
BaseWndProc(CM_FOCUSCHANGED, 0, AControl);
end;
{$ENDIF !CLR}
{$IFDEF COMPILER5}
{$IFNDEF HASAUTOSIZE}
procedure TJvExImage.CMSetAutoSize(var Msg: TMessage);
begin
SetAutoSize(Msg.WParam <> 0);
end;
procedure TJvExImage.SetAutoSize(Value: Boolean);
begin
TOpenControl_SetAutoSize(Self, Value);
end;
{$ENDIF !HASAUTOSIZE}
{$ENDIF COMPILER5}
procedure TJvExImage.WndProc(var Msg: TMessage);
{$IFDEF CLR}
var
AHintInfo: THintInfo;
{$ENDIF CLR}
begin
if not DispatchIsDesignMsg(Self, Msg) then
case Msg.Msg of
CM_DENYSUBCLASSING:
{$IFNDEF CLR}
Msg.Result := Ord(GetInterfaceEntry(IJvDenySubClassing) <> nil);
{$ELSE}
Msg.Result := Integer(Supports(Self, IJvDenySubClassing));
{$ENDIF !CLR}
CM_DIALOGCHAR:
with TCMDialogChar{$IFDEF CLR}.Create{$ENDIF}(Msg) do
Result := Ord(WantKey(CharCode, KeyDataToShiftState(KeyData), WideChar(CharCode)));
CM_HINTSHOW:
{$IFNDEF CLR}
with TCMHintShow(Msg) do
Result := Integer(HintShow(HintInfo^));
{$ELSE}
with TCMHintShow.Create(Msg) do
begin
AHintInfo := HintInfo;
Result := Integer(HintShow(AHintInfo));
HintInfo := AHintInfo;
end;
{$ENDIF !CLR}
CM_HITTEST:
with TCMHitTest{$IFDEF CLR}.Create{$ENDIF}(Msg) do
Result := Integer(HitTest(XPos, YPos));
CM_MOUSEENTER:
MouseEnter({$IFDEF CLR}nil{$ELSE}TControl(Msg.LParam){$ENDIF});
CM_MOUSELEAVE:
MouseLeave({$IFDEF CLR}nil{$ELSE}TControl(Msg.LParam){$ENDIF});
CM_VISIBLECHANGED:
VisibleChanged;
CM_ENABLEDCHANGED:
EnabledChanged;
CM_TEXTCHANGED:
TextChanged;
CM_FONTCHANGED:
FontChanged;
CM_COLORCHANGED:
ColorChanged;
{$IFNDEF CLR}
CM_FOCUSCHANGED:
FocusChanged(TWinControl(Msg.LParam));
{$ENDIF !CLR}
CM_PARENTFONTCHANGED:
ParentFontChanged;
CM_PARENTCOLORCHANGED:
ParentColorChanged;
CM_PARENTSHOWHINTCHANGED:
ParentShowHintChanged;
else
inherited WndProc(Msg);
end;
end;
//============================================================================
constructor TJvExBevel.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
FHintColor := clDefault;
end;
function TJvExBevel.BaseWndProc(Msg: Integer; WParam: Integer = 0; LParam: Longint = 0): Integer;
var
Mesg: TMessage;
begin
Mesg := CreateWMMessage(Msg, WParam, LParam);
inherited WndProc(Mesg);
Result := Mesg.Result;
end;
function TJvExBevel.BaseWndProc(Msg: Integer; WParam: Integer; LParam: TControl): Integer;
var
Mesg: TMessage;
begin
Mesg := CreateWMMessage(Msg, WParam, LParam);
inherited WndProc(Mesg);
Result := Mesg.Result;
end;
function TJvExBevel.BaseWndProcEx(Msg: Integer; WParam: Integer; var LParam): Integer;
var
Mesg: TStructPtrMessage;
begin
Mesg := TStructPtrMessage.Create(Msg, WParam, LParam);
try
inherited WndProc(Mesg.Msg);
finally
Result := Mesg.Msg.Result;
Mesg.Free;
end;
end;
procedure TJvExBevel.VisibleChanged;
begin
BaseWndProc(CM_VISIBLECHANGED);
end;
procedure TJvExBevel.EnabledChanged;
begin
BaseWndProc(CM_ENABLEDCHANGED);
end;
procedure TJvExBevel.TextChanged;
begin
BaseWndProc(CM_TEXTCHANGED);
end;
procedure TJvExBevel.FontChanged;
begin
BaseWndProc(CM_FONTCHANGED);
end;
procedure TJvExBevel.ColorChanged;
begin
BaseWndProc(CM_COLORCHANGED);
end;
procedure TJvExBevel.ParentFontChanged;
begin
BaseWndProc(CM_PARENTFONTCHANGED);
end;
procedure TJvExBevel.ParentColorChanged;
begin
BaseWndProc(CM_PARENTCOLORCHANGED);
if Assigned(OnParentColorChange) then
OnParentColorChange(Self);
end;
procedure TJvExBevel.ParentShowHintChanged;
begin
BaseWndProc(CM_PARENTSHOWHINTCHANGED);
end;
function TJvExBevel.WantKey(Key: Integer; Shift: TShiftState; const KeyText: WideString): Boolean;
begin
Result := BaseWndProc(CM_DIALOGCHAR, Word(Key), ShiftStateToKeyData(Shift)) <> 0;
end;
function TJvExBevel.HitTest(X, Y: Integer): Boolean;
begin
Result := BaseWndProc(CM_HITTEST, 0, SmallPointToLong(PointToSmallPoint(Point(X, Y)))) <> 0;
end;
function TJvExBevel.HintShow(var HintInfo: THintInfo): Boolean;
begin
GetHintColor(HintInfo, Self, FHintColor);
if FHintWindowClass <> nil then
HintInfo.HintWindowClass := FHintWindowClass;
Result := BaseWndProcEx(CM_HINTSHOW, 0, HintInfo) <> 0;
end;
procedure TJvExBevel.MouseEnter(AControl: TControl);
begin
FMouseOver := True;
{$IFDEF VCL}
if Assigned(FOnMouseEnter) then
FOnMouseEnter(Self);
{$ENDIF VCL}
BaseWndProc(CM_MOUSEENTER, 0, AControl);
end;
procedure TJvExBevel.MouseLeave(AControl: TControl);
begin
FMouseOver := False;
BaseWndProc(CM_MOUSELEAVE, 0, AControl);
{$IFDEF VCL}
if Assigned(FOnMouseLeave) then
FOnMouseLeave(Self);
{$ENDIF VCL}
end;
{$IFNDEF CLR}
procedure TJvExBevel.FocusChanged(AControl: TWinControl);
begin
BaseWndProc(CM_FOCUSCHANGED, 0, AControl);
end;
{$ENDIF !CLR}
{$IFDEF COMPILER5}
{$IFNDEF HASAUTOSIZE}
procedure TJvExBevel.CMSetAutoSize(var Msg: TMessage);
begin
SetAutoSize(Msg.WParam <> 0);
end;
procedure TJvExBevel.SetAutoSize(Value: Boolean);
begin
TOpenControl_SetAutoSize(Self, Value);
end;
{$ENDIF !HASAUTOSIZE}
{$ENDIF COMPILER5}
procedure TJvExBevel.WndProc(var Msg: TMessage);
{$IFDEF CLR}
var
AHintInfo: THintInfo;
{$ENDIF CLR}
begin
if not DispatchIsDesignMsg(Self, Msg) then
case Msg.Msg of
CM_DENYSUBCLASSING:
{$IFNDEF CLR}
Msg.Result := Ord(GetInterfaceEntry(IJvDenySubClassing) <> nil);
{$ELSE}
Msg.Result := Integer(Supports(Self, IJvDenySubClassing));
{$ENDIF !CLR}
CM_DIALOGCHAR:
with TCMDialogChar{$IFDEF CLR}.Create{$ENDIF}(Msg) do
Result := Ord(WantKey(CharCode, KeyDataToShiftState(KeyData), WideChar(CharCode)));
CM_HINTSHOW:
{$IFNDEF CLR}
with TCMHintShow(Msg) do
Result := Integer(HintShow(HintInfo^));
{$ELSE}
with TCMHintShow.Create(Msg) do
begin
AHintInfo := HintInfo;
Result := Integer(HintShow(AHintInfo));
HintInfo := AHintInfo;
end;
{$ENDIF !CLR}
CM_HITTEST:
with TCMHitTest{$IFDEF CLR}.Create{$ENDIF}(Msg) do
Result := Integer(HitTest(XPos, YPos));
CM_MOUSEENTER:
MouseEnter({$IFDEF CLR}nil{$ELSE}TControl(Msg.LParam){$ENDIF});
CM_MOUSELEAVE:
MouseLeave({$IFDEF CLR}nil{$ELSE}TControl(Msg.LParam){$ENDIF});
CM_VISIBLECHANGED:
VisibleChanged;
CM_ENABLEDCHANGED:
EnabledChanged;
CM_TEXTCHANGED:
TextChanged;
CM_FONTCHANGED:
FontChanged;
CM_COLORCHANGED:
ColorChanged;
{$IFNDEF CLR}
CM_FOCUSCHANGED:
FocusChanged(TWinControl(Msg.LParam));
{$ENDIF !CLR}
CM_PARENTFONTCHANGED:
ParentFontChanged;
CM_PARENTCOLORCHANGED:
ParentColorChanged;
CM_PARENTSHOWHINTCHANGED:
ParentShowHintChanged;
else
inherited WndProc(Msg);
end;
end;
//============================================================================
constructor TJvExCustomPanel.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
FHintColor := clDefault;
end;
function TJvExCustomPanel.BaseWndProc(Msg: Integer; WParam: Integer = 0; LParam: Longint = 0): Integer;
var
Mesg: TMessage;
begin
Mesg := CreateWMMessage(Msg, WParam, LParam);
inherited WndProc(Mesg);
Result := Mesg.Result;
end;
function TJvExCustomPanel.BaseWndProc(Msg: Integer; WParam: Integer; LParam: TControl): Integer;
var
Mesg: TMessage;
begin
Mesg := CreateWMMessage(Msg, WParam, LParam);
inherited WndProc(Mesg);
Result := Mesg.Result;
end;
function TJvExCustomPanel.BaseWndProcEx(Msg: Integer; WParam: Integer; var LParam): Integer;
var
Mesg: TStructPtrMessage;
begin
Mesg := TStructPtrMessage.Create(Msg, WParam, LParam);
try
inherited WndProc(Mesg.Msg);
finally
Result := Mesg.Msg.Result;
Mesg.Free;
end;
end;
procedure TJvExCustomPanel.VisibleChanged;
begin
BaseWndProc(CM_VISIBLECHANGED);
end;
procedure TJvExCustomPanel.EnabledChanged;
begin
BaseWndProc(CM_ENABLEDCHANGED);
end;
procedure TJvExCustomPanel.TextChanged;
begin
BaseWndProc(CM_TEXTCHANGED);
end;
procedure TJvExCustomPanel.FontChanged;
begin
BaseWndProc(CM_FONTCHANGED);
end;
procedure TJvExCustomPanel.ColorChanged;
begin
BaseWndProc(CM_COLORCHANGED);
end;
procedure TJvExCustomPanel.ParentFontChanged;
begin
BaseWndProc(CM_PARENTFONTCHANGED);
end;
procedure TJvExCustomPanel.ParentColorChanged;
begin
BaseWndProc(CM_PARENTCOLORCHANGED);
if Assigned(OnParentColorChange) then
OnParentColorChange(Self);
end;
procedure TJvExCustomPanel.ParentShowHintChanged;
begin
BaseWndProc(CM_PARENTSHOWHINTCHANGED);
end;
function TJvExCustomPanel.WantKey(Key: Integer; Shift: TShiftState; const KeyText: WideString): Boolean;
begin
Result := BaseWndProc(CM_DIALOGCHAR, Word(Key), ShiftStateToKeyData(Shift)) <> 0;
end;
function TJvExCustomPanel.HitTest(X, Y: Integer): Boolean;
begin
Result := BaseWndProc(CM_HITTEST, 0, SmallPointToLong(PointToSmallPoint(Point(X, Y)))) <> 0;
end;
function TJvExCustomPanel.HintShow(var HintInfo: THintInfo): Boolean;
begin
GetHintColor(HintInfo, Self, FHintColor);
if FHintWindowClass <> nil then
HintInfo.HintWindowClass := FHintWindowClass;
Result := BaseWndProcEx(CM_HINTSHOW, 0, HintInfo) <> 0;
end;
procedure TJvExCustomPanel.MouseEnter(AControl: TControl);
begin
FMouseOver := True;
{$IFDEF VCL}
if Assigned(FOnMouseEnter) then
FOnMouseEnter(Self);
{$ENDIF VCL}
BaseWndProc(CM_MOUSEENTER, 0, AControl);
end;
procedure TJvExCustomPanel.MouseLeave(AControl: TControl);
begin
FMouseOver := False;
BaseWndProc(CM_MOUSELEAVE, 0, AControl);
{$IFDEF VCL}
if Assigned(FOnMouseLeave) then
FOnMouseLeave(Self);
{$ENDIF VCL}
end;
{$IFNDEF CLR}
procedure TJvExCustomPanel.FocusChanged(AControl: TWinControl);
begin
BaseWndProc(CM_FOCUSCHANGED, 0, AControl);
end;
{$ENDIF !CLR}
{$IFDEF COMPILER5}
{$IFNDEF HASAUTOSIZE}
procedure TJvExCustomPanel.CMSetAutoSize(var Msg: TMessage);
begin
SetAutoSize(Msg.WParam <> 0);
end;
procedure TJvExCustomPanel.SetAutoSize(Value: Boolean);
begin
TOpenControl_SetAutoSize(Self, Value);
end;
{$ENDIF !HASAUTOSIZE}
{$ENDIF COMPILER5}
procedure TJvExCustomPanel.BoundsChanged;
begin
end;
procedure TJvExCustomPanel.CursorChanged;
begin
BaseWndProc(CM_CURSORCHANGED);
end;
procedure TJvExCustomPanel.ShowingChanged;
begin
BaseWndProc(CM_SHOWINGCHANGED);
end;
procedure TJvExCustomPanel.ShowHintChanged;
begin
BaseWndProc(CM_SHOWHINTCHANGED);
end;
{$IFNDEF CLR}
{ VCL sends CM_CONTROLLISTCHANGE and CM_CONTROLCHANGE in a different order than
the CLX methods are used. So we must correct it by evaluating "Inserting". }
procedure TJvExCustomPanel.ControlsListChanging(Control: TControl; Inserting: Boolean);
begin
if Inserting then
BaseWndProc(CM_CONTROLLISTCHANGE, Integer(Control), Integer(Inserting))
else
BaseWndProc(CM_CONTROLCHANGE, Integer(Control), Integer(Inserting));
end;
procedure TJvExCustomPanel.ControlsListChanged(Control: TControl; Inserting: Boolean);
begin
if not Inserting then
BaseWndProc(CM_CONTROLLISTCHANGE, Integer(Control), Integer(Inserting))
else
BaseWndProc(CM_CONTROLCHANGE, Integer(Control), Integer(Inserting));
end;
{$ENDIF !CLR}
procedure TJvExCustomPanel.GetDlgCode(var Code: TDlgCodes);
begin
end;
procedure TJvExCustomPanel.FocusSet(PrevWnd: THandle);
begin
BaseWndProc(WM_SETFOCUS, Integer(PrevWnd), 0);
end;
procedure TJvExCustomPanel.FocusKilled(NextWnd: THandle);
begin
BaseWndProc(WM_KILLFOCUS, Integer(NextWnd), 0);
end;
function TJvExCustomPanel.DoEraseBackground(Canvas: TCanvas; Param: Integer): Boolean;
begin
Result := BaseWndProc(WM_ERASEBKGND, Canvas.Handle, Param) <> 0;
end;
{$IFDEF JVCLThemesEnabledD56}
function TJvExCustomPanel.GetParentBackground: Boolean;
begin
Result := JvThemes.GetParentBackground(Self);
end;
procedure TJvExCustomPanel.SetParentBackground(Value: Boolean);
begin
JvThemes.SetParentBackground(Self, Value);
end;
{$ENDIF JVCLThemesEnabledD56}
procedure TJvExCustomPanel.WndProc(var Msg: TMessage);
var
IdSaveDC: Integer;
DlgCodes: TDlgCodes;
Canvas: TCanvas;
{$IFDEF CLR}
AHintInfo: THintInfo;
{$ENDIF CLR}
begin
if not DispatchIsDesignMsg(Self, Msg) then
begin
case Msg.Msg of
CM_DENYSUBCLASSING:
{$IFNDEF CLR}
Msg.Result := Ord(GetInterfaceEntry(IJvDenySubClassing) <> nil);
{$ELSE}
Msg.Result := Integer(Supports(Self, IJvDenySubClassing));
{$ENDIF !CLR}
CM_DIALOGCHAR:
with TCMDialogChar{$IFDEF CLR}.Create{$ENDIF}(Msg) do
Result := Ord(WantKey(CharCode, KeyDataToShiftState(KeyData), WideChar(CharCode)));
CM_HINTSHOW:
{$IFNDEF CLR}
with TCMHintShow(Msg) do
Result := Integer(HintShow(HintInfo^));
{$ELSE}
with TCMHintShow.Create(Msg) do
begin
AHintInfo := HintInfo;
Result := Integer(HintShow(AHintInfo));
HintInfo := AHintInfo;
end;
{$ENDIF !CLR}
CM_HITTEST:
with TCMHitTest{$IFDEF CLR}.Create{$ENDIF}(Msg) do
Result := Integer(HitTest(XPos, YPos));
CM_MOUSEENTER:
MouseEnter({$IFDEF CLR}nil{$ELSE}TControl(Msg.LParam){$ENDIF});
CM_MOUSELEAVE:
MouseLeave({$IFDEF CLR}nil{$ELSE}TControl(Msg.LParam){$ENDIF});
CM_VISIBLECHANGED:
VisibleChanged;
CM_ENABLEDCHANGED:
EnabledChanged;
CM_TEXTCHANGED:
TextChanged;
CM_FONTCHANGED:
FontChanged;
CM_COLORCHANGED:
ColorChanged;
{$IFNDEF CLR}
CM_FOCUSCHANGED:
FocusChanged(TWinControl(Msg.LParam));
{$ENDIF !CLR}
CM_PARENTFONTCHANGED:
ParentFontChanged;
CM_PARENTCOLORCHANGED:
ParentColorChanged;
CM_PARENTSHOWHINTCHANGED:
ParentShowHintChanged;
CM_CURSORCHANGED:
CursorChanged;
CM_SHOWINGCHANGED:
ShowingChanged;
CM_SHOWHINTCHANGED:
ShowHintChanged;
{$IFNDEF CLR}
CM_CONTROLLISTCHANGE:
if Msg.LParam <> 0 then
ControlsListChanging(TControl(Msg.WParam), True)
else
ControlsListChanged(TControl(Msg.WParam), False);
CM_CONTROLCHANGE:
if Msg.LParam = 0 then
ControlsListChanging(TControl(Msg.WParam), False)
else
ControlsListChanged(TControl(Msg.WParam), True);
{$ENDIF !CLR}
WM_SETFOCUS:
FocusSet(THandle(Msg.WParam));
WM_KILLFOCUS:
FocusKilled(THandle(Msg.WParam));
WM_SIZE:
begin
inherited WndProc(Msg);
BoundsChanged;
end;
WM_ERASEBKGND:
begin
IdSaveDC := SaveDC(HDC(Msg.WParam)); // protect DC against Stock-Objects from Canvas
Canvas := TCanvas.Create;
try
Canvas.Handle := HDC(Msg.WParam);
Msg.Result := Ord(DoEraseBackground(Canvas, Msg.LParam));
finally
Canvas.Handle := 0;
Canvas.Free;
RestoreDC(HDC(Msg.WParam), IdSaveDC);
end;
end;
WM_PRINTCLIENT, WM_PRINT: // VCL bug fix
begin
IdSaveDC := SaveDC(HDC(Msg.WParam)); // protect DC against changes
try
inherited WndProc(Msg);
finally
RestoreDC(HDC(Msg.WParam), IdSaveDC);
end;
end;
WM_GETDLGCODE:
begin
inherited WndProc(Msg);
DlgCodes := [dcNative] + DlgcToDlgCodes(Msg.Result);
GetDlgCode(DlgCodes);
if not (dcNative in DlgCodes) then
Msg.Result := DlgCodesToDlgc(DlgCodes);
end;
else
inherited WndProc(Msg);
end;
if DotNetHighlighting then
HandleDotNetHighlighting(Self, Msg, MouseOver, Color);
end;
end;
//============================================================================
constructor TJvExCustomRadioGroup.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
FHintColor := clDefault;
end;
function TJvExCustomRadioGroup.BaseWndProc(Msg: Integer; WParam: Integer = 0; LParam: Longint = 0): Integer;
var
Mesg: TMessage;
begin
Mesg := CreateWMMessage(Msg, WParam, LParam);
inherited WndProc(Mesg);
Result := Mesg.Result;
end;
function TJvExCustomRadioGroup.BaseWndProc(Msg: Integer; WParam: Integer; LParam: TControl): Integer;
var
Mesg: TMessage;
begin
Mesg := CreateWMMessage(Msg, WParam, LParam);
inherited WndProc(Mesg);
Result := Mesg.Result;
end;
function TJvExCustomRadioGroup.BaseWndProcEx(Msg: Integer; WParam: Integer; var LParam): Integer;
var
Mesg: TStructPtrMessage;
begin
Mesg := TStructPtrMessage.Create(Msg, WParam, LParam);
try
inherited WndProc(Mesg.Msg);
finally
Result := Mesg.Msg.Result;
Mesg.Free;
end;
end;
procedure TJvExCustomRadioGroup.VisibleChanged;
begin
BaseWndProc(CM_VISIBLECHANGED);
end;
procedure TJvExCustomRadioGroup.EnabledChanged;
begin
BaseWndProc(CM_ENABLEDCHANGED);
end;
procedure TJvExCustomRadioGroup.TextChanged;
begin
BaseWndProc(CM_TEXTCHANGED);
end;
procedure TJvExCustomRadioGroup.FontChanged;
begin
BaseWndProc(CM_FONTCHANGED);
end;
procedure TJvExCustomRadioGroup.ColorChanged;
begin
BaseWndProc(CM_COLORCHANGED);
end;
procedure TJvExCustomRadioGroup.ParentFontChanged;
begin
BaseWndProc(CM_PARENTFONTCHANGED);
end;
procedure TJvExCustomRadioGroup.ParentColorChanged;
begin
BaseWndProc(CM_PARENTCOLORCHANGED);
if Assigned(OnParentColorChange) then
OnParentColorChange(Self);
end;
procedure TJvExCustomRadioGroup.ParentShowHintChanged;
begin
BaseWndProc(CM_PARENTSHOWHINTCHANGED);
end;
function TJvExCustomRadioGroup.WantKey(Key: Integer; Shift: TShiftState; const KeyText: WideString): Boolean;
begin
Result := BaseWndProc(CM_DIALOGCHAR, Word(Key), ShiftStateToKeyData(Shift)) <> 0;
end;
function TJvExCustomRadioGroup.HitTest(X, Y: Integer): Boolean;
begin
Result := BaseWndProc(CM_HITTEST, 0, SmallPointToLong(PointToSmallPoint(Point(X, Y)))) <> 0;
end;
function TJvExCustomRadioGroup.HintShow(var HintInfo: THintInfo): Boolean;
begin
GetHintColor(HintInfo, Self, FHintColor);
if FHintWindowClass <> nil then
HintInfo.HintWindowClass := FHintWindowClass;
Result := BaseWndProcEx(CM_HINTSHOW, 0, HintInfo) <> 0;
end;
procedure TJvExCustomRadioGroup.MouseEnter(AControl: TControl);
begin
FMouseOver := True;
{$IFDEF VCL}
if Assigned(FOnMouseEnter) then
FOnMouseEnter(Self);
{$ENDIF VCL}
BaseWndProc(CM_MOUSEENTER, 0, AControl);
end;
procedure TJvExCustomRadioGroup.MouseLeave(AControl: TControl);
begin
FMouseOver := False;
BaseWndProc(CM_MOUSELEAVE, 0, AControl);
{$IFDEF VCL}
if Assigned(FOnMouseLeave) then
FOnMouseLeave(Self);
{$ENDIF VCL}
end;
{$IFNDEF CLR}
procedure TJvExCustomRadioGroup.FocusChanged(AControl: TWinControl);
begin
BaseWndProc(CM_FOCUSCHANGED, 0, AControl);
end;
{$ENDIF !CLR}
{$IFDEF COMPILER5}
{$IFNDEF HASAUTOSIZE}
procedure TJvExCustomRadioGroup.CMSetAutoSize(var Msg: TMessage);
begin
SetAutoSize(Msg.WParam <> 0);
end;
procedure TJvExCustomRadioGroup.SetAutoSize(Value: Boolean);
begin
TOpenControl_SetAutoSize(Self, Value);
end;
{$ENDIF !HASAUTOSIZE}
{$ENDIF COMPILER5}
procedure TJvExCustomRadioGroup.BoundsChanged;
begin
end;
procedure TJvExCustomRadioGroup.CursorChanged;
begin
BaseWndProc(CM_CURSORCHANGED);
end;
procedure TJvExCustomRadioGroup.ShowingChanged;
begin
BaseWndProc(CM_SHOWINGCHANGED);
end;
procedure TJvExCustomRadioGroup.ShowHintChanged;
begin
BaseWndProc(CM_SHOWHINTCHANGED);
end;
{$IFNDEF CLR}
{ VCL sends CM_CONTROLLISTCHANGE and CM_CONTROLCHANGE in a different order than
the CLX methods are used. So we must correct it by evaluating "Inserting". }
procedure TJvExCustomRadioGroup.ControlsListChanging(Control: TControl; Inserting: Boolean);
begin
if Inserting then
BaseWndProc(CM_CONTROLLISTCHANGE, Integer(Control), Integer(Inserting))
else
BaseWndProc(CM_CONTROLCHANGE, Integer(Control), Integer(Inserting));
end;
procedure TJvExCustomRadioGroup.ControlsListChanged(Control: TControl; Inserting: Boolean);
begin
if not Inserting then
BaseWndProc(CM_CONTROLLISTCHANGE, Integer(Control), Integer(Inserting))
else
BaseWndProc(CM_CONTROLCHANGE, Integer(Control), Integer(Inserting));
end;
{$ENDIF !CLR}
procedure TJvExCustomRadioGroup.GetDlgCode(var Code: TDlgCodes);
begin
end;
procedure TJvExCustomRadioGroup.FocusSet(PrevWnd: THandle);
begin
BaseWndProc(WM_SETFOCUS, Integer(PrevWnd), 0);
end;
procedure TJvExCustomRadioGroup.FocusKilled(NextWnd: THandle);
begin
BaseWndProc(WM_KILLFOCUS, Integer(NextWnd), 0);
end;
function TJvExCustomRadioGroup.DoEraseBackground(Canvas: TCanvas; Param: Integer): Boolean;
begin
Result := BaseWndProc(WM_ERASEBKGND, Canvas.Handle, Param) <> 0;
end;
{$IFDEF JVCLThemesEnabledD56}
function TJvExCustomRadioGroup.GetParentBackground: Boolean;
begin
Result := JvThemes.GetParentBackground(Self);
end;
procedure TJvExCustomRadioGroup.SetParentBackground(Value: Boolean);
begin
JvThemes.SetParentBackground(Self, Value);
end;
{$ENDIF JVCLThemesEnabledD56}
procedure TJvExCustomRadioGroup.WndProc(var Msg: TMessage);
var
IdSaveDC: Integer;
DlgCodes: TDlgCodes;
Canvas: TCanvas;
{$IFDEF CLR}
AHintInfo: THintInfo;
{$ENDIF CLR}
begin
if not DispatchIsDesignMsg(Self, Msg) then
begin
case Msg.Msg of
CM_DENYSUBCLASSING:
{$IFNDEF CLR}
Msg.Result := Ord(GetInterfaceEntry(IJvDenySubClassing) <> nil);
{$ELSE}
Msg.Result := Integer(Supports(Self, IJvDenySubClassing));
{$ENDIF !CLR}
CM_DIALOGCHAR:
with TCMDialogChar{$IFDEF CLR}.Create{$ENDIF}(Msg) do
Result := Ord(WantKey(CharCode, KeyDataToShiftState(KeyData), WideChar(CharCode)));
CM_HINTSHOW:
{$IFNDEF CLR}
with TCMHintShow(Msg) do
Result := Integer(HintShow(HintInfo^));
{$ELSE}
with TCMHintShow.Create(Msg) do
begin
AHintInfo := HintInfo;
Result := Integer(HintShow(AHintInfo));
HintInfo := AHintInfo;
end;
{$ENDIF !CLR}
CM_HITTEST:
with TCMHitTest{$IFDEF CLR}.Create{$ENDIF}(Msg) do
Result := Integer(HitTest(XPos, YPos));
CM_MOUSEENTER:
MouseEnter({$IFDEF CLR}nil{$ELSE}TControl(Msg.LParam){$ENDIF});
CM_MOUSELEAVE:
MouseLeave({$IFDEF CLR}nil{$ELSE}TControl(Msg.LParam){$ENDIF});
CM_VISIBLECHANGED:
VisibleChanged;
CM_ENABLEDCHANGED:
EnabledChanged;
CM_TEXTCHANGED:
TextChanged;
CM_FONTCHANGED:
FontChanged;
CM_COLORCHANGED:
ColorChanged;
{$IFNDEF CLR}
CM_FOCUSCHANGED:
FocusChanged(TWinControl(Msg.LParam));
{$ENDIF !CLR}
CM_PARENTFONTCHANGED:
ParentFontChanged;
CM_PARENTCOLORCHANGED:
ParentColorChanged;
CM_PARENTSHOWHINTCHANGED:
ParentShowHintChanged;
CM_CURSORCHANGED:
CursorChanged;
CM_SHOWINGCHANGED:
ShowingChanged;
CM_SHOWHINTCHANGED:
ShowHintChanged;
{$IFNDEF CLR}
CM_CONTROLLISTCHANGE:
if Msg.LParam <> 0 then
ControlsListChanging(TControl(Msg.WParam), True)
else
ControlsListChanged(TControl(Msg.WParam), False);
CM_CONTROLCHANGE:
if Msg.LParam = 0 then
ControlsListChanging(TControl(Msg.WParam), False)
else
ControlsListChanged(TControl(Msg.WParam), True);
{$ENDIF !CLR}
WM_SETFOCUS:
FocusSet(THandle(Msg.WParam));
WM_KILLFOCUS:
FocusKilled(THandle(Msg.WParam));
WM_SIZE:
begin
inherited WndProc(Msg);
BoundsChanged;
end;
WM_ERASEBKGND:
begin
IdSaveDC := SaveDC(HDC(Msg.WParam)); // protect DC against Stock-Objects from Canvas
Canvas := TCanvas.Create;
try
Canvas.Handle := HDC(Msg.WParam);
Msg.Result := Ord(DoEraseBackground(Canvas, Msg.LParam));
finally
Canvas.Handle := 0;
Canvas.Free;
RestoreDC(HDC(Msg.WParam), IdSaveDC);
end;
end;
WM_PRINTCLIENT, WM_PRINT: // VCL bug fix
begin
IdSaveDC := SaveDC(HDC(Msg.WParam)); // protect DC against changes
try
inherited WndProc(Msg);
finally
RestoreDC(HDC(Msg.WParam), IdSaveDC);
end;
end;
WM_GETDLGCODE:
begin
inherited WndProc(Msg);
DlgCodes := [dcNative] + DlgcToDlgCodes(Msg.Result);
GetDlgCode(DlgCodes);
if not (dcNative in DlgCodes) then
Msg.Result := DlgCodesToDlgc(DlgCodes);
end;
else
inherited WndProc(Msg);
end;
if DotNetHighlighting then
HandleDotNetHighlighting(Self, Msg, MouseOver, Color);
end;
end;
//============================================================================
constructor TJvExCustomControlBar.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
FHintColor := clDefault;
end;
function TJvExCustomControlBar.BaseWndProc(Msg: Integer; WParam: Integer = 0; LParam: Longint = 0): Integer;
var
Mesg: TMessage;
begin
Mesg := CreateWMMessage(Msg, WParam, LParam);
inherited WndProc(Mesg);
Result := Mesg.Result;
end;
function TJvExCustomControlBar.BaseWndProc(Msg: Integer; WParam: Integer; LParam: TControl): Integer;
var
Mesg: TMessage;
begin
Mesg := CreateWMMessage(Msg, WParam, LParam);
inherited WndProc(Mesg);
Result := Mesg.Result;
end;
function TJvExCustomControlBar.BaseWndProcEx(Msg: Integer; WParam: Integer; var LParam): Integer;
var
Mesg: TStructPtrMessage;
begin
Mesg := TStructPtrMessage.Create(Msg, WParam, LParam);
try
inherited WndProc(Mesg.Msg);
finally
Result := Mesg.Msg.Result;
Mesg.Free;
end;
end;
procedure TJvExCustomControlBar.VisibleChanged;
begin
BaseWndProc(CM_VISIBLECHANGED);
end;
procedure TJvExCustomControlBar.EnabledChanged;
begin
BaseWndProc(CM_ENABLEDCHANGED);
end;
procedure TJvExCustomControlBar.TextChanged;
begin
BaseWndProc(CM_TEXTCHANGED);
end;
procedure TJvExCustomControlBar.FontChanged;
begin
BaseWndProc(CM_FONTCHANGED);
end;
procedure TJvExCustomControlBar.ColorChanged;
begin
BaseWndProc(CM_COLORCHANGED);
end;
procedure TJvExCustomControlBar.ParentFontChanged;
begin
BaseWndProc(CM_PARENTFONTCHANGED);
end;
procedure TJvExCustomControlBar.ParentColorChanged;
begin
BaseWndProc(CM_PARENTCOLORCHANGED);
if Assigned(OnParentColorChange) then
OnParentColorChange(Self);
end;
procedure TJvExCustomControlBar.ParentShowHintChanged;
begin
BaseWndProc(CM_PARENTSHOWHINTCHANGED);
end;
function TJvExCustomControlBar.WantKey(Key: Integer; Shift: TShiftState; const KeyText: WideString): Boolean;
begin
Result := BaseWndProc(CM_DIALOGCHAR, Word(Key), ShiftStateToKeyData(Shift)) <> 0;
end;
function TJvExCustomControlBar.HitTest(X, Y: Integer): Boolean;
begin
Result := BaseWndProc(CM_HITTEST, 0, SmallPointToLong(PointToSmallPoint(Point(X, Y)))) <> 0;
end;
function TJvExCustomControlBar.HintShow(var HintInfo: THintInfo): Boolean;
begin
GetHintColor(HintInfo, Self, FHintColor);
if FHintWindowClass <> nil then
HintInfo.HintWindowClass := FHintWindowClass;
Result := BaseWndProcEx(CM_HINTSHOW, 0, HintInfo) <> 0;
end;
procedure TJvExCustomControlBar.MouseEnter(AControl: TControl);
begin
FMouseOver := True;
{$IFDEF VCL}
if Assigned(FOnMouseEnter) then
FOnMouseEnter(Self);
{$ENDIF VCL}
BaseWndProc(CM_MOUSEENTER, 0, AControl);
end;
procedure TJvExCustomControlBar.MouseLeave(AControl: TControl);
begin
FMouseOver := False;
BaseWndProc(CM_MOUSELEAVE, 0, AControl);
{$IFDEF VCL}
if Assigned(FOnMouseLeave) then
FOnMouseLeave(Self);
{$ENDIF VCL}
end;
{$IFNDEF CLR}
procedure TJvExCustomControlBar.FocusChanged(AControl: TWinControl);
begin
BaseWndProc(CM_FOCUSCHANGED, 0, AControl);
end;
{$ENDIF !CLR}
{$IFDEF COMPILER5}
{$IFNDEF HASAUTOSIZE}
procedure TJvExCustomControlBar.CMSetAutoSize(var Msg: TMessage);
begin
SetAutoSize(Msg.WParam <> 0);
end;
procedure TJvExCustomControlBar.SetAutoSize(Value: Boolean);
begin
TOpenControl_SetAutoSize(Self, Value);
end;
{$ENDIF !HASAUTOSIZE}
{$ENDIF COMPILER5}
procedure TJvExCustomControlBar.BoundsChanged;
begin
end;
procedure TJvExCustomControlBar.CursorChanged;
begin
BaseWndProc(CM_CURSORCHANGED);
end;
procedure TJvExCustomControlBar.ShowingChanged;
begin
BaseWndProc(CM_SHOWINGCHANGED);
end;
procedure TJvExCustomControlBar.ShowHintChanged;
begin
BaseWndProc(CM_SHOWHINTCHANGED);
end;
{$IFNDEF CLR}
{ VCL sends CM_CONTROLLISTCHANGE and CM_CONTROLCHANGE in a different order than
the CLX methods are used. So we must correct it by evaluating "Inserting". }
procedure TJvExCustomControlBar.ControlsListChanging(Control: TControl; Inserting: Boolean);
begin
if Inserting then
BaseWndProc(CM_CONTROLLISTCHANGE, Integer(Control), Integer(Inserting))
else
BaseWndProc(CM_CONTROLCHANGE, Integer(Control), Integer(Inserting));
end;
procedure TJvExCustomControlBar.ControlsListChanged(Control: TControl; Inserting: Boolean);
begin
if not Inserting then
BaseWndProc(CM_CONTROLLISTCHANGE, Integer(Control), Integer(Inserting))
else
BaseWndProc(CM_CONTROLCHANGE, Integer(Control), Integer(Inserting));
end;
{$ENDIF !CLR}
procedure TJvExCustomControlBar.GetDlgCode(var Code: TDlgCodes);
begin
end;
procedure TJvExCustomControlBar.FocusSet(PrevWnd: THandle);
begin
BaseWndProc(WM_SETFOCUS, Integer(PrevWnd), 0);
end;
procedure TJvExCustomControlBar.FocusKilled(NextWnd: THandle);
begin
BaseWndProc(WM_KILLFOCUS, Integer(NextWnd), 0);
end;
function TJvExCustomControlBar.DoEraseBackground(Canvas: TCanvas; Param: Integer): Boolean;
begin
Result := BaseWndProc(WM_ERASEBKGND, Canvas.Handle, Param) <> 0;
end;
{$IFDEF JVCLThemesEnabledD56}
function TJvExCustomControlBar.GetParentBackground: Boolean;
begin
Result := JvThemes.GetParentBackground(Self);
end;
procedure TJvExCustomControlBar.SetParentBackground(Value: Boolean);
begin
JvThemes.SetParentBackground(Self, Value);
end;
{$ENDIF JVCLThemesEnabledD56}
procedure TJvExCustomControlBar.WndProc(var Msg: TMessage);
var
IdSaveDC: Integer;
DlgCodes: TDlgCodes;
Canvas: TCanvas;
{$IFDEF CLR}
AHintInfo: THintInfo;
{$ENDIF CLR}
begin
if not DispatchIsDesignMsg(Self, Msg) then
begin
case Msg.Msg of
CM_DENYSUBCLASSING:
{$IFNDEF CLR}
Msg.Result := Ord(GetInterfaceEntry(IJvDenySubClassing) <> nil);
{$ELSE}
Msg.Result := Integer(Supports(Self, IJvDenySubClassing));
{$ENDIF !CLR}
CM_DIALOGCHAR:
with TCMDialogChar{$IFDEF CLR}.Create{$ENDIF}(Msg) do
Result := Ord(WantKey(CharCode, KeyDataToShiftState(KeyData), WideChar(CharCode)));
CM_HINTSHOW:
{$IFNDEF CLR}
with TCMHintShow(Msg) do
Result := Integer(HintShow(HintInfo^));
{$ELSE}
with TCMHintShow.Create(Msg) do
begin
AHintInfo := HintInfo;
Result := Integer(HintShow(AHintInfo));
HintInfo := AHintInfo;
end;
{$ENDIF !CLR}
CM_HITTEST:
with TCMHitTest{$IFDEF CLR}.Create{$ENDIF}(Msg) do
Result := Integer(HitTest(XPos, YPos));
CM_MOUSEENTER:
MouseEnter({$IFDEF CLR}nil{$ELSE}TControl(Msg.LParam){$ENDIF});
CM_MOUSELEAVE:
MouseLeave({$IFDEF CLR}nil{$ELSE}TControl(Msg.LParam){$ENDIF});
CM_VISIBLECHANGED:
VisibleChanged;
CM_ENABLEDCHANGED:
EnabledChanged;
CM_TEXTCHANGED:
TextChanged;
CM_FONTCHANGED:
FontChanged;
CM_COLORCHANGED:
ColorChanged;
{$IFNDEF CLR}
CM_FOCUSCHANGED:
FocusChanged(TWinControl(Msg.LParam));
{$ENDIF !CLR}
CM_PARENTFONTCHANGED:
ParentFontChanged;
CM_PARENTCOLORCHANGED:
ParentColorChanged;
CM_PARENTSHOWHINTCHANGED:
ParentShowHintChanged;
CM_CURSORCHANGED:
CursorChanged;
CM_SHOWINGCHANGED:
ShowingChanged;
CM_SHOWHINTCHANGED:
ShowHintChanged;
{$IFNDEF CLR}
CM_CONTROLLISTCHANGE:
if Msg.LParam <> 0 then
ControlsListChanging(TControl(Msg.WParam), True)
else
ControlsListChanged(TControl(Msg.WParam), False);
CM_CONTROLCHANGE:
if Msg.LParam = 0 then
ControlsListChanging(TControl(Msg.WParam), False)
else
ControlsListChanged(TControl(Msg.WParam), True);
{$ENDIF !CLR}
WM_SETFOCUS:
FocusSet(THandle(Msg.WParam));
WM_KILLFOCUS:
FocusKilled(THandle(Msg.WParam));
WM_SIZE:
begin
inherited WndProc(Msg);
BoundsChanged;
end;
WM_ERASEBKGND:
begin
IdSaveDC := SaveDC(HDC(Msg.WParam)); // protect DC against Stock-Objects from Canvas
Canvas := TCanvas.Create;
try
Canvas.Handle := HDC(Msg.WParam);
Msg.Result := Ord(DoEraseBackground(Canvas, Msg.LParam));
finally
Canvas.Handle := 0;
Canvas.Free;
RestoreDC(HDC(Msg.WParam), IdSaveDC);
end;
end;
WM_PRINTCLIENT, WM_PRINT: // VCL bug fix
begin
IdSaveDC := SaveDC(HDC(Msg.WParam)); // protect DC against changes
try
inherited WndProc(Msg);
finally
RestoreDC(HDC(Msg.WParam), IdSaveDC);
end;
end;
WM_GETDLGCODE:
begin
inherited WndProc(Msg);
DlgCodes := [dcNative] + DlgcToDlgCodes(Msg.Result);
GetDlgCode(DlgCodes);
if not (dcNative in DlgCodes) then
Msg.Result := DlgCodesToDlgc(DlgCodes);
end;
else
inherited WndProc(Msg);
end;
if DotNetHighlighting then
HandleDotNetHighlighting(Self, Msg, MouseOver, Color);
end;
end;
//============================================================================
constructor TJvExControlBar.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
FHintColor := clDefault;
end;
function TJvExControlBar.BaseWndProc(Msg: Integer; WParam: Integer = 0; LParam: Longint = 0): Integer;
var
Mesg: TMessage;
begin
Mesg := CreateWMMessage(Msg, WParam, LParam);
inherited WndProc(Mesg);
Result := Mesg.Result;
end;
function TJvExControlBar.BaseWndProc(Msg: Integer; WParam: Integer; LParam: TControl): Integer;
var
Mesg: TMessage;
begin
Mesg := CreateWMMessage(Msg, WParam, LParam);
inherited WndProc(Mesg);
Result := Mesg.Result;
end;
function TJvExControlBar.BaseWndProcEx(Msg: Integer; WParam: Integer; var LParam): Integer;
var
Mesg: TStructPtrMessage;
begin
Mesg := TStructPtrMessage.Create(Msg, WParam, LParam);
try
inherited WndProc(Mesg.Msg);
finally
Result := Mesg.Msg.Result;
Mesg.Free;
end;
end;
procedure TJvExControlBar.VisibleChanged;
begin
BaseWndProc(CM_VISIBLECHANGED);
end;
procedure TJvExControlBar.EnabledChanged;
begin
BaseWndProc(CM_ENABLEDCHANGED);
end;
procedure TJvExControlBar.TextChanged;
begin
BaseWndProc(CM_TEXTCHANGED);
end;
procedure TJvExControlBar.FontChanged;
begin
BaseWndProc(CM_FONTCHANGED);
end;
procedure TJvExControlBar.ColorChanged;
begin
BaseWndProc(CM_COLORCHANGED);
end;
procedure TJvExControlBar.ParentFontChanged;
begin
BaseWndProc(CM_PARENTFONTCHANGED);
end;
procedure TJvExControlBar.ParentColorChanged;
begin
BaseWndProc(CM_PARENTCOLORCHANGED);
if Assigned(OnParentColorChange) then
OnParentColorChange(Self);
end;
procedure TJvExControlBar.ParentShowHintChanged;
begin
BaseWndProc(CM_PARENTSHOWHINTCHANGED);
end;
function TJvExControlBar.WantKey(Key: Integer; Shift: TShiftState; const KeyText: WideString): Boolean;
begin
Result := BaseWndProc(CM_DIALOGCHAR, Word(Key), ShiftStateToKeyData(Shift)) <> 0;
end;
function TJvExControlBar.HitTest(X, Y: Integer): Boolean;
begin
Result := BaseWndProc(CM_HITTEST, 0, SmallPointToLong(PointToSmallPoint(Point(X, Y)))) <> 0;
end;
function TJvExControlBar.HintShow(var HintInfo: THintInfo): Boolean;
begin
GetHintColor(HintInfo, Self, FHintColor);
if FHintWindowClass <> nil then
HintInfo.HintWindowClass := FHintWindowClass;
Result := BaseWndProcEx(CM_HINTSHOW, 0, HintInfo) <> 0;
end;
procedure TJvExControlBar.MouseEnter(AControl: TControl);
begin
FMouseOver := True;
{$IFDEF VCL}
if Assigned(FOnMouseEnter) then
FOnMouseEnter(Self);
{$ENDIF VCL}
BaseWndProc(CM_MOUSEENTER, 0, AControl);
end;
procedure TJvExControlBar.MouseLeave(AControl: TControl);
begin
FMouseOver := False;
BaseWndProc(CM_MOUSELEAVE, 0, AControl);
{$IFDEF VCL}
if Assigned(FOnMouseLeave) then
FOnMouseLeave(Self);
{$ENDIF VCL}
end;
{$IFNDEF CLR}
procedure TJvExControlBar.FocusChanged(AControl: TWinControl);
begin
BaseWndProc(CM_FOCUSCHANGED, 0, AControl);
end;
{$ENDIF !CLR}
{$IFDEF COMPILER5}
{$IFNDEF HASAUTOSIZE}
procedure TJvExControlBar.CMSetAutoSize(var Msg: TMessage);
begin
SetAutoSize(Msg.WParam <> 0);
end;
procedure TJvExControlBar.SetAutoSize(Value: Boolean);
begin
TOpenControl_SetAutoSize(Self, Value);
end;
{$ENDIF !HASAUTOSIZE}
{$ENDIF COMPILER5}
procedure TJvExControlBar.BoundsChanged;
begin
end;
procedure TJvExControlBar.CursorChanged;
begin
BaseWndProc(CM_CURSORCHANGED);
end;
procedure TJvExControlBar.ShowingChanged;
begin
BaseWndProc(CM_SHOWINGCHANGED);
end;
procedure TJvExControlBar.ShowHintChanged;
begin
BaseWndProc(CM_SHOWHINTCHANGED);
end;
{$IFNDEF CLR}
{ VCL sends CM_CONTROLLISTCHANGE and CM_CONTROLCHANGE in a different order than
the CLX methods are used. So we must correct it by evaluating "Inserting". }
procedure TJvExControlBar.ControlsListChanging(Control: TControl; Inserting: Boolean);
begin
if Inserting then
BaseWndProc(CM_CONTROLLISTCHANGE, Integer(Control), Integer(Inserting))
else
BaseWndProc(CM_CONTROLCHANGE, Integer(Control), Integer(Inserting));
end;
procedure TJvExControlBar.ControlsListChanged(Control: TControl; Inserting: Boolean);
begin
if not Inserting then
BaseWndProc(CM_CONTROLLISTCHANGE, Integer(Control), Integer(Inserting))
else
BaseWndProc(CM_CONTROLCHANGE, Integer(Control), Integer(Inserting));
end;
{$ENDIF !CLR}
procedure TJvExControlBar.GetDlgCode(var Code: TDlgCodes);
begin
end;
procedure TJvExControlBar.FocusSet(PrevWnd: THandle);
begin
BaseWndProc(WM_SETFOCUS, Integer(PrevWnd), 0);
end;
procedure TJvExControlBar.FocusKilled(NextWnd: THandle);
begin
BaseWndProc(WM_KILLFOCUS, Integer(NextWnd), 0);
end;
function TJvExControlBar.DoEraseBackground(Canvas: TCanvas; Param: Integer): Boolean;
begin
Result := BaseWndProc(WM_ERASEBKGND, Canvas.Handle, Param) <> 0;
end;
{$IFDEF JVCLThemesEnabledD56}
function TJvExControlBar.GetParentBackground: Boolean;
begin
Result := JvThemes.GetParentBackground(Self);
end;
procedure TJvExControlBar.SetParentBackground(Value: Boolean);
begin
JvThemes.SetParentBackground(Self, Value);
end;
{$ENDIF JVCLThemesEnabledD56}
procedure TJvExControlBar.WndProc(var Msg: TMessage);
var
IdSaveDC: Integer;
DlgCodes: TDlgCodes;
Canvas: TCanvas;
{$IFDEF CLR}
AHintInfo: THintInfo;
{$ENDIF CLR}
begin
if not DispatchIsDesignMsg(Self, Msg) then
begin
case Msg.Msg of
CM_DENYSUBCLASSING:
{$IFNDEF CLR}
Msg.Result := Ord(GetInterfaceEntry(IJvDenySubClassing) <> nil);
{$ELSE}
Msg.Result := Integer(Supports(Self, IJvDenySubClassing));
{$ENDIF !CLR}
CM_DIALOGCHAR:
with TCMDialogChar{$IFDEF CLR}.Create{$ENDIF}(Msg) do
Result := Ord(WantKey(CharCode, KeyDataToShiftState(KeyData), WideChar(CharCode)));
CM_HINTSHOW:
{$IFNDEF CLR}
with TCMHintShow(Msg) do
Result := Integer(HintShow(HintInfo^));
{$ELSE}
with TCMHintShow.Create(Msg) do
begin
AHintInfo := HintInfo;
Result := Integer(HintShow(AHintInfo));
HintInfo := AHintInfo;
end;
{$ENDIF !CLR}
CM_HITTEST:
with TCMHitTest{$IFDEF CLR}.Create{$ENDIF}(Msg) do
Result := Integer(HitTest(XPos, YPos));
CM_MOUSEENTER:
MouseEnter({$IFDEF CLR}nil{$ELSE}TControl(Msg.LParam){$ENDIF});
CM_MOUSELEAVE:
MouseLeave({$IFDEF CLR}nil{$ELSE}TControl(Msg.LParam){$ENDIF});
CM_VISIBLECHANGED:
VisibleChanged;
CM_ENABLEDCHANGED:
EnabledChanged;
CM_TEXTCHANGED:
TextChanged;
CM_FONTCHANGED:
FontChanged;
CM_COLORCHANGED:
ColorChanged;
{$IFNDEF CLR}
CM_FOCUSCHANGED:
FocusChanged(TWinControl(Msg.LParam));
{$ENDIF !CLR}
CM_PARENTFONTCHANGED:
ParentFontChanged;
CM_PARENTCOLORCHANGED:
ParentColorChanged;
CM_PARENTSHOWHINTCHANGED:
ParentShowHintChanged;
CM_CURSORCHANGED:
CursorChanged;
CM_SHOWINGCHANGED:
ShowingChanged;
CM_SHOWHINTCHANGED:
ShowHintChanged;
{$IFNDEF CLR}
CM_CONTROLLISTCHANGE:
if Msg.LParam <> 0 then
ControlsListChanging(TControl(Msg.WParam), True)
else
ControlsListChanged(TControl(Msg.WParam), False);
CM_CONTROLCHANGE:
if Msg.LParam = 0 then
ControlsListChanging(TControl(Msg.WParam), False)
else
ControlsListChanged(TControl(Msg.WParam), True);
{$ENDIF !CLR}
WM_SETFOCUS:
FocusSet(THandle(Msg.WParam));
WM_KILLFOCUS:
FocusKilled(THandle(Msg.WParam));
WM_SIZE:
begin
inherited WndProc(Msg);
BoundsChanged;
end;
WM_ERASEBKGND:
begin
IdSaveDC := SaveDC(HDC(Msg.WParam)); // protect DC against Stock-Objects from Canvas
Canvas := TCanvas.Create;
try
Canvas.Handle := HDC(Msg.WParam);
Msg.Result := Ord(DoEraseBackground(Canvas, Msg.LParam));
finally
Canvas.Handle := 0;
Canvas.Free;
RestoreDC(HDC(Msg.WParam), IdSaveDC);
end;
end;
WM_PRINTCLIENT, WM_PRINT: // VCL bug fix
begin
IdSaveDC := SaveDC(HDC(Msg.WParam)); // protect DC against changes
try
inherited WndProc(Msg);
finally
RestoreDC(HDC(Msg.WParam), IdSaveDC);
end;
end;
WM_GETDLGCODE:
begin
inherited WndProc(Msg);
DlgCodes := [dcNative] + DlgcToDlgCodes(Msg.Result);
GetDlgCode(DlgCodes);
if not (dcNative in DlgCodes) then
Msg.Result := DlgCodesToDlgc(DlgCodes);
end;
else
inherited WndProc(Msg);
end;
if DotNetHighlighting then
HandleDotNetHighlighting(Self, Msg, MouseOver, Color);
end;
end;
//============================================================================
constructor TJvExPanel.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
FHintColor := clDefault;
end;
function TJvExPanel.BaseWndProc(Msg: Integer; WParam: Integer = 0; LParam: Longint = 0): Integer;
var
Mesg: TMessage;
begin
Mesg := CreateWMMessage(Msg, WParam, LParam);
inherited WndProc(Mesg);
Result := Mesg.Result;
end;
function TJvExPanel.BaseWndProc(Msg: Integer; WParam: Integer; LParam: TControl): Integer;
var
Mesg: TMessage;
begin
Mesg := CreateWMMessage(Msg, WParam, LParam);
inherited WndProc(Mesg);
Result := Mesg.Result;
end;
function TJvExPanel.BaseWndProcEx(Msg: Integer; WParam: Integer; var LParam): Integer;
var
Mesg: TStructPtrMessage;
begin
Mesg := TStructPtrMessage.Create(Msg, WParam, LParam);
try
inherited WndProc(Mesg.Msg);
finally
Result := Mesg.Msg.Result;
Mesg.Free;
end;
end;
procedure TJvExPanel.VisibleChanged;
begin
BaseWndProc(CM_VISIBLECHANGED);
end;
procedure TJvExPanel.EnabledChanged;
begin
BaseWndProc(CM_ENABLEDCHANGED);
end;
procedure TJvExPanel.TextChanged;
begin
BaseWndProc(CM_TEXTCHANGED);
end;
procedure TJvExPanel.FontChanged;
begin
BaseWndProc(CM_FONTCHANGED);
end;
procedure TJvExPanel.ColorChanged;
begin
BaseWndProc(CM_COLORCHANGED);
end;
procedure TJvExPanel.ParentFontChanged;
begin
BaseWndProc(CM_PARENTFONTCHANGED);
end;
procedure TJvExPanel.ParentColorChanged;
begin
BaseWndProc(CM_PARENTCOLORCHANGED);
if Assigned(OnParentColorChange) then
OnParentColorChange(Self);
end;
procedure TJvExPanel.ParentShowHintChanged;
begin
BaseWndProc(CM_PARENTSHOWHINTCHANGED);
end;
function TJvExPanel.WantKey(Key: Integer; Shift: TShiftState; const KeyText: WideString): Boolean;
begin
Result := BaseWndProc(CM_DIALOGCHAR, Word(Key), ShiftStateToKeyData(Shift)) <> 0;
end;
function TJvExPanel.HitTest(X, Y: Integer): Boolean;
begin
Result := BaseWndProc(CM_HITTEST, 0, SmallPointToLong(PointToSmallPoint(Point(X, Y)))) <> 0;
end;
function TJvExPanel.HintShow(var HintInfo: THintInfo): Boolean;
begin
GetHintColor(HintInfo, Self, FHintColor);
if FHintWindowClass <> nil then
HintInfo.HintWindowClass := FHintWindowClass;
Result := BaseWndProcEx(CM_HINTSHOW, 0, HintInfo) <> 0;
end;
procedure TJvExPanel.MouseEnter(AControl: TControl);
begin
FMouseOver := True;
{$IFDEF VCL}
if Assigned(FOnMouseEnter) then
FOnMouseEnter(Self);
{$ENDIF VCL}
BaseWndProc(CM_MOUSEENTER, 0, AControl);
end;
procedure TJvExPanel.MouseLeave(AControl: TControl);
begin
FMouseOver := False;
BaseWndProc(CM_MOUSELEAVE, 0, AControl);
{$IFDEF VCL}
if Assigned(FOnMouseLeave) then
FOnMouseLeave(Self);
{$ENDIF VCL}
end;
{$IFNDEF CLR}
procedure TJvExPanel.FocusChanged(AControl: TWinControl);
begin
BaseWndProc(CM_FOCUSCHANGED, 0, AControl);
end;
{$ENDIF !CLR}
{$IFDEF COMPILER5}
{$IFNDEF HASAUTOSIZE}
procedure TJvExPanel.CMSetAutoSize(var Msg: TMessage);
begin
SetAutoSize(Msg.WParam <> 0);
end;
procedure TJvExPanel.SetAutoSize(Value: Boolean);
begin
TOpenControl_SetAutoSize(Self, Value);
end;
{$ENDIF !HASAUTOSIZE}
{$ENDIF COMPILER5}
procedure TJvExPanel.BoundsChanged;
begin
end;
procedure TJvExPanel.CursorChanged;
begin
BaseWndProc(CM_CURSORCHANGED);
end;
procedure TJvExPanel.ShowingChanged;
begin
BaseWndProc(CM_SHOWINGCHANGED);
end;
procedure TJvExPanel.ShowHintChanged;
begin
BaseWndProc(CM_SHOWHINTCHANGED);
end;
{$IFNDEF CLR}
{ VCL sends CM_CONTROLLISTCHANGE and CM_CONTROLCHANGE in a different order than
the CLX methods are used. So we must correct it by evaluating "Inserting". }
procedure TJvExPanel.ControlsListChanging(Control: TControl; Inserting: Boolean);
begin
if Inserting then
BaseWndProc(CM_CONTROLLISTCHANGE, Integer(Control), Integer(Inserting))
else
BaseWndProc(CM_CONTROLCHANGE, Integer(Control), Integer(Inserting));
end;
procedure TJvExPanel.ControlsListChanged(Control: TControl; Inserting: Boolean);
begin
if not Inserting then
BaseWndProc(CM_CONTROLLISTCHANGE, Integer(Control), Integer(Inserting))
else
BaseWndProc(CM_CONTROLCHANGE, Integer(Control), Integer(Inserting));
end;
{$ENDIF !CLR}
procedure TJvExPanel.GetDlgCode(var Code: TDlgCodes);
begin
end;
procedure TJvExPanel.FocusSet(PrevWnd: THandle);
begin
BaseWndProc(WM_SETFOCUS, Integer(PrevWnd), 0);
end;
procedure TJvExPanel.FocusKilled(NextWnd: THandle);
begin
BaseWndProc(WM_KILLFOCUS, Integer(NextWnd), 0);
end;
function TJvExPanel.DoEraseBackground(Canvas: TCanvas; Param: Integer): Boolean;
begin
Result := BaseWndProc(WM_ERASEBKGND, Canvas.Handle, Param) <> 0;
end;
{$IFDEF JVCLThemesEnabledD56}
function TJvExPanel.GetParentBackground: Boolean;
begin
Result := JvThemes.GetParentBackground(Self);
end;
procedure TJvExPanel.SetParentBackground(Value: Boolean);
begin
JvThemes.SetParentBackground(Self, Value);
end;
{$ENDIF JVCLThemesEnabledD56}
procedure TJvExPanel.WndProc(var Msg: TMessage);
var
IdSaveDC: Integer;
DlgCodes: TDlgCodes;
Canvas: TCanvas;
{$IFDEF CLR}
AHintInfo: THintInfo;
{$ENDIF CLR}
begin
if not DispatchIsDesignMsg(Self, Msg) then
begin
case Msg.Msg of
CM_DENYSUBCLASSING:
{$IFNDEF CLR}
Msg.Result := Ord(GetInterfaceEntry(IJvDenySubClassing) <> nil);
{$ELSE}
Msg.Result := Integer(Supports(Self, IJvDenySubClassing));
{$ENDIF !CLR}
CM_DIALOGCHAR:
with TCMDialogChar{$IFDEF CLR}.Create{$ENDIF}(Msg) do
Result := Ord(WantKey(CharCode, KeyDataToShiftState(KeyData), WideChar(CharCode)));
CM_HINTSHOW:
{$IFNDEF CLR}
with TCMHintShow(Msg) do
Result := Integer(HintShow(HintInfo^));
{$ELSE}
with TCMHintShow.Create(Msg) do
begin
AHintInfo := HintInfo;
Result := Integer(HintShow(AHintInfo));
HintInfo := AHintInfo;
end;
{$ENDIF !CLR}
CM_HITTEST:
with TCMHitTest{$IFDEF CLR}.Create{$ENDIF}(Msg) do
Result := Integer(HitTest(XPos, YPos));
CM_MOUSEENTER:
MouseEnter({$IFDEF CLR}nil{$ELSE}TControl(Msg.LParam){$ENDIF});
CM_MOUSELEAVE:
MouseLeave({$IFDEF CLR}nil{$ELSE}TControl(Msg.LParam){$ENDIF});
CM_VISIBLECHANGED:
VisibleChanged;
CM_ENABLEDCHANGED:
EnabledChanged;
CM_TEXTCHANGED:
TextChanged;
CM_FONTCHANGED:
FontChanged;
CM_COLORCHANGED:
ColorChanged;
{$IFNDEF CLR}
CM_FOCUSCHANGED:
FocusChanged(TWinControl(Msg.LParam));
{$ENDIF !CLR}
CM_PARENTFONTCHANGED:
ParentFontChanged;
CM_PARENTCOLORCHANGED:
ParentColorChanged;
CM_PARENTSHOWHINTCHANGED:
ParentShowHintChanged;
CM_CURSORCHANGED:
CursorChanged;
CM_SHOWINGCHANGED:
ShowingChanged;
CM_SHOWHINTCHANGED:
ShowHintChanged;
{$IFNDEF CLR}
CM_CONTROLLISTCHANGE:
if Msg.LParam <> 0 then
ControlsListChanging(TControl(Msg.WParam), True)
else
ControlsListChanged(TControl(Msg.WParam), False);
CM_CONTROLCHANGE:
if Msg.LParam = 0 then
ControlsListChanging(TControl(Msg.WParam), False)
else
ControlsListChanged(TControl(Msg.WParam), True);
{$ENDIF !CLR}
WM_SETFOCUS:
FocusSet(THandle(Msg.WParam));
WM_KILLFOCUS:
FocusKilled(THandle(Msg.WParam));
WM_SIZE:
begin
inherited WndProc(Msg);
BoundsChanged;
end;
WM_ERASEBKGND:
begin
IdSaveDC := SaveDC(HDC(Msg.WParam)); // protect DC against Stock-Objects from Canvas
Canvas := TCanvas.Create;
try
Canvas.Handle := HDC(Msg.WParam);
Msg.Result := Ord(DoEraseBackground(Canvas, Msg.LParam));
finally
Canvas.Handle := 0;
Canvas.Free;
RestoreDC(HDC(Msg.WParam), IdSaveDC);
end;
end;
WM_PRINTCLIENT, WM_PRINT: // VCL bug fix
begin
IdSaveDC := SaveDC(HDC(Msg.WParam)); // protect DC against changes
try
inherited WndProc(Msg);
finally
RestoreDC(HDC(Msg.WParam), IdSaveDC);
end;
end;
WM_GETDLGCODE:
begin
inherited WndProc(Msg);
DlgCodes := [dcNative] + DlgcToDlgCodes(Msg.Result);
GetDlgCode(DlgCodes);
if not (dcNative in DlgCodes) then
Msg.Result := DlgCodesToDlgc(DlgCodes);
end;
else
inherited WndProc(Msg);
end;
if DotNetHighlighting then
HandleDotNetHighlighting(Self, Msg, MouseOver, Color);
end;
end;
//============================================================================
constructor TJvExRadioGroup.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
FHintColor := clDefault;
end;
function TJvExRadioGroup.BaseWndProc(Msg: Integer; WParam: Integer = 0; LParam: Longint = 0): Integer;
var
Mesg: TMessage;
begin
Mesg := CreateWMMessage(Msg, WParam, LParam);
inherited WndProc(Mesg);
Result := Mesg.Result;
end;
function TJvExRadioGroup.BaseWndProc(Msg: Integer; WParam: Integer; LParam: TControl): Integer;
var
Mesg: TMessage;
begin
Mesg := CreateWMMessage(Msg, WParam, LParam);
inherited WndProc(Mesg);
Result := Mesg.Result;
end;
function TJvExRadioGroup.BaseWndProcEx(Msg: Integer; WParam: Integer; var LParam): Integer;
var
Mesg: TStructPtrMessage;
begin
Mesg := TStructPtrMessage.Create(Msg, WParam, LParam);
try
inherited WndProc(Mesg.Msg);
finally
Result := Mesg.Msg.Result;
Mesg.Free;
end;
end;
procedure TJvExRadioGroup.VisibleChanged;
begin
BaseWndProc(CM_VISIBLECHANGED);
end;
procedure TJvExRadioGroup.EnabledChanged;
begin
BaseWndProc(CM_ENABLEDCHANGED);
end;
procedure TJvExRadioGroup.TextChanged;
begin
BaseWndProc(CM_TEXTCHANGED);
end;
procedure TJvExRadioGroup.FontChanged;
begin
BaseWndProc(CM_FONTCHANGED);
end;
procedure TJvExRadioGroup.ColorChanged;
begin
BaseWndProc(CM_COLORCHANGED);
end;
procedure TJvExRadioGroup.ParentFontChanged;
begin
BaseWndProc(CM_PARENTFONTCHANGED);
end;
procedure TJvExRadioGroup.ParentColorChanged;
begin
BaseWndProc(CM_PARENTCOLORCHANGED);
if Assigned(OnParentColorChange) then
OnParentColorChange(Self);
end;
procedure TJvExRadioGroup.ParentShowHintChanged;
begin
BaseWndProc(CM_PARENTSHOWHINTCHANGED);
end;
function TJvExRadioGroup.WantKey(Key: Integer; Shift: TShiftState; const KeyText: WideString): Boolean;
begin
Result := BaseWndProc(CM_DIALOGCHAR, Word(Key), ShiftStateToKeyData(Shift)) <> 0;
end;
function TJvExRadioGroup.HitTest(X, Y: Integer): Boolean;
begin
Result := BaseWndProc(CM_HITTEST, 0, SmallPointToLong(PointToSmallPoint(Point(X, Y)))) <> 0;
end;
function TJvExRadioGroup.HintShow(var HintInfo: THintInfo): Boolean;
begin
GetHintColor(HintInfo, Self, FHintColor);
if FHintWindowClass <> nil then
HintInfo.HintWindowClass := FHintWindowClass;
Result := BaseWndProcEx(CM_HINTSHOW, 0, HintInfo) <> 0;
end;
procedure TJvExRadioGroup.MouseEnter(AControl: TControl);
begin
FMouseOver := True;
{$IFDEF VCL}
if Assigned(FOnMouseEnter) then
FOnMouseEnter(Self);
{$ENDIF VCL}
BaseWndProc(CM_MOUSEENTER, 0, AControl);
end;
procedure TJvExRadioGroup.MouseLeave(AControl: TControl);
begin
FMouseOver := False;
BaseWndProc(CM_MOUSELEAVE, 0, AControl);
{$IFDEF VCL}
if Assigned(FOnMouseLeave) then
FOnMouseLeave(Self);
{$ENDIF VCL}
end;
{$IFNDEF CLR}
procedure TJvExRadioGroup.FocusChanged(AControl: TWinControl);
begin
BaseWndProc(CM_FOCUSCHANGED, 0, AControl);
end;
{$ENDIF !CLR}
{$IFDEF COMPILER5}
{$IFNDEF HASAUTOSIZE}
procedure TJvExRadioGroup.CMSetAutoSize(var Msg: TMessage);
begin
SetAutoSize(Msg.WParam <> 0);
end;
procedure TJvExRadioGroup.SetAutoSize(Value: Boolean);
begin
TOpenControl_SetAutoSize(Self, Value);
end;
{$ENDIF !HASAUTOSIZE}
{$ENDIF COMPILER5}
procedure TJvExRadioGroup.BoundsChanged;
begin
end;
procedure TJvExRadioGroup.CursorChanged;
begin
BaseWndProc(CM_CURSORCHANGED);
end;
procedure TJvExRadioGroup.ShowingChanged;
begin
BaseWndProc(CM_SHOWINGCHANGED);
end;
procedure TJvExRadioGroup.ShowHintChanged;
begin
BaseWndProc(CM_SHOWHINTCHANGED);
end;
{$IFNDEF CLR}
{ VCL sends CM_CONTROLLISTCHANGE and CM_CONTROLCHANGE in a different order than
the CLX methods are used. So we must correct it by evaluating "Inserting". }
procedure TJvExRadioGroup.ControlsListChanging(Control: TControl; Inserting: Boolean);
begin
if Inserting then
BaseWndProc(CM_CONTROLLISTCHANGE, Integer(Control), Integer(Inserting))
else
BaseWndProc(CM_CONTROLCHANGE, Integer(Control), Integer(Inserting));
end;
procedure TJvExRadioGroup.ControlsListChanged(Control: TControl; Inserting: Boolean);
begin
if not Inserting then
BaseWndProc(CM_CONTROLLISTCHANGE, Integer(Control), Integer(Inserting))
else
BaseWndProc(CM_CONTROLCHANGE, Integer(Control), Integer(Inserting));
end;
{$ENDIF !CLR}
procedure TJvExRadioGroup.GetDlgCode(var Code: TDlgCodes);
begin
end;
procedure TJvExRadioGroup.FocusSet(PrevWnd: THandle);
begin
BaseWndProc(WM_SETFOCUS, Integer(PrevWnd), 0);
end;
procedure TJvExRadioGroup.FocusKilled(NextWnd: THandle);
begin
BaseWndProc(WM_KILLFOCUS, Integer(NextWnd), 0);
end;
function TJvExRadioGroup.DoEraseBackground(Canvas: TCanvas; Param: Integer): Boolean;
begin
Result := BaseWndProc(WM_ERASEBKGND, Canvas.Handle, Param) <> 0;
end;
{$IFDEF JVCLThemesEnabledD56}
function TJvExRadioGroup.GetParentBackground: Boolean;
begin
Result := JvThemes.GetParentBackground(Self);
end;
procedure TJvExRadioGroup.SetParentBackground(Value: Boolean);
begin
JvThemes.SetParentBackground(Self, Value);
end;
{$ENDIF JVCLThemesEnabledD56}
procedure TJvExRadioGroup.WndProc(var Msg: TMessage);
var
IdSaveDC: Integer;
DlgCodes: TDlgCodes;
Canvas: TCanvas;
{$IFDEF CLR}
AHintInfo: THintInfo;
{$ENDIF CLR}
begin
if not DispatchIsDesignMsg(Self, Msg) then
begin
case Msg.Msg of
CM_DENYSUBCLASSING:
{$IFNDEF CLR}
Msg.Result := Ord(GetInterfaceEntry(IJvDenySubClassing) <> nil);
{$ELSE}
Msg.Result := Integer(Supports(Self, IJvDenySubClassing));
{$ENDIF !CLR}
CM_DIALOGCHAR:
with TCMDialogChar{$IFDEF CLR}.Create{$ENDIF}(Msg) do
Result := Ord(WantKey(CharCode, KeyDataToShiftState(KeyData), WideChar(CharCode)));
CM_HINTSHOW:
{$IFNDEF CLR}
with TCMHintShow(Msg) do
Result := Integer(HintShow(HintInfo^));
{$ELSE}
with TCMHintShow.Create(Msg) do
begin
AHintInfo := HintInfo;
Result := Integer(HintShow(AHintInfo));
HintInfo := AHintInfo;
end;
{$ENDIF !CLR}
CM_HITTEST:
with TCMHitTest{$IFDEF CLR}.Create{$ENDIF}(Msg) do
Result := Integer(HitTest(XPos, YPos));
CM_MOUSEENTER:
MouseEnter({$IFDEF CLR}nil{$ELSE}TControl(Msg.LParam){$ENDIF});
CM_MOUSELEAVE:
MouseLeave({$IFDEF CLR}nil{$ELSE}TControl(Msg.LParam){$ENDIF});
CM_VISIBLECHANGED:
VisibleChanged;
CM_ENABLEDCHANGED:
EnabledChanged;
CM_TEXTCHANGED:
TextChanged;
CM_FONTCHANGED:
FontChanged;
CM_COLORCHANGED:
ColorChanged;
{$IFNDEF CLR}
CM_FOCUSCHANGED:
FocusChanged(TWinControl(Msg.LParam));
{$ENDIF !CLR}
CM_PARENTFONTCHANGED:
ParentFontChanged;
CM_PARENTCOLORCHANGED:
ParentColorChanged;
CM_PARENTSHOWHINTCHANGED:
ParentShowHintChanged;
CM_CURSORCHANGED:
CursorChanged;
CM_SHOWINGCHANGED:
ShowingChanged;
CM_SHOWHINTCHANGED:
ShowHintChanged;
{$IFNDEF CLR}
CM_CONTROLLISTCHANGE:
if Msg.LParam <> 0 then
ControlsListChanging(TControl(Msg.WParam), True)
else
ControlsListChanged(TControl(Msg.WParam), False);
CM_CONTROLCHANGE:
if Msg.LParam = 0 then
ControlsListChanging(TControl(Msg.WParam), False)
else
ControlsListChanged(TControl(Msg.WParam), True);
{$ENDIF !CLR}
WM_SETFOCUS:
FocusSet(THandle(Msg.WParam));
WM_KILLFOCUS:
FocusKilled(THandle(Msg.WParam));
WM_SIZE:
begin
inherited WndProc(Msg);
BoundsChanged;
end;
WM_ERASEBKGND:
begin
IdSaveDC := SaveDC(HDC(Msg.WParam)); // protect DC against Stock-Objects from Canvas
Canvas := TCanvas.Create;
try
Canvas.Handle := HDC(Msg.WParam);
Msg.Result := Ord(DoEraseBackground(Canvas, Msg.LParam));
finally
Canvas.Handle := 0;
Canvas.Free;
RestoreDC(HDC(Msg.WParam), IdSaveDC);
end;
end;
WM_PRINTCLIENT, WM_PRINT: // VCL bug fix
begin
IdSaveDC := SaveDC(HDC(Msg.WParam)); // protect DC against changes
try
inherited WndProc(Msg);
finally
RestoreDC(HDC(Msg.WParam), IdSaveDC);
end;
end;
WM_GETDLGCODE:
begin
inherited WndProc(Msg);
DlgCodes := [dcNative] + DlgcToDlgCodes(Msg.Result);
GetDlgCode(DlgCodes);
if not (dcNative in DlgCodes) then
Msg.Result := DlgCodesToDlgc(DlgCodes);
end;
else
inherited WndProc(Msg);
end;
if DotNetHighlighting then
HandleDotNetHighlighting(Self, Msg, MouseOver, Color);
end;
end;
//============================================================================
constructor TJvExPage.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
FHintColor := clDefault;
end;
function TJvExPage.BaseWndProc(Msg: Integer; WParam: Integer = 0; LParam: Longint = 0): Integer;
var
Mesg: TMessage;
begin
Mesg := CreateWMMessage(Msg, WParam, LParam);
inherited WndProc(Mesg);
Result := Mesg.Result;
end;
function TJvExPage.BaseWndProc(Msg: Integer; WParam: Integer; LParam: TControl): Integer;
var
Mesg: TMessage;
begin
Mesg := CreateWMMessage(Msg, WParam, LParam);
inherited WndProc(Mesg);
Result := Mesg.Result;
end;
function TJvExPage.BaseWndProcEx(Msg: Integer; WParam: Integer; var LParam): Integer;
var
Mesg: TStructPtrMessage;
begin
Mesg := TStructPtrMessage.Create(Msg, WParam, LParam);
try
inherited WndProc(Mesg.Msg);
finally
Result := Mesg.Msg.Result;
Mesg.Free;
end;
end;
procedure TJvExPage.VisibleChanged;
begin
BaseWndProc(CM_VISIBLECHANGED);
end;
procedure TJvExPage.EnabledChanged;
begin
BaseWndProc(CM_ENABLEDCHANGED);
end;
procedure TJvExPage.TextChanged;
begin
BaseWndProc(CM_TEXTCHANGED);
end;
procedure TJvExPage.FontChanged;
begin
BaseWndProc(CM_FONTCHANGED);
end;
procedure TJvExPage.ColorChanged;
begin
BaseWndProc(CM_COLORCHANGED);
end;
procedure TJvExPage.ParentFontChanged;
begin
BaseWndProc(CM_PARENTFONTCHANGED);
end;
procedure TJvExPage.ParentColorChanged;
begin
BaseWndProc(CM_PARENTCOLORCHANGED);
if Assigned(OnParentColorChange) then
OnParentColorChange(Self);
end;
procedure TJvExPage.ParentShowHintChanged;
begin
BaseWndProc(CM_PARENTSHOWHINTCHANGED);
end;
function TJvExPage.WantKey(Key: Integer; Shift: TShiftState; const KeyText: WideString): Boolean;
begin
Result := BaseWndProc(CM_DIALOGCHAR, Word(Key), ShiftStateToKeyData(Shift)) <> 0;
end;
function TJvExPage.HitTest(X, Y: Integer): Boolean;
begin
Result := BaseWndProc(CM_HITTEST, 0, SmallPointToLong(PointToSmallPoint(Point(X, Y)))) <> 0;
end;
function TJvExPage.HintShow(var HintInfo: THintInfo): Boolean;
begin
GetHintColor(HintInfo, Self, FHintColor);
if FHintWindowClass <> nil then
HintInfo.HintWindowClass := FHintWindowClass;
Result := BaseWndProcEx(CM_HINTSHOW, 0, HintInfo) <> 0;
end;
procedure TJvExPage.MouseEnter(AControl: TControl);
begin
FMouseOver := True;
{$IFDEF VCL}
if Assigned(FOnMouseEnter) then
FOnMouseEnter(Self);
{$ENDIF VCL}
BaseWndProc(CM_MOUSEENTER, 0, AControl);
end;
procedure TJvExPage.MouseLeave(AControl: TControl);
begin
FMouseOver := False;
BaseWndProc(CM_MOUSELEAVE, 0, AControl);
{$IFDEF VCL}
if Assigned(FOnMouseLeave) then
FOnMouseLeave(Self);
{$ENDIF VCL}
end;
{$IFNDEF CLR}
procedure TJvExPage.FocusChanged(AControl: TWinControl);
begin
BaseWndProc(CM_FOCUSCHANGED, 0, AControl);
end;
{$ENDIF !CLR}
{$IFDEF COMPILER5}
{$IFNDEF HASAUTOSIZE}
procedure TJvExPage.CMSetAutoSize(var Msg: TMessage);
begin
SetAutoSize(Msg.WParam <> 0);
end;
procedure TJvExPage.SetAutoSize(Value: Boolean);
begin
TOpenControl_SetAutoSize(Self, Value);
end;
{$ENDIF !HASAUTOSIZE}
{$ENDIF COMPILER5}
procedure TJvExPage.BoundsChanged;
begin
end;
procedure TJvExPage.CursorChanged;
begin
BaseWndProc(CM_CURSORCHANGED);
end;
procedure TJvExPage.ShowingChanged;
begin
BaseWndProc(CM_SHOWINGCHANGED);
end;
procedure TJvExPage.ShowHintChanged;
begin
BaseWndProc(CM_SHOWHINTCHANGED);
end;
{$IFNDEF CLR}
{ VCL sends CM_CONTROLLISTCHANGE and CM_CONTROLCHANGE in a different order than
the CLX methods are used. So we must correct it by evaluating "Inserting". }
procedure TJvExPage.ControlsListChanging(Control: TControl; Inserting: Boolean);
begin
if Inserting then
BaseWndProc(CM_CONTROLLISTCHANGE, Integer(Control), Integer(Inserting))
else
BaseWndProc(CM_CONTROLCHANGE, Integer(Control), Integer(Inserting));
end;
procedure TJvExPage.ControlsListChanged(Control: TControl; Inserting: Boolean);
begin
if not Inserting then
BaseWndProc(CM_CONTROLLISTCHANGE, Integer(Control), Integer(Inserting))
else
BaseWndProc(CM_CONTROLCHANGE, Integer(Control), Integer(Inserting));
end;
{$ENDIF !CLR}
procedure TJvExPage.GetDlgCode(var Code: TDlgCodes);
begin
end;
procedure TJvExPage.FocusSet(PrevWnd: THandle);
begin
BaseWndProc(WM_SETFOCUS, Integer(PrevWnd), 0);
end;
procedure TJvExPage.FocusKilled(NextWnd: THandle);
begin
BaseWndProc(WM_KILLFOCUS, Integer(NextWnd), 0);
end;
function TJvExPage.DoEraseBackground(Canvas: TCanvas; Param: Integer): Boolean;
begin
Result := BaseWndProc(WM_ERASEBKGND, Canvas.Handle, Param) <> 0;
end;
{$IFDEF JVCLThemesEnabledD56}
function TJvExPage.GetParentBackground: Boolean;
begin
Result := JvThemes.GetParentBackground(Self);
end;
procedure TJvExPage.SetParentBackground(Value: Boolean);
begin
JvThemes.SetParentBackground(Self, Value);
end;
{$ENDIF JVCLThemesEnabledD56}
procedure TJvExPage.WndProc(var Msg: TMessage);
var
IdSaveDC: Integer;
DlgCodes: TDlgCodes;
Canvas: TCanvas;
{$IFDEF CLR}
AHintInfo: THintInfo;
{$ENDIF CLR}
begin
if not DispatchIsDesignMsg(Self, Msg) then
begin
case Msg.Msg of
CM_DENYSUBCLASSING:
{$IFNDEF CLR}
Msg.Result := Ord(GetInterfaceEntry(IJvDenySubClassing) <> nil);
{$ELSE}
Msg.Result := Integer(Supports(Self, IJvDenySubClassing));
{$ENDIF !CLR}
CM_DIALOGCHAR:
with TCMDialogChar{$IFDEF CLR}.Create{$ENDIF}(Msg) do
Result := Ord(WantKey(CharCode, KeyDataToShiftState(KeyData), WideChar(CharCode)));
CM_HINTSHOW:
{$IFNDEF CLR}
with TCMHintShow(Msg) do
Result := Integer(HintShow(HintInfo^));
{$ELSE}
with TCMHintShow.Create(Msg) do
begin
AHintInfo := HintInfo;
Result := Integer(HintShow(AHintInfo));
HintInfo := AHintInfo;
end;
{$ENDIF !CLR}
CM_HITTEST:
with TCMHitTest{$IFDEF CLR}.Create{$ENDIF}(Msg) do
Result := Integer(HitTest(XPos, YPos));
CM_MOUSEENTER:
MouseEnter({$IFDEF CLR}nil{$ELSE}TControl(Msg.LParam){$ENDIF});
CM_MOUSELEAVE:
MouseLeave({$IFDEF CLR}nil{$ELSE}TControl(Msg.LParam){$ENDIF});
CM_VISIBLECHANGED:
VisibleChanged;
CM_ENABLEDCHANGED:
EnabledChanged;
CM_TEXTCHANGED:
TextChanged;
CM_FONTCHANGED:
FontChanged;
CM_COLORCHANGED:
ColorChanged;
{$IFNDEF CLR}
CM_FOCUSCHANGED:
FocusChanged(TWinControl(Msg.LParam));
{$ENDIF !CLR}
CM_PARENTFONTCHANGED:
ParentFontChanged;
CM_PARENTCOLORCHANGED:
ParentColorChanged;
CM_PARENTSHOWHINTCHANGED:
ParentShowHintChanged;
CM_CURSORCHANGED:
CursorChanged;
CM_SHOWINGCHANGED:
ShowingChanged;
CM_SHOWHINTCHANGED:
ShowHintChanged;
{$IFNDEF CLR}
CM_CONTROLLISTCHANGE:
if Msg.LParam <> 0 then
ControlsListChanging(TControl(Msg.WParam), True)
else
ControlsListChanged(TControl(Msg.WParam), False);
CM_CONTROLCHANGE:
if Msg.LParam = 0 then
ControlsListChanging(TControl(Msg.WParam), False)
else
ControlsListChanged(TControl(Msg.WParam), True);
{$ENDIF !CLR}
WM_SETFOCUS:
FocusSet(THandle(Msg.WParam));
WM_KILLFOCUS:
FocusKilled(THandle(Msg.WParam));
WM_SIZE:
begin
inherited WndProc(Msg);
BoundsChanged;
end;
WM_ERASEBKGND:
begin
IdSaveDC := SaveDC(HDC(Msg.WParam)); // protect DC against Stock-Objects from Canvas
Canvas := TCanvas.Create;
try
Canvas.Handle := HDC(Msg.WParam);
Msg.Result := Ord(DoEraseBackground(Canvas, Msg.LParam));
finally
Canvas.Handle := 0;
Canvas.Free;
RestoreDC(HDC(Msg.WParam), IdSaveDC);
end;
end;
WM_PRINTCLIENT, WM_PRINT: // VCL bug fix
begin
IdSaveDC := SaveDC(HDC(Msg.WParam)); // protect DC against changes
try
inherited WndProc(Msg);
finally
RestoreDC(HDC(Msg.WParam), IdSaveDC);
end;
end;
WM_GETDLGCODE:
begin
inherited WndProc(Msg);
DlgCodes := [dcNative] + DlgcToDlgCodes(Msg.Result);
GetDlgCode(DlgCodes);
if not (dcNative in DlgCodes) then
Msg.Result := DlgCodesToDlgc(DlgCodes);
end;
else
inherited WndProc(Msg);
end;
if DotNetHighlighting then
HandleDotNetHighlighting(Self, Msg, MouseOver, Color);
end;
end;
//============================================================================
constructor TJvExNotebook.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
FHintColor := clDefault;
end;
function TJvExNotebook.BaseWndProc(Msg: Integer; WParam: Integer = 0; LParam: Longint = 0): Integer;
var
Mesg: TMessage;
begin
Mesg := CreateWMMessage(Msg, WParam, LParam);
inherited WndProc(Mesg);
Result := Mesg.Result;
end;
function TJvExNotebook.BaseWndProc(Msg: Integer; WParam: Integer; LParam: TControl): Integer;
var
Mesg: TMessage;
begin
Mesg := CreateWMMessage(Msg, WParam, LParam);
inherited WndProc(Mesg);
Result := Mesg.Result;
end;
function TJvExNotebook.BaseWndProcEx(Msg: Integer; WParam: Integer; var LParam): Integer;
var
Mesg: TStructPtrMessage;
begin
Mesg := TStructPtrMessage.Create(Msg, WParam, LParam);
try
inherited WndProc(Mesg.Msg);
finally
Result := Mesg.Msg.Result;
Mesg.Free;
end;
end;
procedure TJvExNotebook.VisibleChanged;
begin
BaseWndProc(CM_VISIBLECHANGED);
end;
procedure TJvExNotebook.EnabledChanged;
begin
BaseWndProc(CM_ENABLEDCHANGED);
end;
procedure TJvExNotebook.TextChanged;
begin
BaseWndProc(CM_TEXTCHANGED);
end;
procedure TJvExNotebook.FontChanged;
begin
BaseWndProc(CM_FONTCHANGED);
end;
procedure TJvExNotebook.ColorChanged;
begin
BaseWndProc(CM_COLORCHANGED);
end;
procedure TJvExNotebook.ParentFontChanged;
begin
BaseWndProc(CM_PARENTFONTCHANGED);
end;
procedure TJvExNotebook.ParentColorChanged;
begin
BaseWndProc(CM_PARENTCOLORCHANGED);
if Assigned(OnParentColorChange) then
OnParentColorChange(Self);
end;
procedure TJvExNotebook.ParentShowHintChanged;
begin
BaseWndProc(CM_PARENTSHOWHINTCHANGED);
end;
function TJvExNotebook.WantKey(Key: Integer; Shift: TShiftState; const KeyText: WideString): Boolean;
begin
Result := BaseWndProc(CM_DIALOGCHAR, Word(Key), ShiftStateToKeyData(Shift)) <> 0;
end;
function TJvExNotebook.HitTest(X, Y: Integer): Boolean;
begin
Result := BaseWndProc(CM_HITTEST, 0, SmallPointToLong(PointToSmallPoint(Point(X, Y)))) <> 0;
end;
function TJvExNotebook.HintShow(var HintInfo: THintInfo): Boolean;
begin
GetHintColor(HintInfo, Self, FHintColor);
if FHintWindowClass <> nil then
HintInfo.HintWindowClass := FHintWindowClass;
Result := BaseWndProcEx(CM_HINTSHOW, 0, HintInfo) <> 0;
end;
procedure TJvExNotebook.MouseEnter(AControl: TControl);
begin
FMouseOver := True;
{$IFDEF VCL}
if Assigned(FOnMouseEnter) then
FOnMouseEnter(Self);
{$ENDIF VCL}
BaseWndProc(CM_MOUSEENTER, 0, AControl);
end;
procedure TJvExNotebook.MouseLeave(AControl: TControl);
begin
FMouseOver := False;
BaseWndProc(CM_MOUSELEAVE, 0, AControl);
{$IFDEF VCL}
if Assigned(FOnMouseLeave) then
FOnMouseLeave(Self);
{$ENDIF VCL}
end;
{$IFNDEF CLR}
procedure TJvExNotebook.FocusChanged(AControl: TWinControl);
begin
BaseWndProc(CM_FOCUSCHANGED, 0, AControl);
end;
{$ENDIF !CLR}
{$IFDEF COMPILER5}
{$IFNDEF HASAUTOSIZE}
procedure TJvExNotebook.CMSetAutoSize(var Msg: TMessage);
begin
SetAutoSize(Msg.WParam <> 0);
end;
procedure TJvExNotebook.SetAutoSize(Value: Boolean);
begin
TOpenControl_SetAutoSize(Self, Value);
end;
{$ENDIF !HASAUTOSIZE}
{$ENDIF COMPILER5}
procedure TJvExNotebook.BoundsChanged;
begin
end;
procedure TJvExNotebook.CursorChanged;
begin
BaseWndProc(CM_CURSORCHANGED);
end;
procedure TJvExNotebook.ShowingChanged;
begin
BaseWndProc(CM_SHOWINGCHANGED);
end;
procedure TJvExNotebook.ShowHintChanged;
begin
BaseWndProc(CM_SHOWHINTCHANGED);
end;
{$IFNDEF CLR}
{ VCL sends CM_CONTROLLISTCHANGE and CM_CONTROLCHANGE in a different order than
the CLX methods are used. So we must correct it by evaluating "Inserting". }
procedure TJvExNotebook.ControlsListChanging(Control: TControl; Inserting: Boolean);
begin
if Inserting then
BaseWndProc(CM_CONTROLLISTCHANGE, Integer(Control), Integer(Inserting))
else
BaseWndProc(CM_CONTROLCHANGE, Integer(Control), Integer(Inserting));
end;
procedure TJvExNotebook.ControlsListChanged(Control: TControl; Inserting: Boolean);
begin
if not Inserting then
BaseWndProc(CM_CONTROLLISTCHANGE, Integer(Control), Integer(Inserting))
else
BaseWndProc(CM_CONTROLCHANGE, Integer(Control), Integer(Inserting));
end;
{$ENDIF !CLR}
procedure TJvExNotebook.GetDlgCode(var Code: TDlgCodes);
begin
end;
procedure TJvExNotebook.FocusSet(PrevWnd: THandle);
begin
BaseWndProc(WM_SETFOCUS, Integer(PrevWnd), 0);
end;
procedure TJvExNotebook.FocusKilled(NextWnd: THandle);
begin
BaseWndProc(WM_KILLFOCUS, Integer(NextWnd), 0);
end;
function TJvExNotebook.DoEraseBackground(Canvas: TCanvas; Param: Integer): Boolean;
begin
Result := BaseWndProc(WM_ERASEBKGND, Canvas.Handle, Param) <> 0;
end;
{$IFDEF JVCLThemesEnabledD56}
function TJvExNotebook.GetParentBackground: Boolean;
begin
Result := JvThemes.GetParentBackground(Self);
end;
procedure TJvExNotebook.SetParentBackground(Value: Boolean);
begin
JvThemes.SetParentBackground(Self, Value);
end;
{$ENDIF JVCLThemesEnabledD56}
procedure TJvExNotebook.WndProc(var Msg: TMessage);
var
IdSaveDC: Integer;
DlgCodes: TDlgCodes;
Canvas: TCanvas;
{$IFDEF CLR}
AHintInfo: THintInfo;
{$ENDIF CLR}
begin
if not DispatchIsDesignMsg(Self, Msg) then
begin
case Msg.Msg of
CM_DENYSUBCLASSING:
{$IFNDEF CLR}
Msg.Result := Ord(GetInterfaceEntry(IJvDenySubClassing) <> nil);
{$ELSE}
Msg.Result := Integer(Supports(Self, IJvDenySubClassing));
{$ENDIF !CLR}
CM_DIALOGCHAR:
with TCMDialogChar{$IFDEF CLR}.Create{$ENDIF}(Msg) do
Result := Ord(WantKey(CharCode, KeyDataToShiftState(KeyData), WideChar(CharCode)));
CM_HINTSHOW:
{$IFNDEF CLR}
with TCMHintShow(Msg) do
Result := Integer(HintShow(HintInfo^));
{$ELSE}
with TCMHintShow.Create(Msg) do
begin
AHintInfo := HintInfo;
Result := Integer(HintShow(AHintInfo));
HintInfo := AHintInfo;
end;
{$ENDIF !CLR}
CM_HITTEST:
with TCMHitTest{$IFDEF CLR}.Create{$ENDIF}(Msg) do
Result := Integer(HitTest(XPos, YPos));
CM_MOUSEENTER:
MouseEnter({$IFDEF CLR}nil{$ELSE}TControl(Msg.LParam){$ENDIF});
CM_MOUSELEAVE:
MouseLeave({$IFDEF CLR}nil{$ELSE}TControl(Msg.LParam){$ENDIF});
CM_VISIBLECHANGED:
VisibleChanged;
CM_ENABLEDCHANGED:
EnabledChanged;
CM_TEXTCHANGED:
TextChanged;
CM_FONTCHANGED:
FontChanged;
CM_COLORCHANGED:
ColorChanged;
{$IFNDEF CLR}
CM_FOCUSCHANGED:
FocusChanged(TWinControl(Msg.LParam));
{$ENDIF !CLR}
CM_PARENTFONTCHANGED:
ParentFontChanged;
CM_PARENTCOLORCHANGED:
ParentColorChanged;
CM_PARENTSHOWHINTCHANGED:
ParentShowHintChanged;
CM_CURSORCHANGED:
CursorChanged;
CM_SHOWINGCHANGED:
ShowingChanged;
CM_SHOWHINTCHANGED:
ShowHintChanged;
{$IFNDEF CLR}
CM_CONTROLLISTCHANGE:
if Msg.LParam <> 0 then
ControlsListChanging(TControl(Msg.WParam), True)
else
ControlsListChanged(TControl(Msg.WParam), False);
CM_CONTROLCHANGE:
if Msg.LParam = 0 then
ControlsListChanging(TControl(Msg.WParam), False)
else
ControlsListChanged(TControl(Msg.WParam), True);
{$ENDIF !CLR}
WM_SETFOCUS:
FocusSet(THandle(Msg.WParam));
WM_KILLFOCUS:
FocusKilled(THandle(Msg.WParam));
WM_SIZE:
begin
inherited WndProc(Msg);
BoundsChanged;
end;
WM_ERASEBKGND:
begin
IdSaveDC := SaveDC(HDC(Msg.WParam)); // protect DC against Stock-Objects from Canvas
Canvas := TCanvas.Create;
try
Canvas.Handle := HDC(Msg.WParam);
Msg.Result := Ord(DoEraseBackground(Canvas, Msg.LParam));
finally
Canvas.Handle := 0;
Canvas.Free;
RestoreDC(HDC(Msg.WParam), IdSaveDC);
end;
end;
WM_PRINTCLIENT, WM_PRINT: // VCL bug fix
begin
IdSaveDC := SaveDC(HDC(Msg.WParam)); // protect DC against changes
try
inherited WndProc(Msg);
finally
RestoreDC(HDC(Msg.WParam), IdSaveDC);
end;
end;
WM_GETDLGCODE:
begin
inherited WndProc(Msg);
DlgCodes := [dcNative] + DlgcToDlgCodes(Msg.Result);
GetDlgCode(DlgCodes);
if not (dcNative in DlgCodes) then
Msg.Result := DlgCodesToDlgc(DlgCodes);
end;
else
inherited WndProc(Msg);
end;
if DotNetHighlighting then
HandleDotNetHighlighting(Self, Msg, MouseOver, Color);
end;
end;
//============================================================================
constructor TJvExHeader.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
FHintColor := clDefault;
end;
function TJvExHeader.BaseWndProc(Msg: Integer; WParam: Integer = 0; LParam: Longint = 0): Integer;
var
Mesg: TMessage;
begin
Mesg := CreateWMMessage(Msg, WParam, LParam);
inherited WndProc(Mesg);
Result := Mesg.Result;
end;
function TJvExHeader.BaseWndProc(Msg: Integer; WParam: Integer; LParam: TControl): Integer;
var
Mesg: TMessage;
begin
Mesg := CreateWMMessage(Msg, WParam, LParam);
inherited WndProc(Mesg);
Result := Mesg.Result;
end;
function TJvExHeader.BaseWndProcEx(Msg: Integer; WParam: Integer; var LParam): Integer;
var
Mesg: TStructPtrMessage;
begin
Mesg := TStructPtrMessage.Create(Msg, WParam, LParam);
try
inherited WndProc(Mesg.Msg);
finally
Result := Mesg.Msg.Result;
Mesg.Free;
end;
end;
procedure TJvExHeader.VisibleChanged;
begin
BaseWndProc(CM_VISIBLECHANGED);
end;
procedure TJvExHeader.EnabledChanged;
begin
BaseWndProc(CM_ENABLEDCHANGED);
end;
procedure TJvExHeader.TextChanged;
begin
BaseWndProc(CM_TEXTCHANGED);
end;
procedure TJvExHeader.FontChanged;
begin
BaseWndProc(CM_FONTCHANGED);
end;
procedure TJvExHeader.ColorChanged;
begin
BaseWndProc(CM_COLORCHANGED);
end;
procedure TJvExHeader.ParentFontChanged;
begin
BaseWndProc(CM_PARENTFONTCHANGED);
end;
procedure TJvExHeader.ParentColorChanged;
begin
BaseWndProc(CM_PARENTCOLORCHANGED);
if Assigned(OnParentColorChange) then
OnParentColorChange(Self);
end;
procedure TJvExHeader.ParentShowHintChanged;
begin
BaseWndProc(CM_PARENTSHOWHINTCHANGED);
end;
function TJvExHeader.WantKey(Key: Integer; Shift: TShiftState; const KeyText: WideString): Boolean;
begin
Result := BaseWndProc(CM_DIALOGCHAR, Word(Key), ShiftStateToKeyData(Shift)) <> 0;
end;
function TJvExHeader.HitTest(X, Y: Integer): Boolean;
begin
Result := BaseWndProc(CM_HITTEST, 0, SmallPointToLong(PointToSmallPoint(Point(X, Y)))) <> 0;
end;
function TJvExHeader.HintShow(var HintInfo: THintInfo): Boolean;
begin
GetHintColor(HintInfo, Self, FHintColor);
if FHintWindowClass <> nil then
HintInfo.HintWindowClass := FHintWindowClass;
Result := BaseWndProcEx(CM_HINTSHOW, 0, HintInfo) <> 0;
end;
procedure TJvExHeader.MouseEnter(AControl: TControl);
begin
FMouseOver := True;
{$IFDEF VCL}
if Assigned(FOnMouseEnter) then
FOnMouseEnter(Self);
{$ENDIF VCL}
BaseWndProc(CM_MOUSEENTER, 0, AControl);
end;
procedure TJvExHeader.MouseLeave(AControl: TControl);
begin
FMouseOver := False;
BaseWndProc(CM_MOUSELEAVE, 0, AControl);
{$IFDEF VCL}
if Assigned(FOnMouseLeave) then
FOnMouseLeave(Self);
{$ENDIF VCL}
end;
{$IFNDEF CLR}
procedure TJvExHeader.FocusChanged(AControl: TWinControl);
begin
BaseWndProc(CM_FOCUSCHANGED, 0, AControl);
end;
{$ENDIF !CLR}
{$IFDEF COMPILER5}
{$IFNDEF HASAUTOSIZE}
procedure TJvExHeader.CMSetAutoSize(var Msg: TMessage);
begin
SetAutoSize(Msg.WParam <> 0);
end;
procedure TJvExHeader.SetAutoSize(Value: Boolean);
begin
TOpenControl_SetAutoSize(Self, Value);
end;
{$ENDIF !HASAUTOSIZE}
{$ENDIF COMPILER5}
procedure TJvExHeader.BoundsChanged;
begin
end;
procedure TJvExHeader.CursorChanged;
begin
BaseWndProc(CM_CURSORCHANGED);
end;
procedure TJvExHeader.ShowingChanged;
begin
BaseWndProc(CM_SHOWINGCHANGED);
end;
procedure TJvExHeader.ShowHintChanged;
begin
BaseWndProc(CM_SHOWHINTCHANGED);
end;
{$IFNDEF CLR}
{ VCL sends CM_CONTROLLISTCHANGE and CM_CONTROLCHANGE in a different order than
the CLX methods are used. So we must correct it by evaluating "Inserting". }
procedure TJvExHeader.ControlsListChanging(Control: TControl; Inserting: Boolean);
begin
if Inserting then
BaseWndProc(CM_CONTROLLISTCHANGE, Integer(Control), Integer(Inserting))
else
BaseWndProc(CM_CONTROLCHANGE, Integer(Control), Integer(Inserting));
end;
procedure TJvExHeader.ControlsListChanged(Control: TControl; Inserting: Boolean);
begin
if not Inserting then
BaseWndProc(CM_CONTROLLISTCHANGE, Integer(Control), Integer(Inserting))
else
BaseWndProc(CM_CONTROLCHANGE, Integer(Control), Integer(Inserting));
end;
{$ENDIF !CLR}
procedure TJvExHeader.GetDlgCode(var Code: TDlgCodes);
begin
end;
procedure TJvExHeader.FocusSet(PrevWnd: THandle);
begin
BaseWndProc(WM_SETFOCUS, Integer(PrevWnd), 0);
end;
procedure TJvExHeader.FocusKilled(NextWnd: THandle);
begin
BaseWndProc(WM_KILLFOCUS, Integer(NextWnd), 0);
end;
function TJvExHeader.DoEraseBackground(Canvas: TCanvas; Param: Integer): Boolean;
begin
Result := BaseWndProc(WM_ERASEBKGND, Canvas.Handle, Param) <> 0;
end;
{$IFDEF JVCLThemesEnabledD56}
function TJvExHeader.GetParentBackground: Boolean;
begin
Result := JvThemes.GetParentBackground(Self);
end;
procedure TJvExHeader.SetParentBackground(Value: Boolean);
begin
JvThemes.SetParentBackground(Self, Value);
end;
{$ENDIF JVCLThemesEnabledD56}
procedure TJvExHeader.WndProc(var Msg: TMessage);
var
IdSaveDC: Integer;
DlgCodes: TDlgCodes;
Canvas: TCanvas;
{$IFDEF CLR}
AHintInfo: THintInfo;
{$ENDIF CLR}
begin
if not DispatchIsDesignMsg(Self, Msg) then
begin
case Msg.Msg of
CM_DENYSUBCLASSING:
{$IFNDEF CLR}
Msg.Result := Ord(GetInterfaceEntry(IJvDenySubClassing) <> nil);
{$ELSE}
Msg.Result := Integer(Supports(Self, IJvDenySubClassing));
{$ENDIF !CLR}
CM_DIALOGCHAR:
with TCMDialogChar{$IFDEF CLR}.Create{$ENDIF}(Msg) do
Result := Ord(WantKey(CharCode, KeyDataToShiftState(KeyData), WideChar(CharCode)));
CM_HINTSHOW:
{$IFNDEF CLR}
with TCMHintShow(Msg) do
Result := Integer(HintShow(HintInfo^));
{$ELSE}
with TCMHintShow.Create(Msg) do
begin
AHintInfo := HintInfo;
Result := Integer(HintShow(AHintInfo));
HintInfo := AHintInfo;
end;
{$ENDIF !CLR}
CM_HITTEST:
with TCMHitTest{$IFDEF CLR}.Create{$ENDIF}(Msg) do
Result := Integer(HitTest(XPos, YPos));
CM_MOUSEENTER:
MouseEnter({$IFDEF CLR}nil{$ELSE}TControl(Msg.LParam){$ENDIF});
CM_MOUSELEAVE:
MouseLeave({$IFDEF CLR}nil{$ELSE}TControl(Msg.LParam){$ENDIF});
CM_VISIBLECHANGED:
VisibleChanged;
CM_ENABLEDCHANGED:
EnabledChanged;
CM_TEXTCHANGED:
TextChanged;
CM_FONTCHANGED:
FontChanged;
CM_COLORCHANGED:
ColorChanged;
{$IFNDEF CLR}
CM_FOCUSCHANGED:
FocusChanged(TWinControl(Msg.LParam));
{$ENDIF !CLR}
CM_PARENTFONTCHANGED:
ParentFontChanged;
CM_PARENTCOLORCHANGED:
ParentColorChanged;
CM_PARENTSHOWHINTCHANGED:
ParentShowHintChanged;
CM_CURSORCHANGED:
CursorChanged;
CM_SHOWINGCHANGED:
ShowingChanged;
CM_SHOWHINTCHANGED:
ShowHintChanged;
{$IFNDEF CLR}
CM_CONTROLLISTCHANGE:
if Msg.LParam <> 0 then
ControlsListChanging(TControl(Msg.WParam), True)
else
ControlsListChanged(TControl(Msg.WParam), False);
CM_CONTROLCHANGE:
if Msg.LParam = 0 then
ControlsListChanging(TControl(Msg.WParam), False)
else
ControlsListChanged(TControl(Msg.WParam), True);
{$ENDIF !CLR}
WM_SETFOCUS:
FocusSet(THandle(Msg.WParam));
WM_KILLFOCUS:
FocusKilled(THandle(Msg.WParam));
WM_SIZE:
begin
inherited WndProc(Msg);
BoundsChanged;
end;
WM_ERASEBKGND:
begin
IdSaveDC := SaveDC(HDC(Msg.WParam)); // protect DC against Stock-Objects from Canvas
Canvas := TCanvas.Create;
try
Canvas.Handle := HDC(Msg.WParam);
Msg.Result := Ord(DoEraseBackground(Canvas, Msg.LParam));
finally
Canvas.Handle := 0;
Canvas.Free;
RestoreDC(HDC(Msg.WParam), IdSaveDC);
end;
end;
WM_PRINTCLIENT, WM_PRINT: // VCL bug fix
begin
IdSaveDC := SaveDC(HDC(Msg.WParam)); // protect DC against changes
try
inherited WndProc(Msg);
finally
RestoreDC(HDC(Msg.WParam), IdSaveDC);
end;
end;
WM_GETDLGCODE:
begin
inherited WndProc(Msg);
DlgCodes := [dcNative] + DlgcToDlgCodes(Msg.Result);
GetDlgCode(DlgCodes);
if not (dcNative in DlgCodes) then
Msg.Result := DlgCodesToDlgc(DlgCodes);
end;
else
inherited WndProc(Msg);
end;
if DotNetHighlighting then
HandleDotNetHighlighting(Self, Msg, MouseOver, Color);
end;
end;
//============================================================================
{$IFDEF COMPILER6_UP}
constructor TJvExBoundLabel.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
FHintColor := clDefault;
end;
function TJvExBoundLabel.BaseWndProc(Msg: Integer; WParam: Integer = 0; LParam: Longint = 0): Integer;
var
Mesg: TMessage;
begin
Mesg := CreateWMMessage(Msg, WParam, LParam);
inherited WndProc(Mesg);
Result := Mesg.Result;
end;
function TJvExBoundLabel.BaseWndProc(Msg: Integer; WParam: Integer; LParam: TControl): Integer;
var
Mesg: TMessage;
begin
Mesg := CreateWMMessage(Msg, WParam, LParam);
inherited WndProc(Mesg);
Result := Mesg.Result;
end;
function TJvExBoundLabel.BaseWndProcEx(Msg: Integer; WParam: Integer; var LParam): Integer;
var
Mesg: TStructPtrMessage;
begin
Mesg := TStructPtrMessage.Create(Msg, WParam, LParam);
try
inherited WndProc(Mesg.Msg);
finally
Result := Mesg.Msg.Result;
Mesg.Free;
end;
end;
procedure TJvExBoundLabel.VisibleChanged;
begin
BaseWndProc(CM_VISIBLECHANGED);
end;
procedure TJvExBoundLabel.EnabledChanged;
begin
BaseWndProc(CM_ENABLEDCHANGED);
end;
procedure TJvExBoundLabel.TextChanged;
begin
BaseWndProc(CM_TEXTCHANGED);
end;
procedure TJvExBoundLabel.FontChanged;
begin
BaseWndProc(CM_FONTCHANGED);
end;
procedure TJvExBoundLabel.ColorChanged;
begin
BaseWndProc(CM_COLORCHANGED);
end;
procedure TJvExBoundLabel.ParentFontChanged;
begin
BaseWndProc(CM_PARENTFONTCHANGED);
end;
procedure TJvExBoundLabel.ParentColorChanged;
begin
BaseWndProc(CM_PARENTCOLORCHANGED);
if Assigned(OnParentColorChange) then
OnParentColorChange(Self);
end;
procedure TJvExBoundLabel.ParentShowHintChanged;
begin
BaseWndProc(CM_PARENTSHOWHINTCHANGED);
end;
function TJvExBoundLabel.WantKey(Key: Integer; Shift: TShiftState; const KeyText: WideString): Boolean;
begin
Result := BaseWndProc(CM_DIALOGCHAR, Word(Key), ShiftStateToKeyData(Shift)) <> 0;
end;
function TJvExBoundLabel.HitTest(X, Y: Integer): Boolean;
begin
Result := BaseWndProc(CM_HITTEST, 0, SmallPointToLong(PointToSmallPoint(Point(X, Y)))) <> 0;
end;
function TJvExBoundLabel.HintShow(var HintInfo: THintInfo): Boolean;
begin
GetHintColor(HintInfo, Self, FHintColor);
if FHintWindowClass <> nil then
HintInfo.HintWindowClass := FHintWindowClass;
Result := BaseWndProcEx(CM_HINTSHOW, 0, HintInfo) <> 0;
end;
procedure TJvExBoundLabel.MouseEnter(AControl: TControl);
begin
FMouseOver := True;
{$IFDEF VCL}
if Assigned(FOnMouseEnter) then
FOnMouseEnter(Self);
{$ENDIF VCL}
BaseWndProc(CM_MOUSEENTER, 0, AControl);
end;
procedure TJvExBoundLabel.MouseLeave(AControl: TControl);
begin
FMouseOver := False;
BaseWndProc(CM_MOUSELEAVE, 0, AControl);
{$IFDEF VCL}
if Assigned(FOnMouseLeave) then
FOnMouseLeave(Self);
{$ENDIF VCL}
end;
{$IFNDEF CLR}
procedure TJvExBoundLabel.FocusChanged(AControl: TWinControl);
begin
BaseWndProc(CM_FOCUSCHANGED, 0, AControl);
end;
{$ENDIF !CLR}
{$IFDEF COMPILER5}
{$IFNDEF HASAUTOSIZE}
procedure TJvExBoundLabel.CMSetAutoSize(var Msg: TMessage);
begin
SetAutoSize(Msg.WParam <> 0);
end;
procedure TJvExBoundLabel.SetAutoSize(Value: Boolean);
begin
TOpenControl_SetAutoSize(Self, Value);
end;
{$ENDIF !HASAUTOSIZE}
{$ENDIF COMPILER5}
procedure TJvExBoundLabel.WndProc(var Msg: TMessage);
{$IFDEF CLR}
var
AHintInfo: THintInfo;
{$ENDIF CLR}
begin
if not DispatchIsDesignMsg(Self, Msg) then
case Msg.Msg of
CM_DENYSUBCLASSING:
{$IFNDEF CLR}
Msg.Result := Ord(GetInterfaceEntry(IJvDenySubClassing) <> nil);
{$ELSE}
Msg.Result := Integer(Supports(Self, IJvDenySubClassing));
{$ENDIF !CLR}
CM_DIALOGCHAR:
with TCMDialogChar{$IFDEF CLR}.Create{$ENDIF}(Msg) do
Result := Ord(WantKey(CharCode, KeyDataToShiftState(KeyData), WideChar(CharCode)));
CM_HINTSHOW:
{$IFNDEF CLR}
with TCMHintShow(Msg) do
Result := Integer(HintShow(HintInfo^));
{$ELSE}
with TCMHintShow.Create(Msg) do
begin
AHintInfo := HintInfo;
Result := Integer(HintShow(AHintInfo));
HintInfo := AHintInfo;
end;
{$ENDIF !CLR}
CM_HITTEST:
with TCMHitTest{$IFDEF CLR}.Create{$ENDIF}(Msg) do
Result := Integer(HitTest(XPos, YPos));
CM_MOUSEENTER:
MouseEnter({$IFDEF CLR}nil{$ELSE}TControl(Msg.LParam){$ENDIF});
CM_MOUSELEAVE:
MouseLeave({$IFDEF CLR}nil{$ELSE}TControl(Msg.LParam){$ENDIF});
CM_VISIBLECHANGED:
VisibleChanged;
CM_ENABLEDCHANGED:
EnabledChanged;
CM_TEXTCHANGED:
TextChanged;
CM_FONTCHANGED:
FontChanged;
CM_COLORCHANGED:
ColorChanged;
{$IFNDEF CLR}
CM_FOCUSCHANGED:
FocusChanged(TWinControl(Msg.LParam));
{$ENDIF !CLR}
CM_PARENTFONTCHANGED:
ParentFontChanged;
CM_PARENTCOLORCHANGED:
ParentColorChanged;
CM_PARENTSHOWHINTCHANGED:
ParentShowHintChanged;
else
inherited WndProc(Msg);
end;
end;
//============================================================================
constructor TJvExCustomLabeledEdit.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
FHintColor := clDefault;
end;
function TJvExCustomLabeledEdit.BaseWndProc(Msg: Integer; WParam: Integer = 0; LParam: Longint = 0): Integer;
var
Mesg: TMessage;
begin
Mesg := CreateWMMessage(Msg, WParam, LParam);
inherited WndProc(Mesg);
Result := Mesg.Result;
end;
function TJvExCustomLabeledEdit.BaseWndProc(Msg: Integer; WParam: Integer; LParam: TControl): Integer;
var
Mesg: TMessage;
begin
Mesg := CreateWMMessage(Msg, WParam, LParam);
inherited WndProc(Mesg);
Result := Mesg.Result;
end;
function TJvExCustomLabeledEdit.BaseWndProcEx(Msg: Integer; WParam: Integer; var LParam): Integer;
var
Mesg: TStructPtrMessage;
begin
Mesg := TStructPtrMessage.Create(Msg, WParam, LParam);
try
inherited WndProc(Mesg.Msg);
finally
Result := Mesg.Msg.Result;
Mesg.Free;
end;
end;
procedure TJvExCustomLabeledEdit.VisibleChanged;
begin
BaseWndProc(CM_VISIBLECHANGED);
end;
procedure TJvExCustomLabeledEdit.EnabledChanged;
begin
BaseWndProc(CM_ENABLEDCHANGED);
end;
procedure TJvExCustomLabeledEdit.TextChanged;
begin
BaseWndProc(CM_TEXTCHANGED);
end;
procedure TJvExCustomLabeledEdit.FontChanged;
begin
BaseWndProc(CM_FONTCHANGED);
end;
procedure TJvExCustomLabeledEdit.ColorChanged;
begin
BaseWndProc(CM_COLORCHANGED);
end;
procedure TJvExCustomLabeledEdit.ParentFontChanged;
begin
BaseWndProc(CM_PARENTFONTCHANGED);
end;
procedure TJvExCustomLabeledEdit.ParentColorChanged;
begin
BaseWndProc(CM_PARENTCOLORCHANGED);
if Assigned(OnParentColorChange) then
OnParentColorChange(Self);
end;
procedure TJvExCustomLabeledEdit.ParentShowHintChanged;
begin
BaseWndProc(CM_PARENTSHOWHINTCHANGED);
end;
function TJvExCustomLabeledEdit.WantKey(Key: Integer; Shift: TShiftState; const KeyText: WideString): Boolean;
begin
Result := BaseWndProc(CM_DIALOGCHAR, Word(Key), ShiftStateToKeyData(Shift)) <> 0;
end;
function TJvExCustomLabeledEdit.HitTest(X, Y: Integer): Boolean;
begin
Result := BaseWndProc(CM_HITTEST, 0, SmallPointToLong(PointToSmallPoint(Point(X, Y)))) <> 0;
end;
function TJvExCustomLabeledEdit.HintShow(var HintInfo: THintInfo): Boolean;
begin
GetHintColor(HintInfo, Self, FHintColor);
if FHintWindowClass <> nil then
HintInfo.HintWindowClass := FHintWindowClass;
Result := BaseWndProcEx(CM_HINTSHOW, 0, HintInfo) <> 0;
end;
procedure TJvExCustomLabeledEdit.MouseEnter(AControl: TControl);
begin
FMouseOver := True;
{$IFDEF VCL}
if Assigned(FOnMouseEnter) then
FOnMouseEnter(Self);
{$ENDIF VCL}
BaseWndProc(CM_MOUSEENTER, 0, AControl);
end;
procedure TJvExCustomLabeledEdit.MouseLeave(AControl: TControl);
begin
FMouseOver := False;
BaseWndProc(CM_MOUSELEAVE, 0, AControl);
{$IFDEF VCL}
if Assigned(FOnMouseLeave) then
FOnMouseLeave(Self);
{$ENDIF VCL}
end;
{$IFNDEF CLR}
procedure TJvExCustomLabeledEdit.FocusChanged(AControl: TWinControl);
begin
BaseWndProc(CM_FOCUSCHANGED, 0, AControl);
end;
{$ENDIF !CLR}
{$IFDEF COMPILER5}
{$IFNDEF HASAUTOSIZE}
procedure TJvExCustomLabeledEdit.CMSetAutoSize(var Msg: TMessage);
begin
SetAutoSize(Msg.WParam <> 0);
end;
procedure TJvExCustomLabeledEdit.SetAutoSize(Value: Boolean);
begin
TOpenControl_SetAutoSize(Self, Value);
end;
{$ENDIF !HASAUTOSIZE}
{$ENDIF COMPILER5}
procedure TJvExCustomLabeledEdit.BoundsChanged;
begin
end;
procedure TJvExCustomLabeledEdit.CursorChanged;
begin
BaseWndProc(CM_CURSORCHANGED);
end;
procedure TJvExCustomLabeledEdit.ShowingChanged;
begin
BaseWndProc(CM_SHOWINGCHANGED);
end;
procedure TJvExCustomLabeledEdit.ShowHintChanged;
begin
BaseWndProc(CM_SHOWHINTCHANGED);
end;
{$IFNDEF CLR}
{ VCL sends CM_CONTROLLISTCHANGE and CM_CONTROLCHANGE in a different order than
the CLX methods are used. So we must correct it by evaluating "Inserting". }
procedure TJvExCustomLabeledEdit.ControlsListChanging(Control: TControl; Inserting: Boolean);
begin
if Inserting then
BaseWndProc(CM_CONTROLLISTCHANGE, Integer(Control), Integer(Inserting))
else
BaseWndProc(CM_CONTROLCHANGE, Integer(Control), Integer(Inserting));
end;
procedure TJvExCustomLabeledEdit.ControlsListChanged(Control: TControl; Inserting: Boolean);
begin
if not Inserting then
BaseWndProc(CM_CONTROLLISTCHANGE, Integer(Control), Integer(Inserting))
else
BaseWndProc(CM_CONTROLCHANGE, Integer(Control), Integer(Inserting));
end;
{$ENDIF !CLR}
procedure TJvExCustomLabeledEdit.GetDlgCode(var Code: TDlgCodes);
begin
end;
procedure TJvExCustomLabeledEdit.FocusSet(PrevWnd: THandle);
begin
BaseWndProc(WM_SETFOCUS, Integer(PrevWnd), 0);
end;
procedure TJvExCustomLabeledEdit.FocusKilled(NextWnd: THandle);
begin
BaseWndProc(WM_KILLFOCUS, Integer(NextWnd), 0);
end;
function TJvExCustomLabeledEdit.DoEraseBackground(Canvas: TCanvas; Param: Integer): Boolean;
begin
Result := BaseWndProc(WM_ERASEBKGND, Canvas.Handle, Param) <> 0;
end;
{$IFDEF JVCLThemesEnabledD56}
function TJvExCustomLabeledEdit.GetParentBackground: Boolean;
begin
Result := JvThemes.GetParentBackground(Self);
end;
procedure TJvExCustomLabeledEdit.SetParentBackground(Value: Boolean);
begin
JvThemes.SetParentBackground(Self, Value);
end;
{$ENDIF JVCLThemesEnabledD56}
procedure TJvExCustomLabeledEdit.WndProc(var Msg: TMessage);
var
IdSaveDC: Integer;
DlgCodes: TDlgCodes;
Canvas: TCanvas;
{$IFDEF CLR}
AHintInfo: THintInfo;
{$ENDIF CLR}
begin
if not DispatchIsDesignMsg(Self, Msg) then
begin
case Msg.Msg of
CM_DENYSUBCLASSING:
{$IFNDEF CLR}
Msg.Result := Ord(GetInterfaceEntry(IJvDenySubClassing) <> nil);
{$ELSE}
Msg.Result := Integer(Supports(Self, IJvDenySubClassing));
{$ENDIF !CLR}
CM_DIALOGCHAR:
with TCMDialogChar{$IFDEF CLR}.Create{$ENDIF}(Msg) do
Result := Ord(WantKey(CharCode, KeyDataToShiftState(KeyData), WideChar(CharCode)));
CM_HINTSHOW:
{$IFNDEF CLR}
with TCMHintShow(Msg) do
Result := Integer(HintShow(HintInfo^));
{$ELSE}
with TCMHintShow.Create(Msg) do
begin
AHintInfo := HintInfo;
Result := Integer(HintShow(AHintInfo));
HintInfo := AHintInfo;
end;
{$ENDIF !CLR}
CM_HITTEST:
with TCMHitTest{$IFDEF CLR}.Create{$ENDIF}(Msg) do
Result := Integer(HitTest(XPos, YPos));
CM_MOUSEENTER:
MouseEnter({$IFDEF CLR}nil{$ELSE}TControl(Msg.LParam){$ENDIF});
CM_MOUSELEAVE:
MouseLeave({$IFDEF CLR}nil{$ELSE}TControl(Msg.LParam){$ENDIF});
CM_VISIBLECHANGED:
VisibleChanged;
CM_ENABLEDCHANGED:
EnabledChanged;
CM_TEXTCHANGED:
TextChanged;
CM_FONTCHANGED:
FontChanged;
CM_COLORCHANGED:
ColorChanged;
{$IFNDEF CLR}
CM_FOCUSCHANGED:
FocusChanged(TWinControl(Msg.LParam));
{$ENDIF !CLR}
CM_PARENTFONTCHANGED:
ParentFontChanged;
CM_PARENTCOLORCHANGED:
ParentColorChanged;
CM_PARENTSHOWHINTCHANGED:
ParentShowHintChanged;
CM_CURSORCHANGED:
CursorChanged;
CM_SHOWINGCHANGED:
ShowingChanged;
CM_SHOWHINTCHANGED:
ShowHintChanged;
{$IFNDEF CLR}
CM_CONTROLLISTCHANGE:
if Msg.LParam <> 0 then
ControlsListChanging(TControl(Msg.WParam), True)
else
ControlsListChanged(TControl(Msg.WParam), False);
CM_CONTROLCHANGE:
if Msg.LParam = 0 then
ControlsListChanging(TControl(Msg.WParam), False)
else
ControlsListChanged(TControl(Msg.WParam), True);
{$ENDIF !CLR}
WM_SETFOCUS:
FocusSet(THandle(Msg.WParam));
WM_KILLFOCUS:
FocusKilled(THandle(Msg.WParam));
WM_SIZE:
begin
inherited WndProc(Msg);
BoundsChanged;
end;
WM_ERASEBKGND:
begin
IdSaveDC := SaveDC(HDC(Msg.WParam)); // protect DC against Stock-Objects from Canvas
Canvas := TCanvas.Create;
try
Canvas.Handle := HDC(Msg.WParam);
Msg.Result := Ord(DoEraseBackground(Canvas, Msg.LParam));
finally
Canvas.Handle := 0;
Canvas.Free;
RestoreDC(HDC(Msg.WParam), IdSaveDC);
end;
end;
WM_PRINTCLIENT, WM_PRINT: // VCL bug fix
begin
IdSaveDC := SaveDC(HDC(Msg.WParam)); // protect DC against changes
try
inherited WndProc(Msg);
finally
RestoreDC(HDC(Msg.WParam), IdSaveDC);
end;
end;
WM_GETDLGCODE:
begin
inherited WndProc(Msg);
DlgCodes := [dcNative] + DlgcToDlgCodes(Msg.Result);
GetDlgCode(DlgCodes);
if not (dcNative in DlgCodes) then
Msg.Result := DlgCodesToDlgc(DlgCodes);
end;
else
inherited WndProc(Msg);
end;
if DotNetHighlighting then
HandleDotNetHighlighting(Self, Msg, MouseOver, Color);
end;
end;
//============================================================================
constructor TJvExLabeledEdit.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
FHintColor := clDefault;
end;
function TJvExLabeledEdit.BaseWndProc(Msg: Integer; WParam: Integer = 0; LParam: Longint = 0): Integer;
var
Mesg: TMessage;
begin
Mesg := CreateWMMessage(Msg, WParam, LParam);
inherited WndProc(Mesg);
Result := Mesg.Result;
end;
function TJvExLabeledEdit.BaseWndProc(Msg: Integer; WParam: Integer; LParam: TControl): Integer;
var
Mesg: TMessage;
begin
Mesg := CreateWMMessage(Msg, WParam, LParam);
inherited WndProc(Mesg);
Result := Mesg.Result;
end;
function TJvExLabeledEdit.BaseWndProcEx(Msg: Integer; WParam: Integer; var LParam): Integer;
var
Mesg: TStructPtrMessage;
begin
Mesg := TStructPtrMessage.Create(Msg, WParam, LParam);
try
inherited WndProc(Mesg.Msg);
finally
Result := Mesg.Msg.Result;
Mesg.Free;
end;
end;
procedure TJvExLabeledEdit.VisibleChanged;
begin
BaseWndProc(CM_VISIBLECHANGED);
end;
procedure TJvExLabeledEdit.EnabledChanged;
begin
BaseWndProc(CM_ENABLEDCHANGED);
end;
procedure TJvExLabeledEdit.TextChanged;
begin
BaseWndProc(CM_TEXTCHANGED);
end;
procedure TJvExLabeledEdit.FontChanged;
begin
BaseWndProc(CM_FONTCHANGED);
end;
procedure TJvExLabeledEdit.ColorChanged;
begin
BaseWndProc(CM_COLORCHANGED);
end;
procedure TJvExLabeledEdit.ParentFontChanged;
begin
BaseWndProc(CM_PARENTFONTCHANGED);
end;
procedure TJvExLabeledEdit.ParentColorChanged;
begin
BaseWndProc(CM_PARENTCOLORCHANGED);
if Assigned(OnParentColorChange) then
OnParentColorChange(Self);
end;
procedure TJvExLabeledEdit.ParentShowHintChanged;
begin
BaseWndProc(CM_PARENTSHOWHINTCHANGED);
end;
function TJvExLabeledEdit.WantKey(Key: Integer; Shift: TShiftState; const KeyText: WideString): Boolean;
begin
Result := BaseWndProc(CM_DIALOGCHAR, Word(Key), ShiftStateToKeyData(Shift)) <> 0;
end;
function TJvExLabeledEdit.HitTest(X, Y: Integer): Boolean;
begin
Result := BaseWndProc(CM_HITTEST, 0, SmallPointToLong(PointToSmallPoint(Point(X, Y)))) <> 0;
end;
function TJvExLabeledEdit.HintShow(var HintInfo: THintInfo): Boolean;
begin
GetHintColor(HintInfo, Self, FHintColor);
if FHintWindowClass <> nil then
HintInfo.HintWindowClass := FHintWindowClass;
Result := BaseWndProcEx(CM_HINTSHOW, 0, HintInfo) <> 0;
end;
procedure TJvExLabeledEdit.MouseEnter(AControl: TControl);
begin
FMouseOver := True;
{$IFDEF VCL}
if Assigned(FOnMouseEnter) then
FOnMouseEnter(Self);
{$ENDIF VCL}
BaseWndProc(CM_MOUSEENTER, 0, AControl);
end;
procedure TJvExLabeledEdit.MouseLeave(AControl: TControl);
begin
FMouseOver := False;
BaseWndProc(CM_MOUSELEAVE, 0, AControl);
{$IFDEF VCL}
if Assigned(FOnMouseLeave) then
FOnMouseLeave(Self);
{$ENDIF VCL}
end;
{$IFNDEF CLR}
procedure TJvExLabeledEdit.FocusChanged(AControl: TWinControl);
begin
BaseWndProc(CM_FOCUSCHANGED, 0, AControl);
end;
{$ENDIF !CLR}
{$IFDEF COMPILER5}
{$IFNDEF HASAUTOSIZE}
procedure TJvExLabeledEdit.CMSetAutoSize(var Msg: TMessage);
begin
SetAutoSize(Msg.WParam <> 0);
end;
procedure TJvExLabeledEdit.SetAutoSize(Value: Boolean);
begin
TOpenControl_SetAutoSize(Self, Value);
end;
{$ENDIF !HASAUTOSIZE}
{$ENDIF COMPILER5}
procedure TJvExLabeledEdit.BoundsChanged;
begin
end;
procedure TJvExLabeledEdit.CursorChanged;
begin
BaseWndProc(CM_CURSORCHANGED);
end;
procedure TJvExLabeledEdit.ShowingChanged;
begin
BaseWndProc(CM_SHOWINGCHANGED);
end;
procedure TJvExLabeledEdit.ShowHintChanged;
begin
BaseWndProc(CM_SHOWHINTCHANGED);
end;
{$IFNDEF CLR}
{ VCL sends CM_CONTROLLISTCHANGE and CM_CONTROLCHANGE in a different order than
the CLX methods are used. So we must correct it by evaluating "Inserting". }
procedure TJvExLabeledEdit.ControlsListChanging(Control: TControl; Inserting: Boolean);
begin
if Inserting then
BaseWndProc(CM_CONTROLLISTCHANGE, Integer(Control), Integer(Inserting))
else
BaseWndProc(CM_CONTROLCHANGE, Integer(Control), Integer(Inserting));
end;
procedure TJvExLabeledEdit.ControlsListChanged(Control: TControl; Inserting: Boolean);
begin
if not Inserting then
BaseWndProc(CM_CONTROLLISTCHANGE, Integer(Control), Integer(Inserting))
else
BaseWndProc(CM_CONTROLCHANGE, Integer(Control), Integer(Inserting));
end;
{$ENDIF !CLR}
procedure TJvExLabeledEdit.GetDlgCode(var Code: TDlgCodes);
begin
end;
procedure TJvExLabeledEdit.FocusSet(PrevWnd: THandle);
begin
BaseWndProc(WM_SETFOCUS, Integer(PrevWnd), 0);
end;
procedure TJvExLabeledEdit.FocusKilled(NextWnd: THandle);
begin
BaseWndProc(WM_KILLFOCUS, Integer(NextWnd), 0);
end;
function TJvExLabeledEdit.DoEraseBackground(Canvas: TCanvas; Param: Integer): Boolean;
begin
Result := BaseWndProc(WM_ERASEBKGND, Canvas.Handle, Param) <> 0;
end;
{$IFDEF JVCLThemesEnabledD56}
function TJvExLabeledEdit.GetParentBackground: Boolean;
begin
Result := JvThemes.GetParentBackground(Self);
end;
procedure TJvExLabeledEdit.SetParentBackground(Value: Boolean);
begin
JvThemes.SetParentBackground(Self, Value);
end;
{$ENDIF JVCLThemesEnabledD56}
procedure TJvExLabeledEdit.WndProc(var Msg: TMessage);
var
IdSaveDC: Integer;
DlgCodes: TDlgCodes;
Canvas: TCanvas;
{$IFDEF CLR}
AHintInfo: THintInfo;
{$ENDIF CLR}
begin
if not DispatchIsDesignMsg(Self, Msg) then
begin
case Msg.Msg of
CM_DENYSUBCLASSING:
{$IFNDEF CLR}
Msg.Result := Ord(GetInterfaceEntry(IJvDenySubClassing) <> nil);
{$ELSE}
Msg.Result := Integer(Supports(Self, IJvDenySubClassing));
{$ENDIF !CLR}
CM_DIALOGCHAR:
with TCMDialogChar{$IFDEF CLR}.Create{$ENDIF}(Msg) do
Result := Ord(WantKey(CharCode, KeyDataToShiftState(KeyData), WideChar(CharCode)));
CM_HINTSHOW:
{$IFNDEF CLR}
with TCMHintShow(Msg) do
Result := Integer(HintShow(HintInfo^));
{$ELSE}
with TCMHintShow.Create(Msg) do
begin
AHintInfo := HintInfo;
Result := Integer(HintShow(AHintInfo));
HintInfo := AHintInfo;
end;
{$ENDIF !CLR}
CM_HITTEST:
with TCMHitTest{$IFDEF CLR}.Create{$ENDIF}(Msg) do
Result := Integer(HitTest(XPos, YPos));
CM_MOUSEENTER:
MouseEnter({$IFDEF CLR}nil{$ELSE}TControl(Msg.LParam){$ENDIF});
CM_MOUSELEAVE:
MouseLeave({$IFDEF CLR}nil{$ELSE}TControl(Msg.LParam){$ENDIF});
CM_VISIBLECHANGED:
VisibleChanged;
CM_ENABLEDCHANGED:
EnabledChanged;
CM_TEXTCHANGED:
TextChanged;
CM_FONTCHANGED:
FontChanged;
CM_COLORCHANGED:
ColorChanged;
{$IFNDEF CLR}
CM_FOCUSCHANGED:
FocusChanged(TWinControl(Msg.LParam));
{$ENDIF !CLR}
CM_PARENTFONTCHANGED:
ParentFontChanged;
CM_PARENTCOLORCHANGED:
ParentColorChanged;
CM_PARENTSHOWHINTCHANGED:
ParentShowHintChanged;
CM_CURSORCHANGED:
CursorChanged;
CM_SHOWINGCHANGED:
ShowingChanged;
CM_SHOWHINTCHANGED:
ShowHintChanged;
{$IFNDEF CLR}
CM_CONTROLLISTCHANGE:
if Msg.LParam <> 0 then
ControlsListChanging(TControl(Msg.WParam), True)
else
ControlsListChanged(TControl(Msg.WParam), False);
CM_CONTROLCHANGE:
if Msg.LParam = 0 then
ControlsListChanging(TControl(Msg.WParam), False)
else
ControlsListChanged(TControl(Msg.WParam), True);
{$ENDIF !CLR}
WM_SETFOCUS:
FocusSet(THandle(Msg.WParam));
WM_KILLFOCUS:
FocusKilled(THandle(Msg.WParam));
WM_SIZE:
begin
inherited WndProc(Msg);
BoundsChanged;
end;
WM_ERASEBKGND:
begin
IdSaveDC := SaveDC(HDC(Msg.WParam)); // protect DC against Stock-Objects from Canvas
Canvas := TCanvas.Create;
try
Canvas.Handle := HDC(Msg.WParam);
Msg.Result := Ord(DoEraseBackground(Canvas, Msg.LParam));
finally
Canvas.Handle := 0;
Canvas.Free;
RestoreDC(HDC(Msg.WParam), IdSaveDC);
end;
end;
WM_PRINTCLIENT, WM_PRINT: // VCL bug fix
begin
IdSaveDC := SaveDC(HDC(Msg.WParam)); // protect DC against changes
try
inherited WndProc(Msg);
finally
RestoreDC(HDC(Msg.WParam), IdSaveDC);
end;
end;
WM_GETDLGCODE:
begin
inherited WndProc(Msg);
DlgCodes := [dcNative] + DlgcToDlgCodes(Msg.Result);
GetDlgCode(DlgCodes);
if not (dcNative in DlgCodes) then
Msg.Result := DlgCodesToDlgc(DlgCodes);
end;
else
inherited WndProc(Msg);
end;
if DotNetHighlighting then
HandleDotNetHighlighting(Self, Msg, MouseOver, Color);
end;
end;
//============================================================================
constructor TJvExCustomColorBox.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
FHintColor := clDefault;
end;
function TJvExCustomColorBox.BaseWndProc(Msg: Integer; WParam: Integer = 0; LParam: Longint = 0): Integer;
var
Mesg: TMessage;
begin
Mesg := CreateWMMessage(Msg, WParam, LParam);
inherited WndProc(Mesg);
Result := Mesg.Result;
end;
function TJvExCustomColorBox.BaseWndProc(Msg: Integer; WParam: Integer; LParam: TControl): Integer;
var
Mesg: TMessage;
begin
Mesg := CreateWMMessage(Msg, WParam, LParam);
inherited WndProc(Mesg);
Result := Mesg.Result;
end;
function TJvExCustomColorBox.BaseWndProcEx(Msg: Integer; WParam: Integer; var LParam): Integer;
var
Mesg: TStructPtrMessage;
begin
Mesg := TStructPtrMessage.Create(Msg, WParam, LParam);
try
inherited WndProc(Mesg.Msg);
finally
Result := Mesg.Msg.Result;
Mesg.Free;
end;
end;
procedure TJvExCustomColorBox.VisibleChanged;
begin
BaseWndProc(CM_VISIBLECHANGED);
end;
procedure TJvExCustomColorBox.EnabledChanged;
begin
BaseWndProc(CM_ENABLEDCHANGED);
end;
procedure TJvExCustomColorBox.TextChanged;
begin
BaseWndProc(CM_TEXTCHANGED);
end;
procedure TJvExCustomColorBox.FontChanged;
begin
BaseWndProc(CM_FONTCHANGED);
end;
procedure TJvExCustomColorBox.ColorChanged;
begin
BaseWndProc(CM_COLORCHANGED);
end;
procedure TJvExCustomColorBox.ParentFontChanged;
begin
BaseWndProc(CM_PARENTFONTCHANGED);
end;
procedure TJvExCustomColorBox.ParentColorChanged;
begin
BaseWndProc(CM_PARENTCOLORCHANGED);
if Assigned(OnParentColorChange) then
OnParentColorChange(Self);
end;
procedure TJvExCustomColorBox.ParentShowHintChanged;
begin
BaseWndProc(CM_PARENTSHOWHINTCHANGED);
end;
function TJvExCustomColorBox.WantKey(Key: Integer; Shift: TShiftState; const KeyText: WideString): Boolean;
begin
Result := BaseWndProc(CM_DIALOGCHAR, Word(Key), ShiftStateToKeyData(Shift)) <> 0;
end;
function TJvExCustomColorBox.HitTest(X, Y: Integer): Boolean;
begin
Result := BaseWndProc(CM_HITTEST, 0, SmallPointToLong(PointToSmallPoint(Point(X, Y)))) <> 0;
end;
function TJvExCustomColorBox.HintShow(var HintInfo: THintInfo): Boolean;
begin
GetHintColor(HintInfo, Self, FHintColor);
if FHintWindowClass <> nil then
HintInfo.HintWindowClass := FHintWindowClass;
Result := BaseWndProcEx(CM_HINTSHOW, 0, HintInfo) <> 0;
end;
procedure TJvExCustomColorBox.MouseEnter(AControl: TControl);
begin
FMouseOver := True;
{$IFDEF VCL}
if Assigned(FOnMouseEnter) then
FOnMouseEnter(Self);
{$ENDIF VCL}
BaseWndProc(CM_MOUSEENTER, 0, AControl);
end;
procedure TJvExCustomColorBox.MouseLeave(AControl: TControl);
begin
FMouseOver := False;
BaseWndProc(CM_MOUSELEAVE, 0, AControl);
{$IFDEF VCL}
if Assigned(FOnMouseLeave) then
FOnMouseLeave(Self);
{$ENDIF VCL}
end;
{$IFNDEF CLR}
procedure TJvExCustomColorBox.FocusChanged(AControl: TWinControl);
begin
BaseWndProc(CM_FOCUSCHANGED, 0, AControl);
end;
{$ENDIF !CLR}
{$IFDEF COMPILER5}
{$IFNDEF HASAUTOSIZE}
procedure TJvExCustomColorBox.CMSetAutoSize(var Msg: TMessage);
begin
SetAutoSize(Msg.WParam <> 0);
end;
procedure TJvExCustomColorBox.SetAutoSize(Value: Boolean);
begin
TOpenControl_SetAutoSize(Self, Value);
end;
{$ENDIF !HASAUTOSIZE}
{$ENDIF COMPILER5}
procedure TJvExCustomColorBox.BoundsChanged;
begin
end;
procedure TJvExCustomColorBox.CursorChanged;
begin
BaseWndProc(CM_CURSORCHANGED);
end;
procedure TJvExCustomColorBox.ShowingChanged;
begin
BaseWndProc(CM_SHOWINGCHANGED);
end;
procedure TJvExCustomColorBox.ShowHintChanged;
begin
BaseWndProc(CM_SHOWHINTCHANGED);
end;
{$IFNDEF CLR}
{ VCL sends CM_CONTROLLISTCHANGE and CM_CONTROLCHANGE in a different order than
the CLX methods are used. So we must correct it by evaluating "Inserting". }
procedure TJvExCustomColorBox.ControlsListChanging(Control: TControl; Inserting: Boolean);
begin
if Inserting then
BaseWndProc(CM_CONTROLLISTCHANGE, Integer(Control), Integer(Inserting))
else
BaseWndProc(CM_CONTROLCHANGE, Integer(Control), Integer(Inserting));
end;
procedure TJvExCustomColorBox.ControlsListChanged(Control: TControl; Inserting: Boolean);
begin
if not Inserting then
BaseWndProc(CM_CONTROLLISTCHANGE, Integer(Control), Integer(Inserting))
else
BaseWndProc(CM_CONTROLCHANGE, Integer(Control), Integer(Inserting));
end;
{$ENDIF !CLR}
procedure TJvExCustomColorBox.GetDlgCode(var Code: TDlgCodes);
begin
end;
procedure TJvExCustomColorBox.FocusSet(PrevWnd: THandle);
begin
BaseWndProc(WM_SETFOCUS, Integer(PrevWnd), 0);
end;
procedure TJvExCustomColorBox.FocusKilled(NextWnd: THandle);
begin
BaseWndProc(WM_KILLFOCUS, Integer(NextWnd), 0);
end;
function TJvExCustomColorBox.DoEraseBackground(Canvas: TCanvas; Param: Integer): Boolean;
begin
Result := BaseWndProc(WM_ERASEBKGND, Canvas.Handle, Param) <> 0;
end;
{$IFDEF JVCLThemesEnabledD56}
function TJvExCustomColorBox.GetParentBackground: Boolean;
begin
Result := JvThemes.GetParentBackground(Self);
end;
procedure TJvExCustomColorBox.SetParentBackground(Value: Boolean);
begin
JvThemes.SetParentBackground(Self, Value);
end;
{$ENDIF JVCLThemesEnabledD56}
procedure TJvExCustomColorBox.WndProc(var Msg: TMessage);
var
IdSaveDC: Integer;
DlgCodes: TDlgCodes;
Canvas: TCanvas;
{$IFDEF CLR}
AHintInfo: THintInfo;
{$ENDIF CLR}
begin
if not DispatchIsDesignMsg(Self, Msg) then
begin
case Msg.Msg of
CM_DENYSUBCLASSING:
{$IFNDEF CLR}
Msg.Result := Ord(GetInterfaceEntry(IJvDenySubClassing) <> nil);
{$ELSE}
Msg.Result := Integer(Supports(Self, IJvDenySubClassing));
{$ENDIF !CLR}
CM_DIALOGCHAR:
with TCMDialogChar{$IFDEF CLR}.Create{$ENDIF}(Msg) do
Result := Ord(WantKey(CharCode, KeyDataToShiftState(KeyData), WideChar(CharCode)));
CM_HINTSHOW:
{$IFNDEF CLR}
with TCMHintShow(Msg) do
Result := Integer(HintShow(HintInfo^));
{$ELSE}
with TCMHintShow.Create(Msg) do
begin
AHintInfo := HintInfo;
Result := Integer(HintShow(AHintInfo));
HintInfo := AHintInfo;
end;
{$ENDIF !CLR}
CM_HITTEST:
with TCMHitTest{$IFDEF CLR}.Create{$ENDIF}(Msg) do
Result := Integer(HitTest(XPos, YPos));
CM_MOUSEENTER:
MouseEnter({$IFDEF CLR}nil{$ELSE}TControl(Msg.LParam){$ENDIF});
CM_MOUSELEAVE:
MouseLeave({$IFDEF CLR}nil{$ELSE}TControl(Msg.LParam){$ENDIF});
CM_VISIBLECHANGED:
VisibleChanged;
CM_ENABLEDCHANGED:
EnabledChanged;
CM_TEXTCHANGED:
TextChanged;
CM_FONTCHANGED:
FontChanged;
CM_COLORCHANGED:
ColorChanged;
{$IFNDEF CLR}
CM_FOCUSCHANGED:
FocusChanged(TWinControl(Msg.LParam));
{$ENDIF !CLR}
CM_PARENTFONTCHANGED:
ParentFontChanged;
CM_PARENTCOLORCHANGED:
ParentColorChanged;
CM_PARENTSHOWHINTCHANGED:
ParentShowHintChanged;
CM_CURSORCHANGED:
CursorChanged;
CM_SHOWINGCHANGED:
ShowingChanged;
CM_SHOWHINTCHANGED:
ShowHintChanged;
{$IFNDEF CLR}
CM_CONTROLLISTCHANGE:
if Msg.LParam <> 0 then
ControlsListChanging(TControl(Msg.WParam), True)
else
ControlsListChanged(TControl(Msg.WParam), False);
CM_CONTROLCHANGE:
if Msg.LParam = 0 then
ControlsListChanging(TControl(Msg.WParam), False)
else
ControlsListChanged(TControl(Msg.WParam), True);
{$ENDIF !CLR}
WM_SETFOCUS:
FocusSet(THandle(Msg.WParam));
WM_KILLFOCUS:
FocusKilled(THandle(Msg.WParam));
WM_SIZE:
begin
inherited WndProc(Msg);
BoundsChanged;
end;
WM_ERASEBKGND:
begin
IdSaveDC := SaveDC(HDC(Msg.WParam)); // protect DC against Stock-Objects from Canvas
Canvas := TCanvas.Create;
try
Canvas.Handle := HDC(Msg.WParam);
Msg.Result := Ord(DoEraseBackground(Canvas, Msg.LParam));
finally
Canvas.Handle := 0;
Canvas.Free;
RestoreDC(HDC(Msg.WParam), IdSaveDC);
end;
end;
WM_PRINTCLIENT, WM_PRINT: // VCL bug fix
begin
IdSaveDC := SaveDC(HDC(Msg.WParam)); // protect DC against changes
try
inherited WndProc(Msg);
finally
RestoreDC(HDC(Msg.WParam), IdSaveDC);
end;
end;
WM_GETDLGCODE:
begin
inherited WndProc(Msg);
DlgCodes := [dcNative] + DlgcToDlgCodes(Msg.Result);
GetDlgCode(DlgCodes);
if not (dcNative in DlgCodes) then
Msg.Result := DlgCodesToDlgc(DlgCodes);
end;
else
inherited WndProc(Msg);
end;
if DotNetHighlighting then
HandleDotNetHighlighting(Self, Msg, MouseOver, Color);
end;
end;
//============================================================================
constructor TJvExColorBox.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
FHintColor := clDefault;
end;
function TJvExColorBox.BaseWndProc(Msg: Integer; WParam: Integer = 0; LParam: Longint = 0): Integer;
var
Mesg: TMessage;
begin
Mesg := CreateWMMessage(Msg, WParam, LParam);
inherited WndProc(Mesg);
Result := Mesg.Result;
end;
function TJvExColorBox.BaseWndProc(Msg: Integer; WParam: Integer; LParam: TControl): Integer;
var
Mesg: TMessage;
begin
Mesg := CreateWMMessage(Msg, WParam, LParam);
inherited WndProc(Mesg);
Result := Mesg.Result;
end;
function TJvExColorBox.BaseWndProcEx(Msg: Integer; WParam: Integer; var LParam): Integer;
var
Mesg: TStructPtrMessage;
begin
Mesg := TStructPtrMessage.Create(Msg, WParam, LParam);
try
inherited WndProc(Mesg.Msg);
finally
Result := Mesg.Msg.Result;
Mesg.Free;
end;
end;
procedure TJvExColorBox.VisibleChanged;
begin
BaseWndProc(CM_VISIBLECHANGED);
end;
procedure TJvExColorBox.EnabledChanged;
begin
BaseWndProc(CM_ENABLEDCHANGED);
end;
procedure TJvExColorBox.TextChanged;
begin
BaseWndProc(CM_TEXTCHANGED);
end;
procedure TJvExColorBox.FontChanged;
begin
BaseWndProc(CM_FONTCHANGED);
end;
procedure TJvExColorBox.ColorChanged;
begin
BaseWndProc(CM_COLORCHANGED);
end;
procedure TJvExColorBox.ParentFontChanged;
begin
BaseWndProc(CM_PARENTFONTCHANGED);
end;
procedure TJvExColorBox.ParentColorChanged;
begin
BaseWndProc(CM_PARENTCOLORCHANGED);
if Assigned(OnParentColorChange) then
OnParentColorChange(Self);
end;
procedure TJvExColorBox.ParentShowHintChanged;
begin
BaseWndProc(CM_PARENTSHOWHINTCHANGED);
end;
function TJvExColorBox.WantKey(Key: Integer; Shift: TShiftState; const KeyText: WideString): Boolean;
begin
Result := BaseWndProc(CM_DIALOGCHAR, Word(Key), ShiftStateToKeyData(Shift)) <> 0;
end;
function TJvExColorBox.HitTest(X, Y: Integer): Boolean;
begin
Result := BaseWndProc(CM_HITTEST, 0, SmallPointToLong(PointToSmallPoint(Point(X, Y)))) <> 0;
end;
function TJvExColorBox.HintShow(var HintInfo: THintInfo): Boolean;
begin
GetHintColor(HintInfo, Self, FHintColor);
if FHintWindowClass <> nil then
HintInfo.HintWindowClass := FHintWindowClass;
Result := BaseWndProcEx(CM_HINTSHOW, 0, HintInfo) <> 0;
end;
procedure TJvExColorBox.MouseEnter(AControl: TControl);
begin
FMouseOver := True;
{$IFDEF VCL}
if Assigned(FOnMouseEnter) then
FOnMouseEnter(Self);
{$ENDIF VCL}
BaseWndProc(CM_MOUSEENTER, 0, AControl);
end;
procedure TJvExColorBox.MouseLeave(AControl: TControl);
begin
FMouseOver := False;
BaseWndProc(CM_MOUSELEAVE, 0, AControl);
{$IFDEF VCL}
if Assigned(FOnMouseLeave) then
FOnMouseLeave(Self);
{$ENDIF VCL}
end;
{$IFNDEF CLR}
procedure TJvExColorBox.FocusChanged(AControl: TWinControl);
begin
BaseWndProc(CM_FOCUSCHANGED, 0, AControl);
end;
{$ENDIF !CLR}
{$IFDEF COMPILER5}
{$IFNDEF HASAUTOSIZE}
procedure TJvExColorBox.CMSetAutoSize(var Msg: TMessage);
begin
SetAutoSize(Msg.WParam <> 0);
end;
procedure TJvExColorBox.SetAutoSize(Value: Boolean);
begin
TOpenControl_SetAutoSize(Self, Value);
end;
{$ENDIF !HASAUTOSIZE}
{$ENDIF COMPILER5}
procedure TJvExColorBox.BoundsChanged;
begin
end;
procedure TJvExColorBox.CursorChanged;
begin
BaseWndProc(CM_CURSORCHANGED);
end;
procedure TJvExColorBox.ShowingChanged;
begin
BaseWndProc(CM_SHOWINGCHANGED);
end;
procedure TJvExColorBox.ShowHintChanged;
begin
BaseWndProc(CM_SHOWHINTCHANGED);
end;
{$IFNDEF CLR}
{ VCL sends CM_CONTROLLISTCHANGE and CM_CONTROLCHANGE in a different order than
the CLX methods are used. So we must correct it by evaluating "Inserting". }
procedure TJvExColorBox.ControlsListChanging(Control: TControl; Inserting: Boolean);
begin
if Inserting then
BaseWndProc(CM_CONTROLLISTCHANGE, Integer(Control), Integer(Inserting))
else
BaseWndProc(CM_CONTROLCHANGE, Integer(Control), Integer(Inserting));
end;
procedure TJvExColorBox.ControlsListChanged(Control: TControl; Inserting: Boolean);
begin
if not Inserting then
BaseWndProc(CM_CONTROLLISTCHANGE, Integer(Control), Integer(Inserting))
else
BaseWndProc(CM_CONTROLCHANGE, Integer(Control), Integer(Inserting));
end;
{$ENDIF !CLR}
procedure TJvExColorBox.GetDlgCode(var Code: TDlgCodes);
begin
end;
procedure TJvExColorBox.FocusSet(PrevWnd: THandle);
begin
BaseWndProc(WM_SETFOCUS, Integer(PrevWnd), 0);
end;
procedure TJvExColorBox.FocusKilled(NextWnd: THandle);
begin
BaseWndProc(WM_KILLFOCUS, Integer(NextWnd), 0);
end;
function TJvExColorBox.DoEraseBackground(Canvas: TCanvas; Param: Integer): Boolean;
begin
Result := BaseWndProc(WM_ERASEBKGND, Canvas.Handle, Param) <> 0;
end;
{$IFDEF JVCLThemesEnabledD56}
function TJvExColorBox.GetParentBackground: Boolean;
begin
Result := JvThemes.GetParentBackground(Self);
end;
procedure TJvExColorBox.SetParentBackground(Value: Boolean);
begin
JvThemes.SetParentBackground(Self, Value);
end;
{$ENDIF JVCLThemesEnabledD56}
procedure TJvExColorBox.WndProc(var Msg: TMessage);
var
IdSaveDC: Integer;
DlgCodes: TDlgCodes;
Canvas: TCanvas;
{$IFDEF CLR}
AHintInfo: THintInfo;
{$ENDIF CLR}
begin
if not DispatchIsDesignMsg(Self, Msg) then
begin
case Msg.Msg of
CM_DENYSUBCLASSING:
{$IFNDEF CLR}
Msg.Result := Ord(GetInterfaceEntry(IJvDenySubClassing) <> nil);
{$ELSE}
Msg.Result := Integer(Supports(Self, IJvDenySubClassing));
{$ENDIF !CLR}
CM_DIALOGCHAR:
with TCMDialogChar{$IFDEF CLR}.Create{$ENDIF}(Msg) do
Result := Ord(WantKey(CharCode, KeyDataToShiftState(KeyData), WideChar(CharCode)));
CM_HINTSHOW:
{$IFNDEF CLR}
with TCMHintShow(Msg) do
Result := Integer(HintShow(HintInfo^));
{$ELSE}
with TCMHintShow.Create(Msg) do
begin
AHintInfo := HintInfo;
Result := Integer(HintShow(AHintInfo));
HintInfo := AHintInfo;
end;
{$ENDIF !CLR}
CM_HITTEST:
with TCMHitTest{$IFDEF CLR}.Create{$ENDIF}(Msg) do
Result := Integer(HitTest(XPos, YPos));
CM_MOUSEENTER:
MouseEnter({$IFDEF CLR}nil{$ELSE}TControl(Msg.LParam){$ENDIF});
CM_MOUSELEAVE:
MouseLeave({$IFDEF CLR}nil{$ELSE}TControl(Msg.LParam){$ENDIF});
CM_VISIBLECHANGED:
VisibleChanged;
CM_ENABLEDCHANGED:
EnabledChanged;
CM_TEXTCHANGED:
TextChanged;
CM_FONTCHANGED:
FontChanged;
CM_COLORCHANGED:
ColorChanged;
{$IFNDEF CLR}
CM_FOCUSCHANGED:
FocusChanged(TWinControl(Msg.LParam));
{$ENDIF !CLR}
CM_PARENTFONTCHANGED:
ParentFontChanged;
CM_PARENTCOLORCHANGED:
ParentColorChanged;
CM_PARENTSHOWHINTCHANGED:
ParentShowHintChanged;
CM_CURSORCHANGED:
CursorChanged;
CM_SHOWINGCHANGED:
ShowingChanged;
CM_SHOWHINTCHANGED:
ShowHintChanged;
{$IFNDEF CLR}
CM_CONTROLLISTCHANGE:
if Msg.LParam <> 0 then
ControlsListChanging(TControl(Msg.WParam), True)
else
ControlsListChanged(TControl(Msg.WParam), False);
CM_CONTROLCHANGE:
if Msg.LParam = 0 then
ControlsListChanging(TControl(Msg.WParam), False)
else
ControlsListChanged(TControl(Msg.WParam), True);
{$ENDIF !CLR}
WM_SETFOCUS:
FocusSet(THandle(Msg.WParam));
WM_KILLFOCUS:
FocusKilled(THandle(Msg.WParam));
WM_SIZE:
begin
inherited WndProc(Msg);
BoundsChanged;
end;
WM_ERASEBKGND:
begin
IdSaveDC := SaveDC(HDC(Msg.WParam)); // protect DC against Stock-Objects from Canvas
Canvas := TCanvas.Create;
try
Canvas.Handle := HDC(Msg.WParam);
Msg.Result := Ord(DoEraseBackground(Canvas, Msg.LParam));
finally
Canvas.Handle := 0;
Canvas.Free;
RestoreDC(HDC(Msg.WParam), IdSaveDC);
end;
end;
WM_PRINTCLIENT, WM_PRINT: // VCL bug fix
begin
IdSaveDC := SaveDC(HDC(Msg.WParam)); // protect DC against changes
try
inherited WndProc(Msg);
finally
RestoreDC(HDC(Msg.WParam), IdSaveDC);
end;
end;
WM_GETDLGCODE:
begin
inherited WndProc(Msg);
DlgCodes := [dcNative] + DlgcToDlgCodes(Msg.Result);
GetDlgCode(DlgCodes);
if not (dcNative in DlgCodes) then
Msg.Result := DlgCodesToDlgc(DlgCodes);
end;
else
inherited WndProc(Msg);
end;
if DotNetHighlighting then
HandleDotNetHighlighting(Self, Msg, MouseOver, Color);
end;
end;
//============================================================================
{$ENDIF COMPILER6_UP}
constructor TJvExSplitter.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
FHintColor := clDefault;
end;
function TJvExSplitter.BaseWndProc(Msg: Integer; WParam: Integer = 0; LParam: Longint = 0): Integer;
var
Mesg: TMessage;
begin
Mesg := CreateWMMessage(Msg, WParam, LParam);
inherited WndProc(Mesg);
Result := Mesg.Result;
end;
function TJvExSplitter.BaseWndProc(Msg: Integer; WParam: Integer; LParam: TControl): Integer;
var
Mesg: TMessage;
begin
Mesg := CreateWMMessage(Msg, WParam, LParam);
inherited WndProc(Mesg);
Result := Mesg.Result;
end;
function TJvExSplitter.BaseWndProcEx(Msg: Integer; WParam: Integer; var LParam): Integer;
var
Mesg: TStructPtrMessage;
begin
Mesg := TStructPtrMessage.Create(Msg, WParam, LParam);
try
inherited WndProc(Mesg.Msg);
finally
Result := Mesg.Msg.Result;
Mesg.Free;
end;
end;
procedure TJvExSplitter.VisibleChanged;
begin
BaseWndProc(CM_VISIBLECHANGED);
end;
procedure TJvExSplitter.EnabledChanged;
begin
BaseWndProc(CM_ENABLEDCHANGED);
end;
procedure TJvExSplitter.TextChanged;
begin
BaseWndProc(CM_TEXTCHANGED);
end;
procedure TJvExSplitter.FontChanged;
begin
BaseWndProc(CM_FONTCHANGED);
end;
procedure TJvExSplitter.ColorChanged;
begin
BaseWndProc(CM_COLORCHANGED);
end;
procedure TJvExSplitter.ParentFontChanged;
begin
BaseWndProc(CM_PARENTFONTCHANGED);
end;
procedure TJvExSplitter.ParentColorChanged;
begin
BaseWndProc(CM_PARENTCOLORCHANGED);
if Assigned(OnParentColorChange) then
OnParentColorChange(Self);
end;
procedure TJvExSplitter.ParentShowHintChanged;
begin
BaseWndProc(CM_PARENTSHOWHINTCHANGED);
end;
function TJvExSplitter.WantKey(Key: Integer; Shift: TShiftState; const KeyText: WideString): Boolean;
begin
Result := BaseWndProc(CM_DIALOGCHAR, Word(Key), ShiftStateToKeyData(Shift)) <> 0;
end;
function TJvExSplitter.HitTest(X, Y: Integer): Boolean;
begin
Result := BaseWndProc(CM_HITTEST, 0, SmallPointToLong(PointToSmallPoint(Point(X, Y)))) <> 0;
end;
function TJvExSplitter.HintShow(var HintInfo: THintInfo): Boolean;
begin
GetHintColor(HintInfo, Self, FHintColor);
if FHintWindowClass <> nil then
HintInfo.HintWindowClass := FHintWindowClass;
Result := BaseWndProcEx(CM_HINTSHOW, 0, HintInfo) <> 0;
end;
procedure TJvExSplitter.MouseEnter(AControl: TControl);
begin
FMouseOver := True;
{$IFDEF VCL}
if Assigned(FOnMouseEnter) then
FOnMouseEnter(Self);
{$ENDIF VCL}
BaseWndProc(CM_MOUSEENTER, 0, AControl);
end;
procedure TJvExSplitter.MouseLeave(AControl: TControl);
begin
FMouseOver := False;
BaseWndProc(CM_MOUSELEAVE, 0, AControl);
{$IFDEF VCL}
if Assigned(FOnMouseLeave) then
FOnMouseLeave(Self);
{$ENDIF VCL}
end;
{$IFNDEF CLR}
procedure TJvExSplitter.FocusChanged(AControl: TWinControl);
begin
BaseWndProc(CM_FOCUSCHANGED, 0, AControl);
end;
{$ENDIF !CLR}
{$IFDEF COMPILER5}
{$IFNDEF HASAUTOSIZE}
procedure TJvExSplitter.CMSetAutoSize(var Msg: TMessage);
begin
SetAutoSize(Msg.WParam <> 0);
end;
procedure TJvExSplitter.SetAutoSize(Value: Boolean);
begin
TOpenControl_SetAutoSize(Self, Value);
end;
{$ENDIF !HASAUTOSIZE}
{$ENDIF COMPILER5}
procedure TJvExSplitter.WndProc(var Msg: TMessage);
{$IFDEF CLR}
var
AHintInfo: THintInfo;
{$ENDIF CLR}
begin
if not DispatchIsDesignMsg(Self, Msg) then
case Msg.Msg of
CM_DENYSUBCLASSING:
{$IFNDEF CLR}
Msg.Result := Ord(GetInterfaceEntry(IJvDenySubClassing) <> nil);
{$ELSE}
Msg.Result := Integer(Supports(Self, IJvDenySubClassing));
{$ENDIF !CLR}
CM_DIALOGCHAR:
with TCMDialogChar{$IFDEF CLR}.Create{$ENDIF}(Msg) do
Result := Ord(WantKey(CharCode, KeyDataToShiftState(KeyData), WideChar(CharCode)));
CM_HINTSHOW:
{$IFNDEF CLR}
with TCMHintShow(Msg) do
Result := Integer(HintShow(HintInfo^));
{$ELSE}
with TCMHintShow.Create(Msg) do
begin
AHintInfo := HintInfo;
Result := Integer(HintShow(AHintInfo));
HintInfo := AHintInfo;
end;
{$ENDIF !CLR}
CM_HITTEST:
with TCMHitTest{$IFDEF CLR}.Create{$ENDIF}(Msg) do
Result := Integer(HitTest(XPos, YPos));
CM_MOUSEENTER:
MouseEnter({$IFDEF CLR}nil{$ELSE}TControl(Msg.LParam){$ENDIF});
CM_MOUSELEAVE:
MouseLeave({$IFDEF CLR}nil{$ELSE}TControl(Msg.LParam){$ENDIF});
CM_VISIBLECHANGED:
VisibleChanged;
CM_ENABLEDCHANGED:
EnabledChanged;
CM_TEXTCHANGED:
TextChanged;
CM_FONTCHANGED:
FontChanged;
CM_COLORCHANGED:
ColorChanged;
{$IFNDEF CLR}
CM_FOCUSCHANGED:
FocusChanged(TWinControl(Msg.LParam));
{$ENDIF !CLR}
CM_PARENTFONTCHANGED:
ParentFontChanged;
CM_PARENTCOLORCHANGED:
ParentColorChanged;
CM_PARENTSHOWHINTCHANGED:
ParentShowHintChanged;
else
inherited WndProc(Msg);
end;
end;
//============================================================================
procedure TJvExSplitter.MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
SplitterMouseDownFix(Self);
inherited MouseDown(Button, Shift, X, Y);
end;
// SplitterMouseDownFix fixes a bug in the VCL that causes the splitter to no
// more work with the control in the left/top of it when the control has a size
// of 0. This is actually a TWinControl.AlignControl bug.
procedure SplitterMouseDownFix(Splitter: TSplitter);
var
Control: TControl;
Pt: TPoint;
R: TRect;
I, Size: Integer;
begin
with Splitter do
begin
if Align in [alLeft, alTop] then
begin
Control := nil;
Pt := Point(Left, Top);
if Align = alLeft then
Dec(Pt.X)
else //if Align = alTop then
Dec(Pt.Y);
for I := 0 to Parent.ControlCount - 1 do
begin
Control := Parent.Controls[I];
R := Control.BoundsRect;
if Align = alLeft then
Size := R.Right - R.Left
else //if Align = alTop then
Size := R.Bottom - R.Top;
if Control.Visible and Control.Enabled and (Size = 0) then
begin
if Align = alLeft then
Dec(R.Left)
else // Align = alTop then
Dec(R.Top);
if PtInRect(R, Pt) then
Break;
end;
Control := nil;
end;
if Control = nil then
begin
// Check for the control that is zero-sized but after the splitter.
// TWinControl.AlignControls does not work properly with alLeft/alTop.
if Align = alLeft then
Pt := Point(Left + Width - 1, Top)
else // if Align = alTop then
Pt := Point(Left, Top + Height - 1);
for I := 0 to Parent.ControlCount - 1 do
begin
Control := Parent.Controls[I];
R := Control.BoundsRect;
if Align = alLeft then
Size := R.Right - R.Left
else //if Align = alTop then
Size := R.Bottom - R.Top;
if Control.Visible and Control.Enabled and (Size = 0) then
begin
if Align = alLeft then
Dec(R.Left)
else // Align = alTop then
Dec(R.Top);
if PtInRect(R, Pt) then
Break;
end;
Control := nil;
end;
if Control <> nil then
begin
// realign left/top control
if Align = alLeft then
Control.Left := -1
else // if Align = alTop then
Control.Top := -1;
end;
end;
end;
end;
end;
{$IFDEF UNITVERSIONING}
initialization
RegisterUnitVersion(HInstance, UnitVersioning);
finalization
UnregisterUnitVersion(HInstance);
{$ENDIF UNITVERSIONING}
end.