📄 jvqtooledit.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: JvToolEdit.PAS, released on 2002-07-04.
The Initial Developers of the Original Code are: Fedor Koshevnikov, Igor Pavluk and Serge Korolev
Copyright (c) 1997, 1998 Fedor Koshevnikov, Igor Pavluk and Serge Korolev
Copyright (c) 2001,2002 SGB Software
All Rights Reserved.
Contributers:
Rob den Braasem [rbraasem att xs4all dott nl]
Polaris Software
rblaurindo
Andreas Hausladen
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:
(rb) Move button related functionality from TJvCustomComboEdit to TJvEditButton
-----------------------------------------------------------------------------}
// $Id: JvQToolEdit.pas,v 1.46 2005/02/11 10:11:57 asnepvangers Exp $
unit JvQToolEdit;
{$I jvcl.inc}
interface
uses
{$IFDEF MSWINDOWS}
Windows, Messages,
{$ENDIF MSWINDOWS}
SysUtils, Classes, QGraphics, QControls, QForms, QDialogs, QStdCtrls, QMenus,
QButtons, QFileCtrls, QMask, QImgList, QActnList, QExtDlgs,
Qt, QComboEdits, JvQExComboEdits, QWindows,
JvQExControls, JvQSpeedButton, JvQTypes, JvQExMask, JvQExForms, JvQButton;
const
scAltDown = scAlt + VK_DOWN;
DefEditBtnWidth = 21;
CM_POPUPCLOSEUP = CM_BASE + $0300; // arbitrary value
type
TFileExt = type string;
TCloseUpEvent = procedure(Sender: TObject; Accept: Boolean) of object;
TPopupAlign = (epaRight, epaLeft);
TJvPopupWindow = class(TJvExCustomForm)
private
FEditor: TWinControl;
FCloseUp: TCloseUpEvent;
protected
FActiveControl: TWinControl;
FIsFocusable: Boolean;
procedure SetParent(const Value: TWidgetControl); override;
function WidgetFlags: Integer; override;
function GetValue: Variant; virtual; abstract;
procedure SetValue(const Value: Variant); virtual; abstract;
procedure InvalidateEditor;
procedure MouseUp(Button: TMouseButton; Shift: TShiftState;
X, Y: Integer); override;
procedure CloseUp(Accept: Boolean); virtual;
public
constructor Create(AOwner: TComponent); override;
function GetPopupText: string; virtual;
procedure Hide;
procedure Show(Origin: TPoint); virtual; // Polaris
{ Determines the ctrl that receives the keyboard input if the dropdown
window is showing, but the combo edit still has focus }
property ActiveControl: TWinControl read FActiveControl;
{ Determines whether the popup window may be activated }
property IsFocusable: Boolean read FIsFocusable;
property OnCloseUp: TCloseUpEvent read FCloseUp write FCloseUp;
end;
TJvEditButton = class(TJvImageSpeedButton)
private
FNoAction: Boolean;
function GetGlyph: TBitmap;
function GetNumGlyphs: TJvNumGlyphs;
function GetUseGlyph: Boolean;
procedure SetGlyph(const Value: TBitmap);
procedure SetNumGlyphs(Value: TJvNumGlyphs);
protected
FStandard: Boolean; // Polaris
procedure MouseDown(Button: TMouseButton; Shift: TShiftState;
X, Y: Integer); override;
procedure PaintImage(Canvas: TCanvas; ARect: TRect; const Offset: TPoint;
AState: TJvButtonState; DrawMark: Boolean); override;
procedure Paint; override;
public
constructor Create(AOwner: TComponent); override;
procedure Click; override;
property UseGlyph: Boolean read GetUseGlyph;// write FDrawGlyph;
property Glyph: TBitmap read GetGlyph write SetGlyph;
property NumGlyphs: TJvNumGlyphs read GetNumGlyphs write SetNumGlyphs;
end;
TGlyphKind = (gkCustom, gkDefault, gkDropDown, gkEllipsis);
TJvImageKind = (ikCustom, ikDefault, ikDropDown, ikEllipsis);
TJvCustomComboEdit = class;
TJvCustomComboEditActionLink = class(TWinControlActionLink)
protected
function IsCaptionLinked: Boolean; override;
function IsHintLinked: Boolean; override;
function IsImageIndexLinked: Boolean; override;
function IsOnExecuteLinked: Boolean; override;
function IsShortCutLinked: Boolean; override;
procedure SetHint(const Value: THintString); override;
procedure SetImageIndex(Value: Integer); override;
procedure SetOnExecute(Value: TNotifyEvent); override;
procedure SetShortCut(Value: TShortCut); override;
end;
TJvCustomComboEditActionLinkClass = class of TJvCustomComboEditActionLink;
TJvCustomComboEdit = class(TJvExCustomComboMaskEdit)
private
FOnButtonClick: TNotifyEvent;
FClickKey: TShortCut;
FReadOnly: Boolean;
FDirectInput: Boolean;
FAlwaysEnableButton: Boolean;
FAlwaysShowPopup: Boolean;
FPopupAlign: TPopupAlign;
FGroupIndex: Integer; // RDB
FDisabledColor: TColor; // RDB
FDisabledTextColor: TColor; // RDB
FOnKeyDown: TKeyEvent; // RDB
FImages: TCustomImageList;
FImageIndex: TImageIndex;
FImageKind: TJvImageKind;
FNumGlyphs: Integer;
FStreamedButtonWidth: Integer;
FStreamedFixedWidth: Boolean;
FOnEnabledChanged: TNotifyEvent;
{ We hide the button by setting its width to 0, thus we have to store the
width the button should have when shown again in FSavedButtonWidth: }
FSavedButtonWidth: Integer;
function BtnWidthStored: Boolean;
function GetButtonFlat: Boolean;
function GetButtonHint: string;
function GetButtonWidth: Integer;
function GetDirectInput: Boolean;
function GetGlyph: TBitmap;
function GetGlyphKind: TGlyphKind;
function GetMinHeight: Integer;
function GetNumGlyphs: TNumGlyphs;
function GetPopupVisible: Boolean;
function GetShowButton: Boolean;
function GetTextHeight: Integer;
function IsImageIndexStored: Boolean;
function IsCustomGlyph: Boolean;
procedure EditButtonClick(Sender: TObject);
procedure ReadGlyphKind(Reader: TReader);
procedure RecreateGlyph;
procedure SetButtonFlat(const Value: Boolean);
procedure SetButtonHint(const Value: string);
procedure SetButtonWidth(Value: Integer);
procedure SetGlyph(Value: TBitmap);
procedure SetGlyphKind(Value: TGlyphKind);
procedure SetImageIndex(const Value: TImageIndex);
procedure SetImageKind(const Value: TJvImageKind);
procedure SetImages(const Value: TCustomImageList);
procedure SetNumGlyphs(const Value: TNumGlyphs);
procedure SetShowButton(const Value: Boolean);
procedure UpdateBtnBounds(var NewLeft, NewTop, NewWidth, NewHeight: Integer);
{ (rb) renamed from UpdateEdit }
procedure UpdateGroup; // RDB
protected
FButton: TJvEditButton; // Polaris
FBtnControl: TWinControl;
FPopupVisible: Boolean; // Polaris
FFocused: Boolean; // Polaris
FPopup: TWinControl;
procedure CustomAlignPosition(Control: TControl; var NewLeft,
NewTop, NewWidth, NewHeight: Integer; var AlignRect: TRect); override;
// procedure DoClearText; override;
// procedure DoClipboardCut; override;
// procedure DoClipboardPaste; override;
procedure AdjustSize; override;
procedure DoKillFocus(FocusedWnd: HWND); override;
procedure DoSetFocus(FocusedWnd: HWND); override;
procedure EnabledChanged; override;
procedure FontChanged; override;
procedure DoEnter; override;
procedure DoCtl3DChanged; virtual;
function DoPaintBackGround(Canvas: TCanvas; Param: Integer): Boolean; override;
{ Repositions the child controls; checkbox }
procedure UpdateControls; virtual;
{ Updates the margins of the edit box }
procedure UpdateMargins; dynamic;
{ Returns the margins of the edit box }
procedure GetInternalMargins(var ALeft, ARight: Integer); virtual;
procedure CreatePopup; virtual;
procedure HidePopup; virtual;
procedure ShowPopup(Origin: TPoint); virtual;
procedure DoFlatChanged; override;
procedure Paint; override;
function AcceptPopup(var Value: Variant): Boolean; virtual;
function EditCanModify: Boolean; override;
function GetActionLinkClass: TControlActionLinkClass; override;
function GetPopupValue: Variant; virtual;
// function GetReadOnly: Boolean; virtual;
function GetSettingCursor: Boolean;
procedure AcceptValue(const Value: Variant); virtual;
procedure ActionChange(Sender: TObject; CheckDefaults: Boolean); override;
procedure AdjustHeight;
procedure ButtonClick; dynamic;
procedure Change; override;
procedure CreateWnd; override;
procedure DefineProperties(Filer: TFiler); override;
procedure DoChange; virtual; //virtual Polaris
procedure KeyDown(var Key: Word; Shift: TShiftState); override;
procedure KeyPress(var Key: Char); override;
procedure Loaded; override;
procedure LocalKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); // RDB
procedure MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); override;
procedure Notification(AComponent: TComponent; Operation: TOperation); override;
procedure PopupChange; virtual;
procedure PopupCloseUp(Sender: TObject; Accept: Boolean); virtual; //virtual Polaris
procedure AsyncPopupCloseUp(Accept: Boolean); virtual;
procedure PopupDropDown(DisableEdit: Boolean); virtual;
procedure SetDirectInput(Value: Boolean); // Polaris
procedure SetDisabledColor(const Value: TColor); virtual; // RDB
procedure SetDisabledTextColor(const Value: TColor); virtual; // RDB
procedure SetGroupIndex(const Value: Integer); // RDB
procedure SetPopupValue(const Value: Variant); virtual;
// procedure SetReadOnly(Value: Boolean); virtual;
// procedure SetShowCaret; // Polaris
procedure UpdatePopupVisible;
property Alignment;
property AlwaysEnableButton: Boolean read FAlwaysEnableButton write FAlwaysEnableButton default False;
property AlwaysShowPopup: Boolean read FAlwaysShowPopup write FAlwaysShowPopup default False;
property Button: TJvEditButton read FButton;
property ButtonFlat: Boolean read GetButtonFlat write SetButtonFlat default False;
property ButtonHint: string read GetButtonHint write SetButtonHint;
property ButtonWidth: Integer read GetButtonWidth write SetButtonWidth stored BtnWidthStored;
property ClickKey: TShortCut read FClickKey write FClickKey default scAltDown;
property DirectInput: Boolean read GetDirectInput write SetDirectInput default True;
property DisabledColor: TColor read FDisabledColor write SetDisabledColor default clWindow; // RDB
property DisabledTextColor: TColor read FDisabledTextColor write SetDisabledTextColor default clGrayText; // RDB
property Glyph: TBitmap read GetGlyph write SetGlyph stored IsCustomGlyph;
property GroupIndex: Integer read FGroupIndex write SetGroupIndex default -1;
property ImageIndex: TImageIndex read FImageIndex write SetImageIndex stored IsImageIndexStored default -1;
property ImageKind: TJvImageKind read FImageKind write SetImageKind default ikCustom;
property Images: TCustomImageList read FImages write SetImages;
property NumGlyphs: TNumGlyphs read GetNumGlyphs write SetNumGlyphs default 1;
property OnButtonClick: TNotifyEvent read FOnButtonClick write FOnButtonClick;
property OnKeyDown: TKeyEvent read FOnKeyDown write FOnKeyDown;
property PopupAlign: TPopupAlign read FPopupAlign write FPopupAlign default epaRight;
property PopupVisible: Boolean read GetPopupVisible;
// property ReadOnly: Boolean read GetReadOnly write SetReadOnly default False;
property SettingCursor: Boolean read GetSettingCursor;
property ShowButton: Boolean read GetShowButton write SetShowButton default True;
property OnEnabledChanged: TNotifyEvent read FOnEnabledChanged write FOnEnabledChanged;
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
class function DefaultImageIndex: TImageIndex; virtual;
class function DefaultImages: TCustomImageList; virtual;
procedure DoClick;
procedure SelectAll;
procedure SetBounds(ALeft, ATop, AWidth, AHeight: Integer); override;
{ Backwards compatibility; moved to public&published; eventually remove }
property GlyphKind: TGlyphKind read GetGlyphKind write SetGlyphKind;
end;
TJvComboEdit = class(TJvCustomComboEdit)
public
property Button;
published
//Polaris
property Action;
property Align;
property Alignment;
property AlwaysEnableButton;
property AlwaysShowPopup;
property Anchors;
property AutoSelect;
property AutoSize;
property BorderStyle;
property ButtonFlat;
property ButtonHint;
property ButtonWidth;
property CharCase;
property ClickKey;
property ClipboardCommands; // RDB
property Color;
property Constraints;
property DirectInput;
property DisabledColor; // RDB
property DisabledTextColor; // RDB
property DragMode;
property EditMask;
property Enabled;
property Font;
property Glyph;
property HideSelection;
property ImageIndex;
property ImageKind;
property Images;
property MaxLength;
property NumGlyphs;
property ParentColor;
property ParentFont;
property ParentShowHint;
property PopupMenu;
property ReadOnly;
property ShowHint;
property ShowButton;
property TabOrder;
property TabStop;
property Text;
property Visible;
property OnButtonClick;
property OnChange;
property OnClick;
property OnContextPopup;
property OnDblClick;
property OnDragDrop;
property OnDragOver;
property OnEndDrag;
property OnEnter;
property OnExit;
property OnKeyDown; // RDB
property OnKeyPress;
property OnKeyUp;
property OnMouseDown;
property OnMouseEnter;
property OnMouseLeave;
property OnMouseMove;
property OnMouseUp;
property OnStartDrag;
end;
{ TJvFileDirEdit }
{ The common parent of TJvFilenameEdit and TJvDirectoryEdit }
{ For internal use only; it's not intended to be used separately }
type
TExecOpenDialogEvent = procedure(Sender: TObject; var Name: string;
var Action: Boolean) of object;
TJvFileDirEdit = class(TJvCustomComboEdit)
private
FErrMode: Cardinal;
FMultipleDirs: Boolean;
FOnDropFiles: TNotifyEvent;
FOnBeforeDialog: TExecOpenDialogEvent;
FOnAfterDialog: TExecOpenDialogEvent;
protected
function GetLongName: string; virtual; abstract;
function GetShortName: string; virtual; abstract;
procedure DoAfterDialog(var FileName: string; var Action: Boolean); dynamic;
procedure DoBeforeDialog(var FileName: string; var Action: Boolean); dynamic;
procedure ReceptFileDir(const AFileName: string); virtual; abstract;
procedure ClearFileList; virtual;
procedure Change; override;
procedure DisableSysErrors;
procedure EnableSysErrors;
property ImageKind default ikDefault;
property MaxLength;
public
constructor Create(AOwner: TComponent); override;
property LongName: string read GetLongName;
property ShortName: string read GetShortName;
published
property OnBeforeDialog: TExecOpenDialogEvent read FOnBeforeDialog
write FOnBeforeDialog;
property OnAfterDialog: TExecOpenDialogEvent read FOnAfterDialog
write FOnAfterDialog;
property OnDropFiles: TNotifyEvent read FOnDropFiles write FOnDropFiles;
property OnButtonClick;
property ClipboardCommands; // RDB
property DisabledTextColor; // RDB
property DisabledColor; // RDB
end;
TFileDialogKind = (dkOpen, dkSave, dkOpenPicture, dkSavePicture);
TJvFilenameEdit = class(TJvFileDirEdit)
private
FDialog: TOpenDialog;
FDialogKind: TFileDialogKind;
FAddQuotes: Boolean;
procedure CreateEditDialog;
function GetFileName: TFileName;
function GetDefaultExt: TFileExt;
function GetFilter: string;
function GetFilterIndex: Integer;
function GetInitialDir: string;
function GetHistoryList: TStrings;
function GetOptions: TOpenOptions;
function GetDialogTitle: string;
function GetDialogFiles: TStrings;
procedure SetDialogKind(Value: TFileDialogKind);
procedure SetFileName(const Value: TFileName);
procedure SetDefaultExt(Value: TFileExt);
procedure SetFilter(const Value: string);
procedure SetFilterIndex(Value: Integer);
procedure SetInitialDir(const Value: string);
procedure SetHistoryList(Value: TStrings);
procedure SetOptions(Value: TOpenOptions);
procedure SetDialogTitle(const Value: string);
function IsCustomTitle: Boolean;
function IsCustomFilter: Boolean;
protected
procedure PopupDropDown(DisableEdit: Boolean); override;
procedure ReceptFileDir(const AFileName: string); override;
procedure ClearFileList; override;
function GetLongName: string; override;
function GetShortName: string; override;
public
constructor Create(AOwner: TComponent); override;
class function DefaultImageIndex: TImageIndex; override;
property Dialog: TOpenDialog read FDialog;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -