📄 jvqxpbuttons.pas
字号:
{******************************************************************************}
{* WARNING: JEDI VCL To CLX Converter generated unit. *}
{* Manual modifications will be lost on next release. *}
{******************************************************************************}
{-----------------------------------------------------------------------------
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: JvXPButtons.PAS, released on 2004-01-01.
The Initial Developer of the Original Code is Marc Hoffman.
Portions created by Marc Hoffman are Copyright (C) 2002 APRIORI business solutions AG.
Portions created by APRIORI business solutions AG are Copyright (C) 2002 APRIORI business solutions AG
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: JvQXPButtons.pas,v 1.24 2005/02/07 07:51:17 marquardt Exp $
unit JvQXPButtons;
{$I jvcl.inc}
interface
uses
Classes, TypInfo,
QWindows, QMessages, QGraphics, QControls, QForms, QActnList, QImgList, QMenus,
JvQExControls, Qt,
JvQXPCore, JvQXPCoreUtils;
type
TJvXPCustomButtonActionLink = class(TWinControlActionLink)
protected
function IsImageIndexLinked: Boolean; override;
procedure AssignClient(AClient: TObject); override;
procedure SetImageIndex(Value: Integer); override;
public
destructor Destroy; override;
end;
TJvXPLayout = (blGlyphLeft, blGlyphRight, blGlyphTop, blGlyphBottom);
TJvXPCustomButton = class(TJvXPCustomStyleControl)
private
FAutoGray: Boolean;
FBgGradient: TBitmap;
FCancel: Boolean;
FCkGradient: TBitmap;
FDefault: Boolean;
FFcGradient: TBitmap;
FGlyph: TBitmap;
FHlGradient: TBitmap;
FImageChangeLink: TChangeLink;
FImageIndex: Integer;
FLayout: TJvXPLayout;
FShowAccelChar: Boolean;
FShowFocusRect: Boolean;
FSmoothEdges: Boolean;
FSpacing: Byte;
FWordWrap: Boolean;
procedure ImageListChange(Sender: TObject);
protected
function WantKey(Key: Integer; Shift: TShiftState; const KeyText: WideString): Boolean; override;
function GetActionLinkClass: TControlActionLinkClass; override;
function IsSpecialDrawState(IgnoreDefault: Boolean = False): Boolean;
procedure ActionChange(Sender: TObject; CheckDefaults: Boolean); override;
procedure KeyDown(var Key: Word; Shift: TShiftState); override;
procedure KeyUp(var Key: Word; Shift: TShiftState); override;
procedure SetAutoGray(Value: Boolean); virtual;
procedure SetDefault(Value: Boolean); virtual;
procedure SetGlyph(Value: TBitmap); virtual;
procedure SetLayout(Value: TJvXPLayout); virtual;
procedure SetShowAccelChar(Value: Boolean); virtual;
procedure SetShowFocusRect(Value: Boolean); virtual;
procedure SetSmoothEdges(Value: Boolean); virtual;
procedure SetSpacing(Value: Byte); virtual;
procedure SetWordWrap(Value: Boolean); virtual;
procedure Paint; override;
procedure HookResized; override;
// advanced properties.
property AutoGray: Boolean read FAutoGray write SetAutoGray default True;
property Cancel: Boolean read FCancel write FCancel default False;
property Default: Boolean read FDefault write SetDefault default False;
property Glyph: TBitmap read FGlyph write SetGlyph;
property Layout: TJvXPLayout read FLayout write SetLayout default blGlyphLeft;
property ShowAccelChar: Boolean read FShowAccelChar write SetShowAccelChar default True;
property ShowFocusRect: Boolean read FShowFocusRect write SetShowFocusRect default False;
property SmoothEdges: Boolean read FSmoothEdges write SetSmoothEdges default True;
property Spacing: Byte read FSpacing write SetSpacing default 3;
property WordWrap: Boolean read FWordWrap write SetWordWrap default True;
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
end;
TJvXPButton = class(TJvXPCustomButton)
published
// common properties.
property Action;
property Caption;
property Enabled;
property TabOrder;
property TabStop default True;
property Height default 21;
property Width default 73;
// advanced properties.
property AutoGray;
property Cancel;
property Default;
property Glyph;
property Layout;
property ModalResult;
property ShowAccelChar;
property ShowFocusRect;
property SmoothEdges;
property Spacing;
property WordWrap;
//property BevelInner;
//property BevelOuter;
//property BevelWidth;
//property BiDiMode;
//property Ctl3D;
//property DockSite;
//property ParentBiDiMode;
//property ParentCtl3D;
//property TabOrder;
//property TabStop;
//property UseDockManager default True;
property Align;
property Anchors;
//property AutoSize;
property Constraints;
property DragMode;
//property Enabled;
property Font;
property ParentFont;
property ParentShowHint;
property PopupMenu;
property ShowHint;
property Style;
property StyleManager;
property Visible;
//property OnDockDrop;
//property OnDockOver;
//property OnEndDock;
//property OnGetSiteInfo;
//property OnStartDock;
//property OnUnDock;
property OnClick;
property OnConstrainedResize;
property OnContextPopup;
property OnDragDrop;
property OnDragOver;
property OnEndDrag;
property OnEnter;
property OnExit;
property OnKeyDown;
property OnKeyPress;
property OnKeyUp;
property OnMouseDown;
property OnMouseEnter;
property OnMouseLeave;
property OnMouseMove;
property OnMouseUp;
property OnStartDrag;
end;
TJvXPToolType =
(ttArrowLeft, ttArrowRight, ttClose, ttMaximize, ttMinimize, ttPopup, ttRestore, ttImage);
TJvXPCustomToolButton = class(TJvXPCustomStyleControl)
private
FToolType: TJvXPToolType;
FDropDownMenu: TPopupMenu;
FChangeLink: TChangeLink;
FImages: TCustomImageList;
FImageIndex: TImageIndex;
procedure SetImages(const Value: TCustomImageList);
procedure SetImageIndex(const Value: TImageIndex);
procedure SetDropDownMenu(const Value: TPopupMenu);
procedure DoImagesChange(Sender: TObject);
protected
procedure Notification(AComponent: TComponent; Operation: TOperation); override;
procedure MouseDown(Button: TMouseButton; Shift: TShiftState;
X: Integer; Y: Integer); override;
procedure SetToolType(Value: TJvXPToolType); virtual;
procedure Paint; override;
procedure HookResized; override;
property ToolType: TJvXPToolType read FToolType write SetToolType default ttClose;
property DropDownMenu: TPopupMenu read FDropDownMenu write SetDropDownMenu;
property Images: TCustomImageList read FImages write SetImages;
property ImageIndex: TImageIndex read FImageIndex write SetImageIndex;
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
end;
TJvXPToolButton = class(TJvXPCustomToolButton)
published
property Enabled;
property Color default clBlack;
property Height default 15;
property ToolType;
property Width default 15;
//property BevelInner;
//property BevelOuter;
//property BevelWidth;
//property BiDiMode;
//property Ctl3D;
//property DockSite;
//property ParentBiDiMode;
//property ParentCtl3D;
//property TabOrder;
//property TabStop;
//property UseDockManager default True;
property Align;
property Anchors;
//property AutoSize;
property Constraints;
property DragMode;
property DropDownMenu;
property Images;
property ImageIndex;
//property Enabled;
property Font;
property ParentFont;
property ParentShowHint;
property PopupMenu;
property ShowHint;
property Style;
property StyleManager;
property Visible;
//property OnDockDrop;
//property OnDockOver;
//property OnEndDock;
//property OnGetSiteInfo;
//property OnStartDock;
//property OnUnDock;
property OnClick;
property OnConstrainedResize;
property OnContextPopup;
property OnDragDrop;
property OnDragOver;
property OnEndDrag;
property OnEnter;
property OnExit;
property OnKeyDown;
property OnKeyPress;
property OnKeyUp;
property OnMouseDown;
property OnMouseEnter;
property OnMouseLeave;
property OnMouseMove;
property OnMouseUp;
property OnStartDrag;
end;
implementation
{$IFDEF UNITVERSIONING}
uses
JclUnitVersioning;
{$ENDIF UNITVERSIONING}
//=== { TJvXPCustomButtonActionLink } ========================================
destructor TJvXPCustomButtonActionLink.Destroy;
begin
TJvXPCustomButton(FClient).Invalidate;
inherited Destroy;
end;
procedure TJvXPCustomButtonActionLink.AssignClient(AClient: TObject);
begin
inherited AssignClient(AClient);
FClient := AClient as TJvXPCustomButton;
end;
function TJvXPCustomButtonActionLink.IsImageIndexLinked: Boolean;
begin
Result := True;
end;
procedure TJvXPCustomButtonActionLink.SetImageIndex(Value: Integer);
begin
inherited SetImageIndex(Value);
(FClient as TJvXPCustomButton).FImageIndex := Value;
(FClient as TJvXPCustomButton).Invalidate;
end;
//=== { TJvXPCustomButton } ==================================================
constructor TJvXPCustomButton.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
// set default properties.
ControlStyle := ControlStyle - [csDoubleClicks];
Height := 21;
Width := 73;
TabStop := True;
// set custom properties.
FAutoGray := True;
FCancel := False;
FDefault := False;
FImageIndex := -1;
FImageChangeLink := TChangeLink.Create;
FImageChangeLink.OnChange := ImageListChange;
FGlyph := TBitmap.Create;
FLayout := blGlyphLeft;
FShowAccelChar := True;
FShowFocusRect := False;
FSmoothEdges := True;
FSpacing := 3;
FWordWrap := True;
// create ...
FBgGradient := TBitmap.Create; // background gradient
FCkGradient := TBitmap.Create; // clicked gradient
FFcGradient := TBitmap.Create; // focused gradient
FHlGradient := TBitmap.Create; // Highlight gradient
end;
destructor TJvXPCustomButton.Destroy;
begin
FBgGradient.Free;
FCkGradient.Free;
FFcGradient.Free;
FHlGradient.Free;
FGlyph.Free;
FImageChangeLink.OnChange := nil;
FImageChangeLink.Free;
FImageChangeLink := nil;
inherited Destroy;
end;
function TJvXPCustomButton.GetActionLinkClass: TControlActionLinkClass;
begin
Result := TJvXPCustomButtonActionLink;
end;
function TJvXPCustomButton.WantKey(Key: Integer; Shift: TShiftState; const KeyText: WideString): Boolean;
begin
if (((Key = VK_RETURN) and (Focused or (FDefault and not (IsSibling)))) or
((Key = VK_ESCAPE) and FCancel) and (Shift = [])) and
CanFocus then
begin
Click;
Result := True;
end
else
Result := inherited WantKey(Key, Shift, KeyText);
end;
procedure TJvXPCustomButton.SetAutoGray(Value: Boolean);
begin
if Value <> FAutoGray then
begin
FAutoGray := Value;
LockedInvalidate;
end;
end;
procedure TJvXPCustomButton.SetDefault(Value: Boolean);
begin
if Value <> FDefault then
begin
FDefault := Value;
if GetParentForm(Self) <> nil then
QWindows.Perform(GetParentForm(Self), CM_FOCUSCHANGED, 0, Longint(GetParentForm(Self).ActiveControl));
end;
end;
procedure TJvXPCustomButton.SetGlyph(Value: TBitmap);
begin
FGlyph.Assign(Value);
LockedInvalidate;
end;
procedure TJvXPCustomButton.SetLayout(Value: TJvXPLayout);
begin
if Value <> FLayout then
begin
FLayout := Value;
LockedInvalidate;
end;
end;
procedure TJvXPCustomButton.SetShowAccelChar(Value: Boolean);
begin
if Value <> FShowAccelChar then
begin
FShowAccelChar := Value;
LockedInvalidate;
end;
end;
procedure TJvXPCustomButton.SetShowFocusRect(Value: Boolean);
begin
if Value <> FShowFocusRect then
begin
FShowFocusRect := Value;
LockedInvalidate;
end;
end;
procedure TJvXPCustomButton.SetSmoothEdges(Value: Boolean);
begin
if Value <> FSmoothEdges then
begin
FSmoothEdges := Value;
LockedInvalidate;
end;
end;
procedure TJvXPCustomButton.SetSpacing(Value: Byte);
begin
if Value <> FSpacing then
begin
FSpacing := Value;
LockedInvalidate;
end;
end;
procedure TJvXPCustomButton.SetWordWrap(Value: Boolean);
begin
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -