📄 jvqtooledit.pas
字号:
property DialogFiles: TStrings read GetDialogFiles;
published
//Polaris
property Action;
property Align;
property AutoSize;
property AddQuotes: Boolean read FAddQuotes write FAddQuotes default True;
property DialogKind: TFileDialogKind read FDialogKind write SetDialogKind
default dkOpen;
property DefaultExt: TFileExt read GetDefaultExt write SetDefaultExt;
property FileName: TFileName read GetFileName write SetFileName stored False;
property Filter: string read GetFilter write SetFilter stored IsCustomFilter;
property FilterIndex: Integer read GetFilterIndex write SetFilterIndex default 1;
property InitialDir: string read GetInitialDir write SetInitialDir;
{ (rb) Obsolete; added 'stored False', eventually remove }
property HistoryList: TStrings read GetHistoryList write SetHistoryList stored False;
property DialogOptions: TOpenOptions read GetOptions write SetOptions
default [ofHideReadOnly];
property DialogTitle: string read GetDialogTitle write SetDialogTitle
stored IsCustomTitle;
property AutoSelect;
property ButtonHint;
property ButtonFlat;
property BorderStyle;
property CharCase;
property ClickKey;
property Color;
property DirectInput;
property DragMode;
property EditMask;
property Enabled;
property Font;
property Glyph;
property GroupIndex;
property ImageIndex;
property Images;
property ImageKind;
property NumGlyphs;
property ButtonWidth;
property HideSelection;
property Anchors;
property Constraints;
property ParentColor;
property ParentFont;
property ParentShowHint;
property PopupMenu;
property ReadOnly;
property ShowHint;
property ShowButton;
property TabOrder;
property TabStop;
property Text;
property Visible;
property OnChange;
property OnClick;
property OnDblClick;
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;
property OnContextPopup;
end;
TDirDialogKind = (dkVCL, dkWin32);
TJvDirectoryEdit = class(TJvFileDirEdit)
private
FInitialDir: string;
FDialogText: string;
FDialogKind: TDirDialogKind;
protected
FMultipleDirs: Boolean; // Polaris (???)
procedure PopupDropDown(DisableEdit: Boolean); override;
procedure ReceptFileDir(const AFileName: string); override;
function GetLongName: string; override;
function GetShortName: string; override;
public
constructor Create(AOwner: TComponent); override;
class function DefaultImageIndex: TImageIndex; override;
published
//Polaris
property Action;
property Align;
property AutoSize;
property DialogKind: TDirDialogKind read FDialogKind write FDialogKind default dkVCL;
property DialogText: string read FDialogText write FDialogText;
property InitialDir: string read FInitialDir write FInitialDir;
property MultipleDirs: Boolean read FMultipleDirs write FMultipleDirs default False;
property AutoSelect;
property ButtonHint;
property ButtonFlat;
property BorderStyle;
property CharCase;
property ClickKey;
property Color;
property DirectInput;
property DragMode;
property EditMask;
property Enabled;
property Font;
property Glyph;
property GroupIndex;
property ImageIndex;
property Images;
property ImageKind;
property NumGlyphs;
property ButtonWidth;
property HideSelection;
property Anchors;
property Constraints;
property ParentColor;
property ParentFont;
property ParentShowHint;
property PopupMenu;
property ReadOnly;
property ShowHint;
property ShowButton;
property TabOrder;
property TabStop;
property Text;
property Visible;
property OnChange;
property OnClick;
property OnDblClick;
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;
property OnContextPopup;
end;
TCalendarStyle = (csPopup, csDialog);
TYearDigits = (dyDefault, dyFour, dyTwo);
const
{$IFDEF DEFAULT_POPUP_CALENDAR}
dcsDefault = csPopup;
{$ELSE}
dcsDefault = csDialog;
{$ENDIF DEFAULT_POPUP_CALENDAR}
type
TExecDateDialog = procedure(Sender: TObject; var ADate: TDateTime;
var Action: Boolean) of object;
TJvInvalidDateEvent = procedure(Sender: TObject; const DateString: string;
var NewDate: TDateTime; var Accept: Boolean) of object;
TJvCustomDateEdit = class(TJvCustomComboEdit)
private
FMinDate: TDateTime; // Polaris
FMaxDate: TDateTime; // Polaris
FTitle: string;
FOnAcceptDate: TExecDateDialog;
FOnInvalidDate: TJvInvalidDateEvent;
FDefaultToday: Boolean;
FPopupColor: TColor;
FCheckOnExit: Boolean;
FBlanksChar: Char;
FCalendarHints: TStringList;
FStartOfWeek: TDayOfWeekName;
FWeekends: TDaysOfWeek;
FWeekendColor: TColor;
FYearDigits: TYearDigits;
FDateFormat: string[10];
FFormatting: Boolean;
// Polaris
procedure SetMinDate(Value: TDateTime);
procedure SetMaxDate(Value: TDateTime);
// Polaris
function GetDate: TDateTime;
procedure SetYearDigits(Value: TYearDigits);
function GetPopupColor: TColor;
procedure SetPopupColor(Value: TColor);
function GetDialogTitle: string;
procedure SetDialogTitle(const Value: string);
function IsCustomTitle: Boolean;
function IsDateStored: Boolean;
function GetCalendarStyle: TCalendarStyle;
procedure SetCalendarStyle(Value: TCalendarStyle);
function GetCalendarHints: TStrings;
procedure SetCalendarHints(Value: TStrings);
procedure CalendarHintsChanged(Sender: TObject);
procedure SetWeekendColor(Value: TColor);
procedure SetWeekends(Value: TDaysOfWeek);
procedure SetStartOfWeek(Value: TDayOfWeekName);
procedure SetBlanksChar(Value: Char);
function TextStored: Boolean;
// Polaris
function StoreMinDate: Boolean;
function StoreMaxDate: Boolean;
// Polaris
function FourDigitYear: Boolean;
protected
// Polaris
FDateAutoBetween: Boolean;
procedure SetDate(Value: TDateTime); virtual;
function DoInvalidDate(const DateString: string; var ANewDate: TDateTime): Boolean; virtual;
procedure SetDateAutoBetween(Value: Boolean); virtual;
procedure TestDateBetween(var Value: TDateTime); virtual;
// Polaris
procedure DoExit; override;
procedure Change; override;
procedure KeyDown(var Key: Word; Shift: TShiftState); override;
procedure KeyPress(var Key: Char); override;
procedure CreateWidget; override;
function AcceptPopup(var Value: Variant): Boolean; override;
procedure AcceptValue(const Value: Variant); override;
procedure SetPopupValue(const Value: Variant); override;
function GetDateFormat: string;
procedure ApplyDate(Value: TDateTime); virtual;
procedure UpdateFormat;
procedure UpdatePopup;
procedure PopupDropDown(DisableEdit: Boolean); override;
property BlanksChar: Char read FBlanksChar write SetBlanksChar default ' ';
property CalendarHints: TStrings read GetCalendarHints write SetCalendarHints;
property CheckOnExit: Boolean read FCheckOnExit write FCheckOnExit default False;
property DefaultToday: Boolean read FDefaultToday write FDefaultToday default False;
property DialogTitle: string read GetDialogTitle write SetDialogTitle stored IsCustomTitle;
property EditMask stored False;
property Formatting: Boolean read FFormatting;
property ImageKind default ikDefault;
property PopupColor: TColor read GetPopupColor write SetPopupColor default clMenu;
property CalendarStyle: TCalendarStyle read GetCalendarStyle
write SetCalendarStyle default dcsDefault;
property StartOfWeek: TDayOfWeekName read FStartOfWeek write SetStartOfWeek default Mon;
property Weekends: TDaysOfWeek read FWeekends write SetWeekends default [Sun];
property WeekendColor: TColor read FWeekendColor write SetWeekendColor default clRed;
property YearDigits: TYearDigits read FYearDigits write SetYearDigits default dyDefault;
property OnAcceptDate: TExecDateDialog read FOnAcceptDate write FOnAcceptDate;
property OnInvalidDate: TJvInvalidDateEvent read FOnInvalidDate write FOnInvalidDate;
property MaxLength stored False;
{ Text is already stored via Date property }
property Text stored False;
public
// Polaris
property DateAutoBetween: Boolean read FDateAutoBetween write SetDateAutoBetween default True;
property MinDate: TDateTime read FMinDate write SetMinDate stored StoreMinDate;
property MaxDate: TDateTime read FMaxDate write SetMaxDate stored StoreMaxDate;
procedure ValidateEdit; override;
// Polaris
constructor Create(AOwner: TComponent); override;
class function DefaultImageIndex: TImageIndex; override;
destructor Destroy; override;
procedure CheckValidDate;
function GetDateMask: string;
procedure UpdateMask; virtual;
property Date: TDateTime read GetDate write SetDate stored IsDateStored;
property PopupVisible;
end;
TJvDateEdit = class(TJvCustomDateEdit)
// Polaris
protected
procedure SetDate(Value: TDateTime); override;
// Polaris
public
constructor Create(AOwner: TComponent); override;
property EditMask;
published
property Date;
property DateAutoBetween; // Polaris
property MinDate; // Polaris
property MaxDate; // Polaris
property Align; // Polaris
property Action;
property AutoSelect;
property AutoSize;
property BlanksChar;
property BorderStyle;
property ButtonHint;
property ButtonFlat;
property CalendarHints;
property CheckOnExit;
property ClickKey;
property Color;
property DefaultToday;
property DialogTitle;
property DirectInput;
property DragMode;
property Enabled;
property Font;
property Glyph;
property GroupIndex;
property ImageIndex;
property Images;
property ImageKind;
property NumGlyphs;
property ButtonWidth;
property HideSelection;
property Anchors;
property Constraints;
property MaxLength;
property ParentColor;
property ParentFont;
property ParentShowHint;
property PopupAlign;
property PopupColor;
property PopupMenu;
property ReadOnly;
property ShowHint;
property ShowButton;
property CalendarStyle;
property StartOfWeek;
property Weekends;
property WeekendColor;
property YearDigits;
property TabOrder;
property TabStop;
property Text;
property Visible;
property OnAcceptDate;
property OnInvalidDate;
property OnButtonClick;
property OnChange;
property OnClick;
property OnDblClick;
property OnDragDrop;
property OnDragOver;
property OnEndDrag;
property OnEnter;
property OnExit;
property OnKeyPress;
property OnKeyUp;
property OnMouseDown;
property OnMouseEnter;
property OnMouseLeave;
property OnMouseMove;
property OnMouseUp;
property OnStartDrag;
property OnContextPopup;
property ClipboardCommands; // RDB
property DisabledTextColor; // RDB
property DisabledColor; // RDB
property OnKeyDown; // RDB
end;
EComboEditError = class(EJVCLException);
{ Utility routines }
procedure DateFormatChanged;
function EditorTextMargins(Editor: TCustomEdit): TPoint;
function PaintComboEdit(Editor: TJvCustomComboEdit; const AText: string;
AAlignment: TAlignment; StandardPaint: Boolean; Flat: Boolean;
ACanvas: TCanvas): Boolean;
{ PaintEdit (CLX) needs an implemented EM_GETRECT message handler or a
TCustomComboEdit/TCustomComboMask class. If no EM_GETTEXT handler exists or
the class is derived from another class, it uses the ClientRect of the edit
control. }
function PaintEdit(Editor: TCustomEdit; const AText: WideString;
AAlignment: TAlignment; PopupVisible: Boolean;
DisabledTextColor: TColor; StandardPaint: Boolean; Flat: Boolean;
ACanvas: TCanvas): Boolean;
const
OBM_COMBO = 1;
function LoadDefaultBitmap(Bmp: TBitmap; Item: Integer): Boolean;
function IsInWordArray(Value: Word; const A: array of Word): Boolean;
implementation
uses
{$IFDEF UNITVERSIONING}
JclUnitVersioning,
{$ENDIF UNITVERSIONING}
{$IFDEF HAS_UNIT_VARIANTS}
Variants,
{$ENDIF HAS_UNIT_VARIANTS}
{$IFDEF HAS_UNIT_RTLCONSTS}
RTLConsts,
{$ENDIF HAS_UNIT_RTLCONSTS}
Math, QConsts,
MaskUtils,
{$IFDEF MSWINDOWS}
ShellAPI, ActiveX,
{$ENDIF MSWINDOWS}
JvQPickDate, JvQJCLUtils, JvQJVCLUtils,
JvQThemes, JvQResources, JvQConsts;
{$IFDEF MSWINDOWS}
{$R ..\Resources\JvToolEdit.res}
{$ENDIF MSWINDOWS}
{$IFDEF UNIX}
{$R ../Resources/JvToolEdit.res}
{$ENDIF UNIX}
type
TCustomEditAccessProtected = class(TCustomEdit);
TCustomFormAccessProtected = class(TCustomForm);
TWinControlAccessProtected = class(TWinControl);
{$HINTS OFF}
TCustomMaskEditAccessPrivate = class(TCustomEdit)
private
// Do not remove these fields, although they are not used.
FEditMask: TEditMask;
FMaskBlank: Char;
FMaxChars: Integer;
FMaskSave: Boolean;
FMaskState: TMaskedState;
FCaretPos: Integer;
FBtnDownX: Integer;
FOldValue: string;
FSettingCursor: Boolean;
end;
{$HINTS ON}
const
sDirBmp = 'JvDirectoryEditGLYPH'; { Directory editor button glyph }
sFileBmp = 'JvFilenameEditGLYPH'; { Filename editor button glyph }
sDateBmp = 'JvCustomDateEditGLYPH'; { Date editor button glyph }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -