📄 tntjvtooledit.pas
字号:
FOptions: TSelectDirOpts;
{$ENDIF VCL}
FInitialDir: WideString;
FDialogText: WideString;
//FDialogKind: TDirDialogKind;
FUseCurrentFont: Boolean; {New}
protected
FMultipleDirs: Boolean; // Polaris (???)
procedure PopupDropDown(DisableEdit: Boolean); override;
procedure ReceptFileDir(const AFileName: WideString); override;
function GetLongName: WideString; override;
function GetShortName: WideString; 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: WideString read FDialogText write FDialogText;
{$IFDEF VCL}
property AutoCompleteOptions;
property AutoCompleteFileOptions default [acfFileSystem, acfFileSysDirs];
property Flat;
property ParentCtl3D;
property DialogOptions: TSelectDirOpts read FOptions write FOptions default [sdAllowCreate];
{$ENDIF VCL}
property InitialDir: WideString 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;
{$IFDEF VCL}
property DragCursor;
property BiDiMode;
property ParentBiDiMode;
property ImeMode;
property ImeName;
property DragKind;
property OnEndDock;
property OnStartDock;
{$ENDIF VCL}
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 UseCurrentFont: Boolean read FUseCurrentFont write FUseCurrentFont default False; {New}
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;
**)
TTntJvInvalidDateEvent = procedure(Sender: TObject; const DateString: WideString;
var NewDate: TDateTime; var Accept: Boolean) of object;
(***
TPreferredDateFormat = (pdLocale, pdLocaleOnly, pdCustom, pdCustomOnly);
**)
TTntJvCustomDateEdit = class(TTntJvCustomComboEdit)
private
FMinDate: TDateTime; // Polaris
FMaxDate: TDateTime; // Polaris
FTitle: WideString;
FOnAcceptDate: TExecDateDialog;
FOnInvalidDate: TTntJvInvalidDateEvent;
FDefaultToday: Boolean;
FPopupColor: TColor;
FCheckOnExit: Boolean;
FBlanksChar: Char;
FCalendarHints: TTntStringList;
FStartOfWeek: TDayOfWeekName;
FWeekends: TDaysOfWeek;
FWeekendColor: TColor;
FCustomDateFormat: string;
FYearDigits: TYearDigits;
FDateFormatPreferred: TPreferredDateFormat;
FDateFormat: string[10];
FDateFormat2: string[10];
FFormatting: Boolean;
// Polaris
procedure SetMinDate(Value: TDateTime);
procedure SetMaxDate(Value: TDateTime);
// Polaris
function GetDate: TDateTime;
procedure SetCustomDateFormat(const Value: string);
procedure SetDateFormatPreferred(Value: TPreferredDateFormat);
function IsDateFormatStored: Boolean;
function IsDateFormatPreferredStored: Boolean;
procedure SetYearDigits(Value: TYearDigits);
function GetPopupColor: TColor;
procedure SetPopupColor(Value: TColor);
function GetDialogTitle: WideString;
procedure SetDialogTitle(const Value: WideString);
function IsCustomTitle: Boolean;
function IsDateStored: Boolean;
function GetCalendarStyle: TCalendarStyle;
procedure SetCalendarStyle(Value: TCalendarStyle);
function GetCalendarHints: TTntStrings;
procedure SetCalendarHints(Value: TTntStrings);
procedure CalendarHintsChanged(Sender: TObject);
procedure SetWeekendColor(Value: TColor);
procedure SetWeekends(Value: TDaysOfWeek);
procedure SetStartOfWeek(Value: TDayOfWeekName);
procedure SetBlanksChar(Value: Char);
//function TextStored: Boolean; {now as public}
// Polaris
function StoreMinDate: Boolean;
function StoreMaxDate: Boolean;
// Polaris
function FourDigitYear: Boolean;
{$IFDEF VCL}
procedure WMContextMenu(var Msg: TWMContextMenu); message WM_CONTEXTMENU;
{$ENDIF VCL}
protected
// Polaris
FDateAutoBetween: Boolean;
procedure SetDate(Value: TDateTime); virtual;
function DoInvalidDate(const DateString: WideString; 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;
{$IFDEF VCL}
procedure CreateWindowHandle(const Params: TCreateParams); override;
{$ENDIF VCL}
{$IFDEF VisualCLX}
procedure CreateWidget; override;
{$ENDIF VisualCLX}
function AcceptPopup(var Value: Variant): Boolean; override;
procedure AcceptValue(const Value: Variant); override;
procedure SetPopupValue(const Value: Variant); override;
function GetDateFormat: WideString;
procedure ApplyDate(Value: TDateTime); virtual;
procedure UpdateFormat;
procedure UpdatePopup;
procedure PopupDropDown(DisableEdit: Boolean); override;
procedure SetParent(AParent: TWinControl); override;
function GetDefaultDateFormat: string; virtual;
function GetDefaultDateFormatPreferred: TPreferredDateFormat; virtual;
property BlanksChar: Char read FBlanksChar write SetBlanksChar default ' ';
property CalendarHints: TTntStrings read GetCalendarHints write SetCalendarHints;
property CheckOnExit: Boolean read FCheckOnExit write FCheckOnExit default False;
property DefaultToday: Boolean read FDefaultToday write FDefaultToday default False;
property DialogTitle: WideString 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 DateFormat: string read FCustomDateFormat write SetCustomDateFormat stored IsDateFormatStored;
property DateFormatPreferred: TPreferredDateFormat read FDateFormatPreferred
write SetDateFormatPreferred stored IsDateFormatPreferredStored;
property YearDigits: TYearDigits read FYearDigits write SetYearDigits default dyDefault;
property OnAcceptDate: TExecDateDialog read FOnAcceptDate write FOnAcceptDate;
property OnInvalidDate: TTntJvInvalidDateEvent 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;
function TextStored: Boolean; {Now as public}
procedure UpdateMask; virtual;
property Date: TDateTime read GetDate write SetDate stored IsDateStored;
property PopupVisible;
end;
TTntJvDateEdit = class(TTntJvCustomDateEdit)
// Polaris
protected
procedure SetDate(Value: TDateTime); override;
// Polaris
public
constructor Create(AOwner: TComponent); override;
property EditMask;
published
property Date;
property DateFormat;
property DateFormatPreferred;
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;
{$IFDEF VCL}
property DragCursor;
property BiDiMode;
property DragKind;
property Flat;
property ParentBiDiMode;
property ParentCtl3D;
property ImeMode;
property ImeName;
property OnEndDock;
property OnStartDock;
{$ENDIF VCL}
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 DateFormatChangedW;
function EditorTextMargins(Editor: TCustomEdit): TPoint;
{$IFDEF VCL}
function PaintComboEditW(Editor: TTntJvCustomComboEdit; const AText: WideString;
AAlignment: TAlignment; StandardPaint: Boolean;
var ACanvas: TControlCanvas; var Msg: TWMPaint): Boolean;
function PaintEditW(Editor: TCustomEdit; const AText: WideString;
AAlignment: TAlignment; PopupVisible: Boolean;
DisabledTextColor: TColor; StandardPaint: Boolean;
var ACanvas: TControlCanvas; var Msg: TWMPaint): Boolean;
{$ENDIF VCL}
{$IFDEF VisualCLX}
function PaintComboEditW(Editor: TTntJvCustomComboEdit; const AText: WideString;
AAlignment: TAlignment; StandardPaint: Boolean; Flat: Boolean;
ACanvas: TCanvas): Boolean;
{ PaintEditW (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 PaintEditW(Editor: TCustomEdit; const AText: WideString;
AAlignment: TAlignment; PopupVisible: Boolean;
DisabledTextColor: TColor; StandardPaint: Boolean; Flat: Boolean;
ACanvas: TCanvas): Boolean;
{$ENDIF VisualCLX}
(****
{$IFDEF VisualCLX}
const
OBM_COMBO = 1;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -