From 3c46241a715d2022766bed95ae38ed6b649fea2e Mon Sep 17 00:00:00 2001 From: bart <9132501-flyingsheep@users.noreply.gitlab.com> Date: Wed, 9 Apr 2014 15:46:18 +0000 Subject: [PATCH] LCL: undo the renaming of TEditButton into TButtonEdit. TEditButton now has the new implementation of previously introduced TButtonEdit component. git-svn-id: trunk@44664 - --- .gitattributes | 2 - images/components/tbuttonedit.png | Bin 274 -> 0 bytes images/components_images.res | Bin 67939 -> 67611 bytes images/components_images_list.txt | 1 - lcl/alllclunits.pp | 39 +- lcl/buttonedit.pas | 2273 ----------------------------- lcl/editbtn.pas | 1215 +++++++++++---- lcl/lclbase.lpk | 778 +++++----- lcl/registerlcl.pas | 3 +- 9 files changed, 1326 insertions(+), 2985 deletions(-) delete mode 100644 images/components/tbuttonedit.png delete mode 100644 lcl/buttonedit.pas diff --git a/.gitattributes b/.gitattributes index b740c64d5d..14673a5db3 100644 --- a/.gitattributes +++ b/.gitattributes @@ -5578,7 +5578,6 @@ images/components/tbevel.png -text svneol=unset#image/png images/components/tbitbtn.png -text svneol=unset#image/png images/components/tbufdataset.png -text svneol=unset#image/png images/components/tbutton.png -text svneol=unset#image/png -images/components/tbuttonedit.png -text svneol=unset#image/png images/components/tbuttonpanel.png -text svneol=unset#image/png images/components/tcalcedit.png -text svneol=unset#image/png images/components/tcalculatordialog.png -text svneol=unset#image/png @@ -6027,7 +6026,6 @@ lcl/arrow.pp svneol=native#text/pascal lcl/asyncprocess.pp svneol=native#text/plain lcl/barchart.pp svneol=native#text/pascal lcl/btn_icons.res -text -lcl/buttonedit.pas svneol=native#text/pascal lcl/buttonpanel.pas svneol=native#text/pascal lcl/buttons.pp svneol=native#text/pascal lcl/calendar.pp svneol=native#text/pascal diff --git a/images/components/tbuttonedit.png b/images/components/tbuttonedit.png deleted file mode 100644 index 8079457677ebb45197e7c5d3b34cc515957d27f9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 274 zcmV+t0qy>YP)LH-O*J#xdr zfXTL*UP8HihBdjWDnh`%W3SJ(cql)U=`|C>L7(MPw)!Vy)55+|C$huxYd8IaC$kfH Y0lEZZxg!EOmjD0&07*qoM6N<$f;ggb8UO$Q diff --git a/images/components_images.res b/images/components_images.res index 6b85f92c454ed08e94391e74b5d6afeba50005dd..1b4c86b0e759c199781b41655aff3a4e4c27b276 100644 GIT binary patch delta 14 WcmaDniDmW#mJKOso7bdoUkCs+k_SNm delta 34 ocmbO|f#vZemJKOslVwu*xSbe68A5>2pTTdkqm2FLlGNpk0LH%yFaQ7m diff --git a/images/components_images_list.txt b/images/components_images_list.txt index 299ddec173..d72367b6fa 100644 --- a/images/components_images_list.txt +++ b/images/components_images_list.txt @@ -43,7 +43,6 @@ components/tdirectoryedit.png components/tdrawgrid.png components/tedit.png components/teditbutton.png -components/tbuttonedit.png components/teventlog.png components/tfilelistbox.png components/tfilenameedit.png diff --git a/lcl/alllclunits.pp b/lcl/alllclunits.pp index efa54e187c..0fd54fc9c4 100644 --- a/lcl/alllclunits.pp +++ b/lcl/alllclunits.pp @@ -9,32 +9,31 @@ interface uses BarChart, CheckLst, Clipbrd, ColorBox, ComCtrls, Controls, CustomTimer, DBActns, DbCtrls, DBGrids, DefaultTranslator, Dialogs, DynamicArray, - DynHashArray, DynQueue, EditBtn, ExtCtrls, ExtDlgs, ExtendedStrings, - extgraphics, FileCtrl, Forms, FPCAdds, Graphics, GraphMath, GraphType, - GraphUtil, Grids, HelpIntfs, IcnsTypes, ImageListCache, ImgList, - IniPropStorage, InterfaceBase, IntfGraphics, LazHelpHTML, LazHelpIntf, - LazLinkedList, LCLClasses, LCLIntf, LCLMemManager, LCLMessageGlue, LCLProc, - LCLResCache, LCLStrConsts, LCLType, Menus, LCLUnicodeData, LCLVersion, - LMessages, LResources, maps, MaskEdit, PairSplitter, PopupNotifier, - PostScriptCanvas, PostScriptPrinter, postscriptunicode, Printers, - PropertyStorage, RubberBand, ShellCtrls, Spin, StdActns, StdCtrls, - StringHashList, TextStrings, Themes, TmSchema, Toolwin, Translations, - UTrace, XMLPropStorage, Messages, WSButtons, WSCalendar, WSCheckLst, - WSComCtrls, WSControls, WSDesigner, WSDialogs, WSExtCtrls, WSExtDlgs, - WSFactory, WSForms, WSGrids, WSImgList, WSLCLClasses, WSMenus, - WSPairSplitter, WSProc, WSReferences, WSSpin, WSStdCtrls, WSToolwin, - ActnList, AsyncProcess, ButtonPanel, Buttons, Calendar, RegisterLCL, - ValEdit, lazcanvas, lazdialogs, lazregions, customdrawn_common, - customdrawncontrols, customdrawndrawers, lazdeviceapis, LDockTree, - LazFreeTypeIntfDrawer, customdrawn_winxp, customdrawn_android, Arrow, - ButtonEdit, LazarusPackageIntf; + DynHashArray, DynQueue, ExtCtrls, ExtDlgs, ExtendedStrings, extgraphics, + FileCtrl, Forms, FPCAdds, Graphics, GraphMath, GraphType, GraphUtil, Grids, + HelpIntfs, IcnsTypes, ImageListCache, ImgList, IniPropStorage, + InterfaceBase, IntfGraphics, LazHelpHTML, LazHelpIntf, LazLinkedList, + LCLClasses, LCLIntf, LCLMemManager, LCLMessageGlue, LCLProc, LCLResCache, + LCLStrConsts, LCLType, Menus, LCLUnicodeData, LCLVersion, LMessages, + LResources, maps, MaskEdit, PairSplitter, PopupNotifier, PostScriptCanvas, + PostScriptPrinter, postscriptunicode, Printers, PropertyStorage, RubberBand, + ShellCtrls, Spin, StdActns, StdCtrls, StringHashList, TextStrings, Themes, + TmSchema, Toolwin, Translations, UTrace, XMLPropStorage, Messages, + WSButtons, WSCalendar, WSCheckLst, WSComCtrls, WSControls, WSDesigner, + WSDialogs, WSExtCtrls, WSExtDlgs, WSFactory, WSForms, WSGrids, WSImgList, + WSLCLClasses, WSMenus, WSPairSplitter, WSProc, WSReferences, WSSpin, + WSStdCtrls, WSToolwin, ActnList, AsyncProcess, ButtonPanel, Buttons, + Calendar, RegisterLCL, ValEdit, lazcanvas, lazdialogs, lazregions, + customdrawn_common, customdrawncontrols, customdrawndrawers, lazdeviceapis, + LDockTree, LazFreeTypeIntfDrawer, customdrawn_winxp, customdrawn_android, + Arrow, EditBtn, LazarusPackageIntf; implementation procedure Register; begin RegisterUnit('RegisterLCL', @RegisterLCL.Register); - RegisterUnit('ButtonEdit', @ButtonEdit.Register); + RegisterUnit('EditBtn', @EditBtn.Register); end; initialization diff --git a/lcl/buttonedit.pas b/lcl/buttonedit.pas deleted file mode 100644 index 3a26bd3864..0000000000 --- a/lcl/buttonedit.pas +++ /dev/null @@ -1,2273 +0,0 @@ -{ - - TButtonEdit Component - (Relacement for TEditButton component) - - ***************************************************************************** - * * - * See the file COPYING.modifiedLGPL.txt, included in this distribution, * - * for details about the copyright. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * - * * - ***************************************************************************** - - Original Author of TCustomButtonEdit: Derit Agustin - -} -unit ButtonEdit; - -{$mode objfpc}{$H+} - -{$I lcl_defines.inc} - -interface - -uses - Classes, SysUtils, LCLProc, LResources, LCLStrConsts, Types, LCLType, LMessages, - Graphics, Controls, Forms, FileUtil, Dialogs, StdCtrls, Buttons, Calendar, - ExtDlgs, CalendarPopup, MaskEdit, Menus; - -const - NullDate: TDateTime = 0; - -type - - - TButtonAlign = (BaLeft, BaRight); - - { TBEEdit } - - TBeEdit = class(TCustomMaskedit) - protected - procedure DoEnter; override; - procedure DoExit; override; - end; - - { TCustomButtonEdit } - - TCustomButtonEdit = class(TCustomControl) - private - FButton: TSpeedButton; - FButtonAlign: TButtonAlign; - FButtonOnlyWhenFocused: Boolean; - FDirectInput: Boolean; - FEdit: TBeEdit; - FIsReadOnly: Boolean; - FFlat: Boolean; - //Forwarded events from FButton - FOnButtonClick: TNotifyEvent; - //Forwarded events from FEdit - FOnEditClick: TNotifyEvent; - FOnEditChange: TNotifyEvent; - FOnEditDblClick: TNotifyEvent; - FOnEditDragDrop: TDragDropEvent; - FOnEditDragOver: TDragOverEvent; - FOnEditEditingDone: TNotifyEvent; - FOnEditEndDrag: TEndDragEvent; - FOnEditExit: TNotifyEvent; - FOnEditKeyDown: TKeyEvent; - FOnEditKeyPress: TKeyPressEvent; - FOnEditEnter: TNotifyEvent; - FOnEditKeyUp: TKeyEvent; - FOnEditMouseDown: TMouseEvent; - FOnEditMouseUp: TMouseEvent; - FOnEditMouseEnter: TNotifyEvent; - FOnEditMouseLeave: TNotifyEvent; - FOnEditMouseMove: TMouseMoveEvent; - FOnEditStartDrag: TStartDragEvent; - FOnEditUtf8KeyPress: TUtf8KeyPressEvent; - - function GetAlignment: TAlignment; - function GetAutoSelect: Boolean; - function GetAutoSelected: Boolean; - function GetBtnCaption: TCaption; - function GetButtonHint: TTranslateString; - function GetButtonWidth: Integer; - function GetCanUndo: Boolean; - function GetCaretPos: TPoint; - function GetCharCase: TEditCharCase; - function GetColor: TColor; - function GetDirectInput: Boolean; - function GetEchoMode: TEchoMode; - function GetEditMask: String; - function GetGlyph: TBitmap; - function GetHideSelection: Boolean; - function GetMaxLength: Integer; - function GetModified: Boolean; - function GetNumbersOnly: Boolean; - function GetNumGlyps: Integer; - function GetPasswordChar: char; - function GetReadOnly: Boolean; - function GetSelLength: Integer; - function GetSelStart: Integer; - function GetSelText: String; - function GetText: TCaption; - function IsCustomGlyph : Boolean; - - procedure InternalOnButtonClick(Sender: TObject); - procedure InternalOnEditClick(Sender: TObject); - procedure InternalOnEditDblClick(Sender: TObject); - procedure InternalOnEditChange(Sender: TObject); - procedure InternalOnEditDragDrop(Sender, Source: TObject; X,Y: Integer); - procedure InternalOnEditDragOver(Sender, Source: TObject; X,Y: Integer; State: TDragState; var Accept: Boolean); - procedure InternalOnEditEditingDone(Sender: TObject); - procedure InternalOnEditEnter(Sender: TObject); - procedure InternalOnEditExit(Sender: TObject); - procedure InternalOnEditEndDrag(Sender, Target: TObject; X,Y: Integer); - procedure InternalOnEditKeyDown(Sender: TObject; var Key: word; Shift: TShiftState); - procedure InternalOnEditKeyPress(Sender: TObject; var Key: char); - procedure InternalOnEditKeyUp(Sender: TObject; var Key: word; Shift: TShiftState); - procedure InternalOnEditMouseDown(Sender: TObject; Button: TMouseButton; - Shift: TShiftState; X, Y: Integer); - procedure InternalOnEditMouseUp(Sender: TObject; Button: TMouseButton; - Shift: TShiftState; X, Y: Integer); - procedure InternalOnEditMouseEnter(Sender: TObject); - procedure InternalOnEditMouseLeave(Sender: TObject); - procedure InternalOnEditMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); - procedure InternalOnEditUtf8KeyPress(Sender: TObject; var UTF8Key: TUTF8Char); - procedure InternalOnEditStartDrag(Sender: TObject; var DragObject: TDragObject); - - procedure SetAlignment(AValue: TAlignment); - procedure SetAutoSelect(AValue: Boolean); - procedure SetAutoSelected(AValue: Boolean); - procedure SetButtonAlign(AValue: TButtonAlign); - procedure SetBtnCaption(AValue: TCaption); - procedure SetButtonHint(AValue: TTranslateString); - procedure SetButtonOnlyWhenFocused(AValue: Boolean); - procedure SetButtonWidth(AValue: Integer); - procedure SetCaretPos(AValue: TPoint); - procedure SetCharCase(AValue: TEditCharCase); - procedure SetDirectInput(AValue: Boolean); - procedure SetEchoMode(AValue: TEchoMode); - procedure SetEditMask(AValue: String); - procedure SetFlat(AValue: Boolean); - procedure SetGlyph(AValue: TBitmap); - procedure SetHideSelection(AValue: Boolean); - procedure SetMaxLength(AValue: Integer); - procedure SetModified(AValue: Boolean); - procedure SetNumbersOnly(AValue: Boolean); - procedure SetNumGlyphs(AValue: Integer); - procedure SetPasswordChar(AValue: char); - procedure SetPopupMenu(AValue: TPopupMenu); - procedure SetReadOnly(AValue: Boolean); - procedure SetSelLength(AValue: Integer); - procedure SetSelStart(AValue: Integer); - procedure SetSelText(AValue: String); - procedure SetText(AValue: TCaption); - protected - class function GetControlClassDefaultSize: TSize; override; - function CalcButtonVisible: Boolean; virtual; - function GetDefaultGlyph: TBitmap; virtual; - function GetDefaultGlyphName: String; virtual; - function GetEditPopupMenu: TPopupMenu; - - procedure CalculatePreferredSize(var PreferredWidth, - PreferredHeight: integer; - WithThemeSpace: Boolean); override; - procedure CheckButtonVisible; - procedure ButtonClick; virtual; - procedure EditChange; virtual; - procedure EditClick; - procedure EditDblClick; virtual; - procedure EditDragDrop(Source: TObject; X,Y: Integer); - procedure EditDragOver(Source: TObject; X,Y: Integer; State: TDragState; var Accept: Boolean); - procedure EditEditingDone; - procedure EditEndDrag(Target: TObject; X,Y: Integer); - procedure EditEnter; virtual; - procedure EditExit; virtual; - procedure EditKeyDown(var Key: word; Shift: TShiftState); - procedure EditKeyPress( var Key: char); - procedure EditKeyUp(var Key: word; Shift: TShiftState); - procedure EditMouseDown(Button: TMouseButton; - Shift: TShiftState; X, Y: Integer); - procedure EditMouseUp(Button: TMouseButton; - Shift: TShiftState; X, Y: Integer); - procedure EditMouseEnter; - procedure EditMouseLeave; - procedure EditMouseMove(Shift: TShiftState; X, Y: Integer); - procedure EditUtf8KeyPress(var UTF8Key: TUTF8Char); - procedure EditStartDrag(var DragObject: TDragObject); - - - procedure Loaded; override; - procedure SetAutoSize(AValue: Boolean); override; - procedure SetColor(AValue: TColor); override; - procedure SetCursor(AValue: TCursor); override; - - property AutoSelect: Boolean read GetAutoSelect write SetAutoSelect default True; - property AutoSelected: Boolean read GetAutoSelected write SetAutoSelected; - property Button: TSpeedButton read FButton; - property ButtonAlign: TButtonAlign read FButtonAlign write SetButtonAlign default BaRight; - property ButtonCaption: TCaption read GetBtnCaption write SetBtnCaption; - property ButtonHint: TTranslateString read GetButtonHint write SetButtonHint; - property ButtonOnlyWhenFocused: Boolean read FButtonOnlyWhenFocused write SetButtonOnlyWhenFocused default False; - property ButtonWidth: Integer read GetButtonWidth write SetButtonWidth; - property Color: TColor read GetColor write SetColor stored True default {$ifdef UseCLDefault}clDefault{$else}clWindow{$endif}; - property DirectInput : Boolean read GetDirectInput write SetDirectInput default True; - property EditMask: String read GetEditMask write SetEditMask; - property Flat: Boolean read FFlat write SetFlat default False; - property Glyph: TBitmap read GetGlyph write SetGlyph stored IsCustomGlyph; - property NumGlyphs: Integer read GetNumGlyps write SetNumGlyphs; - - property OnButtonClick: TNotifyEvent read FOnButtonClick write FOnButtonClick; - property OnClick: TNotifyEvent read FOnEditClick write FOnEditClick; - property OnDblClick: TNotifyEvent read FOnEditDblClick write FOnEditDblClick; - property OnDragDrop: TDragDropEvent read FOnEditDragDrop write FOnEditDragDrop; - property OnDragOver: TDragOverEvent read FOnEditDragOver write FOnEditDragOver; - property OnEditingDone: TNotifyEvent read FOnEditEditingDone write FOnEditEditingDone; - property OnEndDrag: TEndDragEvent read FOnEditEndDrag write FOnEditEndDrag; - property OnEnter: TNotifyEvent read FOnEditEnter write FOnEditEnter; - property OnExit: TNotifyEvent read FOnEditExit write FOnEditExit; - property OnMouseDown: TMouseEvent read FOnEditMouseDown write FOnEditMouseDown; - property OnKeyPress: TKeyPressEvent read FOnEditKeyPress write FOnEditKeyPress; - property OnKeyUp: TKeyEvent read FOnEditKeyUp write FOnEditKeyUp; - property OnMouseEnter: TNotifyEvent read FOnEditMouseEnter write FOnEditMouseEnter; - property OnMouseLeave: TNotifyEvent read FOnEditMouseLeave write FOnEditMouseLeave; - property OnMouseMove: TMouseMoveEvent read FOnEditMouseMove write FOnEditMouseMove; - property OnMouseUp: TMouseEvent read FOnEditMouseUp write FOnEditMouseUp; - property OnStartDrag: TStartDragEvent read FOnEditStartDrag write FOnEditStartDrag; - property OnUtf8KeyPress: TUtf8KeyPressEvent read FOnEditUtf8KeyPress write FOnEditUtf8KeyPress; - public - constructor Create(AOwner: TComponent); override; - destructor Destroy; override; - - procedure Clear; - procedure ClearSelection; virtual; - procedure CopyToClipboard; virtual; - procedure CutToClipboard; virtual; - procedure PasteFromClipboard; virtual; - procedure SelectAll; - procedure SetFocus; override; - procedure Undo; virtual; - - property Autosize default True; - property Alignment: TAlignment read GetAlignment write SetAlignment default taLeftJustify; - property CanUndo: Boolean read GetCanUndo; - property CaretPos: TPoint read GetCaretPos write SetCaretPos; - property CharCase: TEditCharCase read GetCharCase write SetCharCase default ecNormal; - property EchoMode: TEchoMode read GetEchoMode write SetEchoMode default emNormal; - property HideSelection: Boolean read GetHideSelection write SetHideSelection default False; - property MaxLength: Integer read GetMaxLength write SetMaxLength; - property Modified: Boolean read GetModified write SetModified; - property NumbersOnly: Boolean read GetNumbersOnly write SetNumbersOnly default False; - property PasswordChar: char read GetPasswordChar write SetPasswordChar; - property PopupMenu: TPopupMenu read GetEditPopupMenu write SetPopupMenu; - property ReadOnly: Boolean read GetReadOnly write SetReadOnly default False; - property SelLength: Integer read GetSelLength write SetSelLength; - property SelStart: Integer read GetSelStart write SetSelStart; - property SelText: String read GetSelText write SetSelText; - property Text: TCaption read GetText write SetText; - - property OnChange: TNotifyEvent read FOnEditChange write FOnEditChange; - - end; - - { TButtonEdit } - - TButtonEdit = class(TCustomButtonEdit) - public - property AutoSelected; - property Button; - published - property NumbersOnly; - property Action; - property AutoSelect; - property AutoSize default True; - property Align; - property Alignment; - property Anchors; - property BiDiMode; - property BorderSpacing; - property BorderStyle default bsNone; - property ButtonAlign; - property ButtonCaption; - property ButtonHint; - property ButtonOnlyWhenFocused; - property ButtonWidth; - property CharCase; - property Color; - property Constraints; - property Cursor; - property DirectInput; - property EchoMode; - property Enabled; - property Flat; - property Font; - property Glyph; -// property HideSelection; - property Hint; - property MaxLength; - property NumGlyphs; - property OnButtonClick; - property OnChange; - property OnClick; - property OnDblClick; - property OnDragDrop; - property OnDragOver; - property OnContextPopup; - property OnEditingDone; - 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 OnUTF8KeyPress; - property ParentBiDiMode; - property ParentColor; - property ParentFont; - property PasswordChar; - property PopupMenu; - property ReadOnly; - property ShowHint; - property TabOrder; - property TabStop; - property Text; - property Visible; - end; - - // Called when an item is filtered. Returns true if the item passes the filter. - // Done=False means the data should also be filtered by its title string. - // Done=True means no other filtering is needed. - TFilterItemEvent = function (Item: TObject; out Done: Boolean): Boolean of object; - - // Can be used only for items that have a checkbox. Returns true if checked. - TCheckItemEvent = function (Item: TObject): Boolean of object; - - { TCustomControlFilterEdit } - - // An abstract base class for edit controls which filter data in - // visual controls like TListView and TTreeView. - TCustomControlFilterEdit = class(TCustomButtonEdit) - private - fFilter: string; - fIdleConnected: Boolean; - fSortData: Boolean; // Data needs to be sorted. - fUseFormActivate: Boolean; - fIsFirstSetFormActivate: Boolean; - fJustActivated: Boolean; - fParentForm: TForm; - fOnAfterFilter: TNotifyEvent; - procedure SetFilter(const AValue: string); - procedure SetIdleConnected(const AValue: Boolean); - procedure OnIdle(Sender: TObject; var Done: Boolean); - procedure SetUseFormActivate(AValue: Boolean); - procedure FormActivate(Sender: TObject); // Connects to owning form. - procedure FormDeactivate(Sender: TObject); - protected - fNeedUpdate: Boolean; - fIsFirstUpdate: Boolean; - fSelectedPart: TObject; // Select this node on next update - fOnFilterItem: TFilterItemEvent; - fOnCheckItem: TCheckItemEvent; - procedure KeyDown(var Key: Word; Shift: TShiftState); override; - procedure EditChange; override; - procedure EditEnter; override; - procedure EditExit; override; - procedure ButtonClick; override; - procedure SortAndFilter; virtual; abstract; - procedure ApplyFilter(Immediately: Boolean = False); - procedure ApplyFilterCore; virtual; abstract; - procedure MoveNext; virtual; abstract; - procedure MovePrev; virtual; abstract; - function ReturnPressed: Boolean; virtual; abstract; - function GetDefaultGlyphName: String; override; - public - constructor Create(AOwner: TComponent); override; - destructor Destroy; override; - procedure InvalidateFilter; - function ForceFilter(AFilter : String = '') : String; - procedure StoreSelection; virtual; abstract; - procedure RestoreSelection; virtual; abstract; - public - property Filter: string read fFilter write SetFilter; - property IdleConnected: Boolean read fIdleConnected write SetIdleConnected; - property SortData: Boolean read fSortData write fSortData; - property SelectedPart: TObject read fSelectedPart write fSelectedPart; - published - property OnAfterFilter: TNotifyEvent read fOnAfterFilter write fOnAfterFilter; - property OnFilterItem: TFilterItemEvent read fOnFilterItem write fOnFilterItem; - property OnCheckItem: TCheckItemEvent read fOnCheckItem write fOnCheckItem; - property UseFormActivate: Boolean read fUseFormActivate write SetUseFormActivate default False; - // TEditButton properties. - property ButtonWidth; - property DirectInput; - property ButtonOnlyWhenFocused; - property NumGlyphs; - property Flat; - // Other properties - property Align; - property Anchors; - property BidiMode; - property BorderSpacing; - property BorderStyle; - property AutoSize; - property AutoSelect; - property Color; - property DragCursor; - property DragMode; - property Enabled; - property Font; - property MaxLength; - property ParentBidiMode; - property ParentColor; - property ParentFont; - property ParentShowHint; - property PopupMenu; - property ReadOnly; - property ShowHint; - property TabOrder; - property TabStop; - property Visible; - property OnChange; - property OnClick; - property OnDblClick; - property OnDragDrop; - property OnDragOver; - property OnEditingDone; - property OnEndDrag; - property OnEnter; - property OnExit; - property OnKeyDown; - property OnKeyPress; - property OnKeyUp; - property OnMouseDown; - property OnMouseMove; - property OnMouseUp; - property OnStartDrag; - property OnUTF8KeyPress; - property Text; - end; - - { TFileNameEdit } - - TAcceptFileNameEvent = procedure (Sender : TObject; Var Value : String) of Object; - TDialogKind = (dkOpen,dkSave,dkPictureOpen,dkPictureSave); - - TFileNameEdit = class(TCustomButtonEdit) - private - FDialogOptions: TOpenOptions; - FFileName : String; - FDialogFiles : TStrings; - FDialogKind: TDialogKind; - FDialogTitle: String; - FFilter: String; - FFilterIndex: Integer; - FDefaultExt: String; - FHideDirectories: Boolean; - FInitialDir: String; - FOnAcceptFileName: TAcceptFileNameEvent; - FOnFolderChange: TNotifyEvent; - FFileNameChangeLock: Integer; - procedure SetFileName(const AValue: String); - protected - function GetDefaultGlyph: TBitmap; override; - function GetDefaultGlyphName: String; override; - function CreateDialog(AKind: TDialogKind): TCommonDialog; virtual; - procedure SaveDialogResult(AKind: TDialogKind; D: TCommonDialog); virtual; - procedure ButtonClick; override; - procedure RunDialog; virtual; - procedure EditChange; override; - procedure DoFolderChange(Sender:TObject); virtual; - public - constructor Create(AOwner: TComponent); override; - destructor Destroy; override; - property AutoSelected; - property DialogFiles: TStrings read FDialogFiles; - published - // TFileName properties. - property FileName: String read FFileName write SetFileName; - property InitialDir: String read FInitialDir write FInitialDir; - property OnAcceptFileName: TAcceptFileNameEvent read FOnAcceptFileName write FOnAcceptFileName; - property OnFolderChange: TNotifyEvent read FOnFolderChange write FOnFolderChange; - property DialogKind: TDialogKind read FDialogKind write FDialogKind default dkOpen; - property DialogTitle: String read FDialogTitle write FDialogTitle; - property DialogOptions: TOpenOptions read FDialogOptions write FDialogOptions default DefaultOpenDialogOptions; - property Filter: String read FFilter write FFilter; - property FilterIndex: Integer read FFilterIndex write FFIlterIndex; - property DefaultExt: String read FDefaultExt write FDefaultExt; - property HideDirectories: Boolean read FHideDirectories write FHideDirectories; - // TEditButton properties. - property ButtonWidth; - property DirectInput; - property ButtonOnlyWhenFocused; - // property Glyph; - property NumGlyphs; - property Flat; - // Other properties - property Align; - property Alignment; - property Anchors; - property AutoSelect; - property BidiMode; - property BorderSpacing; - property BorderStyle; - property AutoSize; - property Color; - property DragCursor; - property DragMode; - property Enabled; - property Font; - property MaxLength; - property ParentBidiMode; - property ParentColor; - property ParentFont; - property ParentShowHint; - property PopupMenu; - property ReadOnly; - property ShowHint; - property TabOrder; - property TabStop; - property Visible; - property OnChange; - property OnClick; - property OnDblClick; - property OnDragDrop; - property OnDragOver; - property OnEditingDone; - property OnEndDrag; - property OnEnter; - property OnExit; - property OnKeyDown; - property OnKeyPress; - property OnKeyUp; - property OnMouseDown; - property OnMouseMove; - property OnMouseUp; - property OnStartDrag; - property OnUTF8KeyPress; - property Text; - end; - - - { TDirectoryEdit } - - TDirectoryEdit = class(TCustomButtonEdit) - private - FDialogTitle: String; - FRootDir: String; - FOnAcceptDir: TAcceptFileNameEvent; - FShowHidden: Boolean; - function GetDirectory: String; - procedure SetDirectory(const AValue: String); - protected - function GetDefaultGlyph: TBitmap; override; - function GetDefaultGlyphName: String; override; - function CreateDialog: TCommonDialog; virtual; - function GetDialogResult(D : TCommonDialog) : String; virtual; - procedure ButtonClick; override; - procedure RunDialog; virtual; - public - property AutoSelected; - published - // TDirectory properties. - property Directory: String read GetDirectory write SetDirectory; - property RootDir: String read FRootDir write FRootDir; - property OnAcceptDirectory: TAcceptFileNameEvent read FOnAcceptDir write FonAcceptDir; - property DialogTitle: String read FDialogTitle write FDialogTitle; - property ShowHidden: Boolean read FShowHidden write FShowHidden; - // TEditButton properties. - property ButtonWidth; - property DirectInput; - property ButtonOnlyWhenFocused; - // property Glyph; - property NumGlyphs; - property Flat; - // Other properties - property Align; - property Anchors; - property AutoSize; - property AutoSelect; - property BidiMode; - property BorderSpacing; - property BorderStyle; - property Color; - property DragCursor; - property DragMode; - property Enabled; - property Font; - property MaxLength; - property ParentBidiMode; - property ParentColor; - property ParentFont; - property ParentShowHint; - property PopupMenu; - property ReadOnly; - property ShowHint; - property TabOrder; - property TabStop; - property Visible; - property OnChange; - property OnClick; - property OnDblClick; - property OnDragDrop; - property OnDragOver; - property OnEditingDone; - property OnEndDrag; - property OnEnter; - property OnExit; - property OnKeyDown; - property OnKeyPress; - property OnKeyUp; - property OnMouseDown; - property OnMouseMove; - property OnMouseUp; - property OnStartDrag; - property OnUTF8KeyPress; - property Text; - end; - - - { TDateEdit } - - TAcceptDateEvent = procedure (Sender : TObject; var ADate : TDateTime; - var AcceptDate: Boolean) of object; - TCustomDateEvent = procedure (Sender : TObject; var ADate : string) of object; - TDateOrder = (doNone,doMDY,doDMY,doYMd); - - TDateEdit = class(TCustomButtonEdit) - private - FDateOrder: TDateOrder; - FDefaultToday: Boolean; - FDialogTitle: TCaption; - FDisplaySettings: TDisplaySettings; - FDroppedDown: Boolean; - FOnAcceptDate: TAcceptDateEvent; - FOnCustomDate: TCustomDateEvent; - FOKCaption: TCaption; - FCancelCaption: TCaption; - FDateFormat: string; - function GetDate: TDateTime; - function IsStoreTitle: boolean; - procedure SetDate(Value: TDateTime); - procedure CalendarPopupReturnDate(Sender: TObject; const ADate: TDateTime); - procedure CalendarPopupShowHide(Sender: TObject); - procedure SetDateOrder(const AValue: TDateOrder); - protected - function GetDefaultGlyph: TBitmap; override; - function GetDefaultGlyphName: String; override; - procedure ButtonClick; override; - procedure EditDblClick; override; - procedure SetDateMask; virtual; - public - constructor Create(AOwner: TComponent); override; - procedure DateFormatChanged; virtual; - function GetDateFormat: string; - property AutoSelected; - property Date: TDateTime read GetDate write SetDate; - property Button; - property DroppedDown: Boolean read FDroppedDown; - published - property DialogTitle: TCaption read FDialogTitle write FDialogTitle stored IsStoreTitle; - property CalendarDisplaySettings: TDisplaySettings read FDisplaySettings write FDisplaySettings; - property OnAcceptDate: TAcceptDateEvent read FOnAcceptDAte write FOnAcceptDate; - property OnCustomDate: TCustomDateEvent read FOnCustomDate write FOnCustomDate; - property OKCaption: TCaption read FOKCaption write FOKCaption; - property CancelCaption: TCaption read FCancelCaption write FCancelCaption; - property ReadOnly; - property DefaultToday: Boolean read FDefaultToday write FDefaultToday default False; - Property DateOrder : TDateOrder Read FDateOrder Write SetDateOrder; - property ButtonOnlyWhenFocused; - property ButtonWidth; - property Action; - property Align; - property Anchors; - property AutoSize; - property AutoSelect; - property BidiMode; - property BorderSpacing; - property BorderStyle; - property CharCase; - property Color; - property Constraints; - property DirectInput; - property Glyph; - property NumGlyphs; - property DragMode; - property EchoMode; - property Enabled; - property Font; - property MaxLength; - property OnChange; - property OnChangeBounds; - property OnClick; - property OnDblClick; - property OnEditingDone; - property OnEnter; - property OnExit; - property OnKeyDown; - property OnKeyPress; - property OnKeyUp; - property OnMouseDown; - property OnMouseMove; - property OnMouseUp; - property OnResize; - property OnUTF8KeyPress; - property ParentBidiMode; - property ParentFont; - property ParentShowHint; - property PopupMenu; - property ShowHint; - property TabStop; - property TabOrder; - property Visible; - property Text; - end; - - - { TCalcEdit } - - TAcceptValueEvent = procedure(Sender: TObject; var AValue: Double; var Accept: Boolean) of object; - - TCalcEdit = class(TCustomButtonEdit) - private - FDialogTitle: String; - FLayout: TCalculatorLayout; - FOnAcceptValue: TAcceptValueEvent; - function GetAsFloat: Double; - function GetAsInteger: Integer; - procedure SetAsFloat(const AValue: Double); - procedure SetAsInteger(const AValue: Integer); - function TitleStored: boolean; - protected - FCalcDialog : TForm; - function GetDefaultGlyph: TBitmap; override; - function GetDefaultGlyphName: String; override; - procedure ButtonClick; override; - procedure RunDialog; virtual; - public - constructor Create(AOwner: TComponent); override; - property AutoSelected; - published - // CalcEdit properties - property CalculatorLayout : TCalculatorLayout read FLayout write Flayout; - property AsFloat : Double read GetAsFloat write SetAsFloat; - property AsInteger : Integer read GetAsInteger write SetAsInteger; - property OnAcceptValue : TAcceptValueEvent read FOnAcceptValue write FOnAcceptValue; - property DialogTitle : String read FDialogTitle write FDialogTitle stored TitleStored; - // TEditButton properties. - property ButtonWidth; - property DirectInput; - property ButtonOnlyWhenFocused; - // property Glyph; - property NumGlyphs; - property Flat; - // Other properties - property Align; - property Anchors; - property BidiMode; - property BorderSpacing; - property BorderStyle; - property AutoSize; - property AutoSelect; - property Color; - property DragCursor; - property DragMode; - property Enabled; - property Font; - property MaxLength; - property ParentBidiMode; - property ParentColor; - property ParentFont; - property ParentShowHint; - property PopupMenu; - property ReadOnly; - property ShowHint; - property TabOrder; - property TabStop; - property Visible; - property OnChange; - property OnClick; - property OnDblClick; - property OnDragDrop; - property OnDragOver; - property OnEditingDone; - property OnEndDrag; - property OnEnter; - property OnExit; - property OnKeyDown; - property OnKeyPress; - property OnKeyUp; - property OnMouseDown; - property OnMouseMove; - property OnMouseUp; - property OnStartDrag; - property OnUTF8KeyPress; - property Text; - end; - - -var - FileOpenGlyph: TBitmap; - DateGlyph: TBitmap; - CalcGlyph: TBitmap; - -const - ResBtnListFilter = 'btnfiltercancel'; - ResBtnFileOpen = 'btnselfile'; - ResBtnSelDir = 'btnseldir'; - ResBtnCalendar = 'btncalendar'; - ResBtnCalculator = 'btncalculator'; - -procedure Register; - -implementation - -{$IFnDEF USEOLDEDITBUTTON} -{$R lcl_edbtnimg.res} -{$ENDIF} - -{ TBEEdit } - -procedure TBeEdit.DoEnter; -begin - if (Owner is TCustomButtonEdit) then TCustomButtonEdit(Owner).CheckButtonVisible; - inherited DoEnter; -end; - -procedure TBeEdit.DoExit; -begin - if (Owner is TCustomButtonEdit) then TCustomButtonEdit(Owner).CheckButtonVisible; - inherited DoExit; -end; - -{ TCustomButtonEdit } - -procedure TCustomButtonEdit.InternalOnButtonClick(Sender: TObject); -begin - ButtonClick; -end; - -procedure TCustomButtonEdit.InternalOnEditChange(Sender: TObject); -begin - EditChange; -end; - -procedure TCustomButtonEdit.InternalOnEditClick(Sender: TObject); -begin - EditClick; -end; - -procedure TCustomButtonEdit.InternalOnEditDblClick(Sender: TObject); -begin - EditDblClick; -end; - -procedure TCustomButtonEdit.InternalOnEditDragDrop(Sender, Source: TObject; X, Y: Integer); -begin - EditDragDrop(Source, X, Y); -end; - -procedure TCustomButtonEdit.InternalOnEditDragOver(Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean); -begin - EditDragOver(Source, X, Y, State, Accept); -end; - -procedure TCustomButtonEdit.InternalOnEditEditingDone(Sender: TObject); -begin - EditEditingDone; -end; - -procedure TCustomButtonEdit.InternalOnEditEndDrag(Sender, Target: TObject; X, Y: Integer); -begin - EditEndDrag(Target, X, Y); -end; - -procedure TCustomButtonEdit.InternalOnEditEnter(Sender: TObject); -begin - EditEnter; -end; - -procedure TCustomButtonEdit.InternalOnEditExit(Sender: TObject); -begin - EditExit; -end; - -procedure TCustomButtonEdit.InternalOnEditKeyDown(Sender: TObject; var Key: word; - Shift: TShiftState); -begin - EditKeyDown(Key, Shift); -end; - -procedure TCustomButtonEdit.InternalOnEditKeyPress(Sender: TObject; var Key: char); -begin - EditKeyPress(Key); -end; - -procedure TCustomButtonEdit.InternalOnEditKeyUp(Sender: TObject; var Key: word; - Shift: TShiftState); -begin - EditKeyUp(Key, Shift); -end; - -procedure TCustomButtonEdit.InternalOnEditMouseDown(Sender: TObject; - Button: TMouseButton; Shift: TShiftState; X, Y: Integer); -begin - EditMouseDown(Button, Shift, X, Y); -end; - -procedure TCustomButtonEdit.InternalOnEditMouseUp(Sender: TObject; - Button: TMouseButton; Shift: TShiftState; X, Y: Integer); -begin - EditMouseUp(Button, Shift, X, Y); -end; - -procedure TCustomButtonEdit.InternalOnEditMouseEnter(Sender: TObject); -begin - EditMouseEnter; -end; - -procedure TCustomButtonEdit.InternalOnEditMouseLeave(Sender: TObject); -begin - EditMouseLeave; -end; - -procedure TCustomButtonEdit.InternalOnEditMouseMove(Sender: TObject; - Shift: TShiftState; X, Y: Integer); -begin - EditMouseMove(Shift, X, Y); -end; - -procedure TCustomButtonEdit.InternalOnEditUtf8KeyPress(Sender: TObject; - var UTF8Key: TUTF8Char); -begin - EditUtf8KeyPress(UTF8Key); -end; - -procedure TCustomButtonEdit.InternalOnEditStartDrag(Sender: TObject; var DragObject: TDragObject); -begin - EditStartDrag(DragObject); -end; - -function TCustomButtonEdit.GetButtonWidth: Integer; -begin - Result := FButton.Width; -end; - -function TCustomButtonEdit.GetCanUndo: Boolean; -begin - Result := FEdit.CanUndo; -end; - -function TCustomButtonEdit.GetCaretPos: TPoint; -begin - Result := FEdit.CaretPos; -end; - -function TCustomButtonEdit.GetEditPopupMenu: TPopupMenu; -begin - Result := FEdit.PopupMenu; -end; - -procedure TCustomButtonEdit.CalculatePreferredSize(var PreferredWidth, - PreferredHeight: integer; WithThemeSpace: Boolean); -begin - inherited CalculatePreferredSize(PreferredWidth, PreferredHeight, WithThemeSpace); - PreferredWidth := 0; -end; - -function TCustomButtonEdit.GetReadOnly: Boolean; -begin - Result := FIsReadOnly; -end; - -function TCustomButtonEdit.GetSelLength: Integer; -begin - Result := FEdit.SelLength; -end; - -function TCustomButtonEdit.GetSelStart: Integer; -begin - Result := FEdit.SelStart; -end; - -function TCustomButtonEdit.GetSelText: String; -begin - Result := FEdit.SelText; -end; - -function TCustomButtonEdit.GetText: TCaption; -begin - Result := FEdit.Text; -end; - -function TCustomButtonEdit.IsCustomGlyph: Boolean; - - function _LoadRes: TBitmap; - var - ResName: String; - C : TCustomBitmap; - begin - ResName := GetDefaultGlyphName; - if ResName = '' then - Exit(nil); - Result := TBitmap.Create; - try - try - C := TPortableNetworkGraphic.Create; - C.LoadFromResourceName(hInstance, ResName); - Result.Assign(C); // the "Equals" did not work with ClassType different - // maybe it should compare the "RawImage" because it is independent of ClassType - finally - C.Free; - end; - except - Result.Free; - raise; - end; - end; - -var - B, GlypRes, GlypActual: TBitmap; -begin - GlypActual := nil; - GlypRes := nil; - try - B := GetDefaultGlyph; - if B = nil then // if Default Glyph is nil, use the resource - begin - GlypRes := _LoadRes; - B := GlypRes; - end; - if B = nil then - Result := Glyph <> nil - else if Glyph = nil then - Result := True - else - begin - GlypActual := TBitmap.Create; // the "Equals" did not work with ClassType different. - GlypActual.Assign(Glyph); - Result := not GlypActual.Equals(B); - end; - finally - GlypRes.Free; - GlypActual.Free; - end; -end; - -function TCustomButtonEdit.GetAlignment: TAlignment; -begin - Result := FEdit.Alignment; -end; - - -function TCustomButtonEdit.GetAutoSelect: Boolean; -begin - Result := FEdit.AutoSelect; -end; - -function TCustomButtonEdit.GetAutoSelected: Boolean; -begin - Result := FEdit.AutoSelected; -end; - -function TCustomButtonEdit.GetButtonHint: TTranslateString; -begin - Result := FButton.Hint; -end; - -function TCustomButtonEdit.GetBtnCaption: TCaption; -begin - Result := FButton.Caption; -end; - -procedure TCustomButtonEdit.SetButtonAlign(AValue: TButtonAlign); -begin - if FButtonAlign = AValue then - exit; - FButtonAlign := AValue; - case FButtonAlign of - BaRight: - FButton.Align := alRight; - BaLeft: - FButton.Align := alLeft; - end; -end; - -procedure TCustomButtonEdit.SetButtonHint(AValue: TTranslateString); -begin - FButton.Hint := AValue; -end; - -procedure TCustomButtonEdit.SetButtonOnlyWhenFocused(AValue: Boolean); -begin - if FButtonOnlyWhenFocused <> AValue then - begin - FButtonOnlyWhenFocused := AValue; - CheckButtonVisible; - end; -end; - -procedure TCustomButtonEdit.SetButtonWidth(AValue: Integer); -begin - FButton.Width := AValue; -end; - -procedure TCustomButtonEdit.SetCaretPos(AValue: TPoint); -begin - FEdit.CaretPos := AValue; -end; - -function TCustomButtonEdit.GetCharCase: TEditCharCase; -begin - Result := FEdit.CharCase; -end; - -function TCustomButtonEdit.GetDirectInput: Boolean; -begin - Result := FDirectInput; -end; - -function TCustomButtonEdit.GetEchoMode: TEchoMode; -begin - Result := FEdit.EchoMode; -end; - -function TCustomButtonEdit.GetEditMask: String; -begin - Result := FEdit.EditMask -end; - -function TCustomButtonEdit.GetColor: TColor; -begin - Result := FEdit.Color; -end; - - -function TCustomButtonEdit.GetGlyph: TBitmap; -begin - Result := FButton.Glyph; -end; - -function TCustomButtonEdit.GetHideSelection: Boolean; -begin - Result := FEdit.HideSelection; -end; - - -function TCustomButtonEdit.GetMaxLength: Integer; -begin - Result := FEdit.MaxLength; -end; - -function TCustomButtonEdit.GetModified: Boolean; -begin - Result := FEdit.Modified; -end; - -function TCustomButtonEdit.GetNumbersOnly: Boolean; -begin - Result := FEdit.NumbersOnly; -end; - -function TCustomButtonEdit.GetNumGlyps: Integer; -begin - Result := FButton.NumGlyphs; -end; - -function TCustomButtonEdit.GetPasswordChar: char; -begin - Result := FEdit.PasswordChar; -end; - -procedure TCustomButtonEdit.SetAlignment(AValue: TAlignment); -begin - FEdit.Alignment := AValue; -end; - -procedure TCustomButtonEdit.SetAutoSelect(AValue: Boolean); -begin - FEdit.AutoSelect := AValue; -end; - -procedure TCustomButtonEdit.SetAutoSelected(AValue: Boolean); -begin - FEdit.AutoSelected := AValue; -end; - -procedure TCustomButtonEdit.SetAutoSize(AValue: Boolean); -begin - if AutoSize = AValue then - Exit; - inherited SetAutosize(AValue); - //FButton.AutoSize := AValue; - FEdit.AutoSize := AValue; -end; - -procedure TCustomButtonEdit.SetBtnCaption(AValue: TCaption); -begin - FButton.Caption := AValue; -end; - -class function TCustomButtonEdit.GetControlClassDefaultSize: TSize; -begin - Result.CX := 80 + 23; //as TCustomEdit + TCustomSpeedButton - Result.CY := 23; //as TCustomEdit -end; - -function TCustomButtonEdit.GetDefaultGlyph: TBitmap; -begin - Result := nil; -end; - -function TCustomButtonEdit.GetDefaultGlyphName: String; -begin - Result := ''; -end; - -procedure TCustomButtonEdit.SetCharCase(AValue: TEditCharCase); -begin - FEdit.CharCase := AValue; -end; - -procedure TCustomButtonEdit.SetDirectInput(AValue: Boolean); -begin - FDirectInput := AValue; - FEdit.ReadOnly := ((not FDirectInput) or (FIsReadOnly)); -end; - -procedure TCustomButtonEdit.SetEchoMode(AValue: TEchoMode); -begin - FEdit.EchoMode := AValue; -end; - -procedure TCustomButtonEdit.SetEditMask(AValue: String); -begin - FEdit.EditMask := AValue; -end; - -procedure TCustomButtonEdit.SetColor(AValue: TColor); -begin - FEdit.Color := AValue; -end; - -procedure TCustomButtonEdit.SetCursor(AValue: TCursor); -begin - if Cursor = AValue then - Exit; - inherited SetCursor(AValue); - FButton.Cursor := AValue; - FEdit.Cursor := AValue; -end; - -procedure TCustomButtonEdit.SetFlat(AValue: Boolean); -begin - if FFlat = AValue then - Exit; - FFlat := AValue; - FButton.Flat := AValue; -end; - -procedure TCustomButtonEdit.SetHideSelection(AValue: Boolean); -begin - FEdit.HideSelection := AValue; -end; - -procedure TCustomButtonEdit.SetMaxLength(AValue: Integer); -begin - FEdit.MaxLength := AValue; -end; - -procedure TCustomButtonEdit.SetModified(AValue: Boolean); -begin - FEdit.Modified := AValue; -end; - -procedure TCustomButtonEdit.SetNumbersOnly(AValue: Boolean); -begin - FEdit.NumbersOnly := AValue; -end; - -procedure TCustomButtonEdit.SetNumGlyphs(AValue: Integer); -begin - FButton.NumGlyphs := AValue; -end; - -procedure TCustomButtonEdit.SetPasswordChar(AValue: char); -begin - FEdit.PasswordChar := AValue; -end; - -procedure TCustomButtonEdit.SetPopupMenu(AValue: TPopupMenu); -begin - FEdit.PopupMenu := AValue; -end; - -procedure TCustomButtonEdit.SetText(AValue: TCaption); -begin - FEdit.Text := AValue; -end; - -function TCustomButtonEdit.CalcButtonVisible: Boolean; -begin - Result := (csdesigning in ComponentState) or - (Visible and (FEdit.Focused or not FButtonOnlyWhenFocused)); -end; - -procedure TCustomButtonEdit.CheckButtonVisible; -begin - If Assigned(FButton) then - FButton.Visible := CalcButtonVisible; -end; - -procedure TCustomButtonEdit.ButtonClick; -begin - if ReadOnly then - Exit; - if Assigned(FOnButtonClick) then - FOnButtonClick(Self); -end; - -procedure TCustomButtonEdit.EditChange; -begin - if Assigned(FOnEditChange) then FOnEditChange(Self); -end; - -procedure TCustomButtonEdit.EditClick; -begin - if Assigned(FOnEditClick) then FOnEditClick(Self); -end; - -procedure TCustomButtonEdit.EditDblClick; -begin - if Assigned(FOnEditDblClick) then FOnEditDblClick(Self); -end; - -procedure TCustomButtonEdit.EditDragDrop(Source: TObject; X, Y: Integer); -begin - if Assigned(FOnEditDragDrop) then FOnEditDragDrop(Self, Source, X, Y); -end; - -procedure TCustomButtonEdit.EditDragOver(Source: TObject; X, Y: Integer; - State: TDragState; var Accept: Boolean); -begin - if Assigned(FOnEditDragOver) then FOnEditDragOver(Self, Source, X, Y, State, Accept); -end; - -procedure TCustomButtonEdit.EditEditingDone; -begin - if Assigned(FOnEditEditingDone) then FOnEditEditingDone(Self); -end; - -procedure TCustomButtonEdit.EditEndDrag(Target: TObject; X, Y: Integer); -begin - if Assigned(FOnEditEndDrag) then FOnEditEndDrag(Self, Target, X, Y); -end; - -procedure TCustomButtonEdit.EditEnter; -begin - if Assigned(FOnEditEnter) then FOnEditEnter(Self); -end; - -procedure TCustomButtonEdit.EditExit; -begin - if Assigned(FOnEditExit) then FOnEditExit(Self); -end; - -procedure TCustomButtonEdit.EditKeyDown(var Key: word; Shift: TShiftState); -begin - if Assigned(FOnEditKeyDown) then FOnEditKeyDown(Self, Key, Shift); -end; - -procedure TCustomButtonEdit.EditKeyPress(var Key: char); -begin - if Assigned(FOnEditKeyPress) then FOnEditKeyPress(Self, Key); -end; - -procedure TCustomButtonEdit.EditKeyUp(var Key: word; Shift: TShiftState); -begin - if Assigned(FOnEditKeyUp) then FOnEditKeyUp(Self, Key, Shift); -end; - -procedure TCustomButtonEdit.EditMouseDown(Button: TMouseButton; - Shift: TShiftState; X, Y: Integer); -begin - if Assigned(FOnEditMouseDown) then FOnEditMouseDown(Self, Button, Shift, X, Y); -end; - -procedure TCustomButtonEdit.EditMouseUp(Button: TMouseButton; - Shift: TShiftState; X, Y: Integer); -begin - if Assigned(FOnEditMouseUp) then FOnEditMouseUp(Self, Button, Shift, X, Y); -end; - -procedure TCustomButtonEdit.EditMouseEnter; -begin - if Assigned(FOnEditMouseEnter) then FOnEditMouseEnter(Self); -end; - -procedure TCustomButtonEdit.EditMouseLeave; -begin - if Assigned(FOnEditMouseLeave) then FOnEditMouseLeave(Self); -end; - -procedure TCustomButtonEdit.EditMouseMove(Shift: TShiftState; X, Y: Integer); -begin - if Assigned(FOnEditMouseMove) then FOnEditMouseMove(Self, Shift, X, Y); -end; - -procedure TCustomButtonEdit.EditUtf8KeyPress(var UTF8Key: TUTF8Char); -begin - if Assigned(FOnEditUtf8KeyPress) then FOnEditUtf8KeyPress(Self, Utf8Key); -end; - -procedure TCustomButtonEdit.EditStartDrag(var DragObject: TDragObject); -begin - if Assigned(FOnEditStartDrag) then FOnEditStartDrag(Self, DragObject); -end; - -procedure TCustomButtonEdit.Loaded; -begin - inherited Loaded; - CheckButtonVisible; -end; - -procedure TCustomButtonEdit.SetGlyph(AValue: TBitmap); -begin - FButton.Glyph := AValue; - Invalidate; -end; - -procedure TCustomButtonEdit.SetReadOnly(AValue: Boolean); -begin - FIsReadOnly := AValue; - FEdit.ReadOnly := AValue or (not DirectInput); - FButton.Enabled := not FIsReadOnly and Enabled; -end; - -procedure TCustomButtonEdit.SetSelLength(AValue: Integer); -begin - FEdit.SelLength := AValue; -end; - -procedure TCustomButtonEdit.SetSelStart(AValue: Integer); -begin - FEdit.SelStart := AValue; -end; - -procedure TCustomButtonEdit.SetSelText(AValue: String); -begin - FEdit.SelText := AValue; -end; - -constructor TCustomButtonEdit.Create(AOwner: TComponent); -var - B: TBitmap; -begin - FButton := TSpeedButton.Create(Self); - FEdit := TBeEdit.Create(Self); - inherited Create(AOwner); - BorderStyle := bsNone; - FButtonAlign := BaRight; - FButtonOnlyWhenFocused := False; - FDirectInput := True; - FIsReadOnly := False; - - with GetControlClassDefaultSize do - SetInitialBounds(0, 0, CX, CY); - - with FButton do - begin - Align := alRight; - OnClick := @InternalOnButtonClick; - Parent := Self; - end; - B := GetDefaultGlyph; - if B = nil - then - FButton.LoadGlyphFromResourceName(hInstance, GetDefaultGlyphName) - else - FButton.Glyph := B; - - with FEdit do - begin - Align := alClient; - ParentColor := False; - ParentFont := True; - - AutoSelect := True; - Alignment := taLeftJustify; - ReadOnly := False; - - OnChange := @InternalOnEditChange; - OnClick := @InternalOnEditClick; - OnDblClick := @InternalOnEditDblClick; - OnDragDrop := @InternalOnEditDragDrop; - OnDragOver := @InternalOnEditDragOver; - OnEndDrag := @InternalOnEditEndDrag; - OnExit := @InternalOnEditExit; - OnEnter := @InternalOnEditEnter; - OnKeyDown := @InternalOnEditKeyDown; - OnKeyPress := @InternalOnEditKeyPress; - OnKeyUp := @InternalOnEditKeyUp; - OnMouseDown := @InternalOnEditMouseDown; - OnMouseUp := @InternalOnEditMouseUp; - OnMouseEnter := @InternalOnEditEnter; - OnMouseLeave := @InternalOnEditMouseLeave; - OnMouseMove := @InternalOnEditMouseMove; - OnStartDrag := @InternalOnEditStartDrag; - OnUtf8KeyPress := @InternalOnEditUtf8KeyPress; - - Parent := Self; - end; - AutoSize := True; -end; - -destructor TCustomButtonEdit.Destroy; -begin - inherited Destroy; -end; - -procedure TCustomButtonEdit.Clear; -begin - FEdit.Clear; -end; - -procedure TCustomButtonEdit.ClearSelection; -begin - FEdit.ClearSelection; -end; - -procedure TCustomButtonEdit.CopyToClipboard; -begin - FEdit.CopyToClipboard; -end; - -procedure TCustomButtonEdit.CutToClipboard; -begin - FEdit.CutToClipBoard; -end; - -procedure TCustomButtonEdit.PasteFromClipboard; -begin - FEdit.PasteFromClipBoard; -end; - -procedure TCustomButtonEdit.SelectAll; -begin - FEdit.SelectAll; -end; - -procedure TCustomButtonEdit.SetFocus; -begin - inherited SetFocus; - FEdit.SetFocus; -end; - -procedure TCustomButtonEdit.Undo; -begin - FEdit.Undo; -end; - -{ TCustomControlFilterEdit } - -constructor TCustomControlFilterEdit.Create(AOwner: TComponent); -begin - inherited Create(AOwner); - CharCase:=ecLowerCase; - Button.Enabled:=False; - fIsFirstUpdate:=True; - fIsFirstSetFormActivate:=True; -end; - -destructor TCustomControlFilterEdit.Destroy; -begin - inherited Destroy; -end; - -procedure TCustomControlFilterEdit.OnIdle(Sender: TObject; var Done: Boolean); -begin - if fNeedUpdate then - ApplyFilter(true); - IdleConnected:=false; - if Assigned(fOnAfterFilter) then - fOnAfterFilter(Self); -end; - -procedure TCustomControlFilterEdit.SetUseFormActivate(AValue: Boolean); -var - c: TWinControl; -begin - if fUseFormActivate=AValue then Exit; - fUseFormActivate:=AValue; - c:=Parent; - // Find the parent form - while Assigned(c) and not (c is TForm) do - c:=c.Parent; - // Found: set or remove Activate and Deactivate handlers - if c is TForm then begin - fParentForm:=TForm(c); - if AValue then begin // Set handlers - if fIsFirstSetFormActivate then begin - if Assigned(fParentForm.OnActivate) or Assigned(fParentForm.OnDeactivate) then - raise Exception.Create('TCustomControlFilterEdit.SetUseFormActivate:'+ - ' OnActivate handler already set in parent form'); - fIsFirstSetFormActivate:=False; - end; - fParentForm.OnActivate:=@FormActivate; - fParentForm.OnDeactivate:=@FormDeactivate; - end - else begin // Remove handlers - fParentForm.OnActivate:=nil; - fParentForm.OnDeactivate:=nil; - end; - end - else - raise Exception.Create('TCustomControlFilterEdit.SetUseFormActivate: This control'+ - ' has no TForm in the parent chain. You should disable UseFormActivate.'); -end; - -procedure TCustomControlFilterEdit.FormActivate(Sender: TObject); -begin - fJustActivated:=fParentForm.ActiveControl=Self; - if fParentForm.ActiveControl=Self then - Filter:=Text; -end; - -procedure TCustomControlFilterEdit.FormDeactivate(Sender: TObject); -begin - fJustActivated:=False; -end; - -procedure TCustomControlFilterEdit.SetFilter(const AValue: string); -var - NewValue: String; -begin - if AValue=rsFilter then - NewValue:='' - else - NewValue:=AValue; - Button.Enabled:=NewValue<>''; - if (NewValue='') and not (Focused or fJustActivated) then begin - Text:=rsFilter; - Font.Color:=clBtnShadow; - end - else begin - Text:=NewValue; - Font.Color:=clDefault; - end; - if fFilter=NewValue then exit; - fFilter:=NewValue; - ApplyFilter; -end; - -procedure TCustomControlFilterEdit.SetIdleConnected(const AValue: Boolean); -begin - if fIdleConnected=AValue then exit; - fIdleConnected:=AValue; - if fIdleConnected then - Application.AddOnIdleHandler(@OnIdle) - else - Application.RemoveOnIdleHandler(@OnIdle); -end; - -procedure TCustomControlFilterEdit.KeyDown(var Key: Word; Shift: TShiftState); -var - Handled: Boolean; -begin - Handled:=False; - if Shift = [] then - case Key of - VK_UP: begin MovePrev; Handled:=True; end; - VK_DOWN: begin MoveNext; Handled:=True; end; - VK_RETURN: Handled:=ReturnPressed; - end; - if Handled then - Key:=VK_UNKNOWN - else - inherited KeyDown(Key, Shift); -end; - -procedure TCustomControlFilterEdit.EditChange; -begin - Filter:=Text; - inherited; -end; - -procedure TCustomControlFilterEdit.EditEnter; -begin -// inherited; - fJustActivated:=False; - if Text=rsFilter then - Text:=''; -end; - -procedure TCustomControlFilterEdit.EditExit; -begin - fJustActivated:=False; - Filter:=Text; -// inherited; -end; - -procedure TCustomControlFilterEdit.ButtonClick; -begin - fJustActivated:=False; - Filter:=''; -end; - -procedure TCustomControlFilterEdit.ApplyFilter(Immediately: Boolean); -begin - if Immediately then begin - fNeedUpdate := False; - SortAndFilter; - if (fSelectedPart=Nil) and not fIsFirstUpdate then - StoreSelection; // At first round the selection is from caller - fIsFirstUpdate:=False; - - ApplyFilterCore; // The actual filtering implemented by inherited class. - - fSelectedPart:=Nil; - RestoreSelection; - end - else begin - if [csDestroying,csDesigning]*ComponentState=[] then - InvalidateFilter; - end; -end; - -procedure TCustomControlFilterEdit.InvalidateFilter; -begin - fNeedUpdate:=true; - IdleConnected:=true; -end; - -function TCustomControlFilterEdit.ForceFilter(AFilter: String): String; -begin - Result := FFilter; - FFilter := AFilter; - ApplyFilter(True); -end; - -function TCustomControlFilterEdit.GetDefaultGlyphName: String; -begin - Result := ResBtnListFilter; -end; - -{ TFileNameEdit } - -constructor TFileNameEdit.Create(AOwner: TComponent); -begin - inherited Create(AOwner); - FDialogFiles := TStringList.Create; - FDialogKind := dkOpen; - FDialogOptions := DefaultOpenDialogOptions; -end; - -destructor TFileNameEdit.Destroy; -begin - FreeAndNil(FDialogFiles); - inherited Destroy; -end; - -procedure TFileNameEdit.SetFileName(const AValue: String); -begin - if FFileNameChangeLock > 0 then - Exit; - FFileName := AValue; - Inc(FFileNameChangeLock); - try - if FHideDirectories then - Text:=ExtractFileName(AValue) //Originally used inherited RealSetText() - else - Text:=AValue - finally - Dec(FFileNameChangeLock); - end; -end; - -function TFileNameEdit.CreateDialog(AKind: TDialogKind): TCommonDialog; -var - O: TOpenDialog; - S: TSaveDialog; - Dir: String; -begin - case AKind of - dkOpen, dkPictureOpen: - begin - O := TOpenDialog.Create(Self); - Result := O; - end; - dkSave, dkPictureSave: - begin - S:=TSaveDialog.Create(Self); - S.DefaultExt := FDefaultExt; - Result := S; - end; - end; - if Result is TOpenDialog then - begin - O:=TOpenDialog(Result); - Dir:=ExtractFilePath(Filename); - if (Dir<>'') and DirPathExists(Dir) then - // setting a FileName with path disables InitialDir - O.FileName := FileName - else begin - // do not use path, so that InitialDir works - O.FileName := ExtractFileName(Filename); - end; - O.Options := DialogOptions; - O.Filter := Filter; - O.FilterIndex := FilterIndex; - O.InitialDir := CleanAndExpandDirectory(InitialDir); - end; - // Set some common things. - Result.Title := DialogTitle; -end; - -procedure TFileNameEdit.SaveDialogResult(AKind: TDialogKind; D: TCommonDialog); -var - FN: String; -begin - case AKind of - dkOpen, dkPictureOpen : - begin - FilterIndex := TOpenDialog(D).FilterIndex; - FN := TOpenDialog(D).FileName; - if (FN <> '') then - begin - if Assigned(OnAcceptFileName) then - OnAcceptFileName(Self, FN); - end; - if (FN <> '') then - begin - // set FDialogFiles first since assigning of FileName trigger events - FDialogFiles.Text := TOpenDialog(D).Files.Text; - FileName := FN; - end; - end; - dkSave, dkPictureSave : - begin - FileName := TSaveDialog(D).FileName; - FilterIndex := TSaveDialog(D).FilterIndex; - FDialogFiles.Clear; - end; - end; -end; - -procedure TFileNameEdit.ButtonClick; -begin - inherited ButtonClick; - RunDialog; -end; - -function TFileNameEdit.GetDefaultGlyph: TBitmap; -begin - Result := FileOpenGlyph; -end; - -function TFileNameEdit.GetDefaultGlyphName: String; -begin - Result := ResBtnFileOpen; -end; - -procedure TFileNameEdit.RunDialog; -var - D: TCommonDialog; -begin - D := CreateDialog(DialogKind); - try - if D.Execute then - SaveDialogResult(DialogKind, D); - finally - D.Free; - end -end; - -procedure TFileNameEdit.EditChange; -begin - if FFileNameChangeLock <= 0 then - begin - Inc(FFileNameChangeLock); - try - if FHideDirectories and (ExtractFilePath(Text) = '') then - FFileName := ExtractFilePath(FFileName) + Text - else - FFileName := Text; - finally - Dec(FFileNameChangeLock); - end; - end; - inherited EditChange; //do this _after_ we have updated FFileName -end; - -procedure TFileNameEdit.DoFolderChange(Sender: TObject); -begin - if Assigned(FOnFolderChange) then - FOnFolderChange(Self); -end; - -{ TDirectoryEdit } - -procedure TDirectoryEdit.SetDirectory(const AValue: String); -begin - if (Text<>AValue) then - Text:=AValue; -end; - -function TDirectoryEdit.CreateDialog: TCommonDialog; -begin - Result:=TSelectDirectoryDialog.Create(Self); - if DirPathExists(Directory) then - begin - TSelectDirectoryDialog(Result).InitialDir:=Directory; - TSelectDirectoryDialog(Result).FileName:=''; - end - else - begin - TSelectDirectoryDialog(Result).InitialDir:=RootDir; - TSelectDirectoryDialog(Result).FileName:=Directory; - end; - // Set some common things. - Result.Title := DialogTitle; -end; - -function TDirectoryEdit.GetDialogResult(D: TCommonDialog) : String; -begin - Result:=TSelectDirectoryDialog(D).FileName; -end; - - -procedure TDirectoryEdit.ButtonClick; -begin - inherited ButtonClick; - RunDialog; -end; - -function TDirectoryEdit.GetDefaultGlyph: TBitmap; -begin - Result := FileOpenGlyph; -end; - -function TDirectoryEdit.GetDefaultGlyphName: String; -begin - Result := ResBtnSelDir; -end; - -procedure TDirectoryEdit.RunDialog; -var - D: String; - Dlg: TCommonDialog; - B: Boolean; -begin - Dlg:=CreateDialog; - try - B:=Dlg.Execute; - if B then - D:=GetDialogResult(Dlg); - finally - Dlg.Free; - end; - if B then - begin - if Assigned(FOnAcceptDir) then - begin - FOnAcceptdir(Self,D); - if (D<>'') then - Directory:=D; - end - else - Directory:=D; - end; -end; - -function TDirectoryEdit.GetDirectory: String; -begin - Result:=Text; -end; - -{ TDateEdit } - -function StrToDateDef(cDate: String; dDefault: TDateTime): TDateTime; -begin - try - Result := StrToDate(cDate) - except - Result := dDefault; - end; -end; - -constructor TDateEdit.Create(AOwner: TComponent); -begin - inherited Create(AOwner); - FDefaultToday := False; - FDisplaySettings := [dsShowHeadings, dsShowDayNames]; - DialogTitle := rsPickDate; - OKCaption := 'OK'; - CancelCaption := 'Cancel'; - DateFormatChanged; -end; - -procedure TDateEdit.DateFormatChanged; -begin - FDateFormat := DefaultFormatSettings.ShortDateFormat; -end; - -function TDateEdit.GetDateFormat: string; -begin - Result := FDateFormat; -end; - -function TDateEdit.GetDefaultGlyph: TBitmap; -begin - Result := DateGlyph; -end; - -function TDateEdit.GetDefaultGlyphName: String; -begin - Result := ResBtnCalendar; -end; - -procedure TDateEdit.ButtonClick;//or onClick -var - PopupOrigin: TPoint; - ADate: TDateTime; -begin - inherited ButtonClick; - - PopupOrigin := ControlToScreen(Point(0, Height)); - ADate := GetDate; - if ADate = NullDate then - ADate := SysUtils.Date; - ShowCalendarPopup(PopupOrigin, ADate, CalendarDisplaySettings, - @CalendarPopupReturnDate, @CalendarPopupShowHide) -end; - -procedure TDateEdit.EditDblClick; -begin - inherited EditDblClick; - if not ReadOnly then - ButtonClick; -end; - -procedure TDateEdit.SetDateMask; - -Var - S : String; - D : TDateTime; -begin - Case DateOrder of - doNone : - begin - S:=''; // no mask - FDateFormat:=''; - end; - doDMY, - doMDY : - begin - S:='99/99/9999;1;_'; - if DateOrder=doMDY then - FDateFormat:='mm/dd/yyyy' - else - FDateFormat:='dd/mm/yyyy'; - end; - doYMD : - begin - S:='9999/99/99;1;_'; - FDateFormat:='yyyy/mm/dd'; - end; - end; - D:=GetDate; - EditMask:=S; - SetDate(D); -end; - -Function ParseDate(S : String; Order : TDateOrder; Def: TDateTime) : TDateTime; - -Var - P,N1,N2,N3 : Integer; - B : Boolean; - -begin - Result:=Def; - P:=Pos(DefaultFormatSettings.DateSeparator,S); - If (P=0) then - Exit; - N1:=StrToIntDef(Copy(S,1,P-1),-1); - If (N1=-1) then Exit; - Delete(S,1,P); - P:=Pos(DefaultFormatSettings.DateSeparator,S); - If (P=0) then - Exit; - N2:=StrToIntDef(Copy(S,1,P-1),-1); - If (N1=0) then Exit; - Delete(S,1,P); - N3:=StrToIntDef(S,-1); - If (N3=-1) then - exit; - Case Order of - doYMD : B:=TryEncodeDate(N1,N2,N3,Result); - doMDY : B:=TryEncodeDate(N3,N1,N2,Result); - doDMY : B:=TryEncodeDate(N3,N2,N1,Result); - end; - If not B then // Not sure if TryEncodeDate touches Result. - Result:=Def; -end; - -function TDateEdit.GetDate: TDateTime; -var - ADate: string; -begin - if FDefaultToday then - Result := SysUtils.Date - else - Result := NullDate; - ADate := Trim(Text); - if ADate <> '' then - begin - if Assigned(FOnCustomDate) then - FOnCustomDate(Self, ADate); - if (DateOrder = doNone) then - Result := StrToDateDef(ADate, Result) - else - Result := ParseDate(ADate,DateOrder,Result) - end; -end; - -function TDateEdit.IsStoreTitle: boolean; -begin - Result := DialogTitle <> rsPickDate; -end; - -procedure TDateEdit.SetDate(Value: TDateTime); -begin - if {not IsValidDate(Value) or }(Value = NullDate) then - begin - if DefaultToday then - Value := SysUtils.Date - else - Value := NullDate; - end; - if Value = NullDate then - Text := '' - else - begin - if (FDateFormat = '') then - Text := DateToStr(Value) - else - Text := FormatDateTime(FDateFormat, Value) - end; -end; - -procedure TDateEdit.CalendarPopupReturnDate(Sender: TObject; - const ADate: TDateTime); -var - B: Boolean; - D: TDateTime; -begin - try - B := True; - D := ADate; - if Assigned(FOnAcceptDate) then - FOnAcceptDate(Self, D, B); - if B then - Self.Date := D; - except - on E:Exception do - MessageDlg(E.Message, mtError, [mbOK], 0); - end; -end; - -procedure TDateEdit.CalendarPopupShowHide(Sender: TObject); -begin - FDroppedDown := (Sender as TForm).Visible; -end; - -procedure TDateEdit.SetDateOrder(const AValue: TDateOrder); -begin - if FDateOrder=AValue then exit; - FDateOrder:=AValue; - SetDateMask; -end; - -{ TCalcEdit } - -function TCalcEdit.GetAsFloat: Double; -begin - Result := StrToFloatDef(Trim(Text), 0.0); -end; - -function TCalcEdit.GetAsInteger: Integer; -begin - Result:=StrToIntDef(Text,0); -end; - -function TCalcEdit.GetDefaultGlyph: TBitmap; -begin - Result := CalcGlyph; -end; - -function TCalcEdit.GetDefaultGlyphName: String; -begin - Result := ResBtnCalculator; -end; - -procedure TCalcEdit.SetAsFloat(const AValue: Double); -begin - Text:=FloatToStr(AValue); -end; - -procedure TCalcEdit.SetAsInteger(const AValue: Integer); -begin - Text:=IntToStr(AValue); -end; - -function TCalcEdit.TitleStored: boolean; -begin - Result:=FDialogTitle<>rsCalculator; -end; - -procedure TCalcEdit.ButtonClick; -begin - inherited ButtonClick; - RunDialog; -end; - -procedure TCalcEdit.RunDialog; -var - D : Double; - B : Boolean; -begin - D:=AsFloat; - with CreateCalculatorForm(Self,FLayout,0) do - try - Caption:=DialogTitle; - Value:=D; - if (ShowModal=mrOK) then - begin - D:=Value; - B:=True; - If Assigned(FOnAcceptValue) then - FOnAcceptValue(Self,D,B); - if B then - AsFloat:=D; - end; - finally - Free; - end; -end; - -constructor TCalcEdit.Create(AOwner: TComponent); -begin - inherited Create(AOwner); - FdialogTitle:=rsCalculator; -end; - - -procedure Register; -begin - {$IFnDEF USEOLDEDITBUTTON} - RegisterComponents('Misc', [TButtonEdit,TFileNameEdit,TDirectoryEdit, - TDateEdit,TCalcEdit]); - {$ENDIF} -end; - -end. diff --git a/lcl/editbtn.pas b/lcl/editbtn.pas index 6f9583182e..25c4aec727 100644 --- a/lcl/editbtn.pas +++ b/lcl/editbtn.pas @@ -1,18 +1,25 @@ { - /*************************************************************************** - editbtn.pas - ----------- - Component Library Extended dialogs Controls + *************************************************************************** + editbtn.pas + ----------- + Component Library Extended dialogs Controls - ***************************************************************************/ + *************************************************************************** ***************************************************************************** - This file is part of the Lazarus Component Library (LCL) - - See the file COPYING.modifiedLGPL.txt, included in this distribution, - for details about the license. + * * + * This file is part of the Lazarus Component Library (LCL) * + * See the file COPYING.modifiedLGPL.txt, included in this distribution, * + * for details about the copyright. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * + * * ***************************************************************************** + + } unit EditBtn; @@ -22,129 +29,280 @@ unit EditBtn; interface -{$IFnDEF USEOLDEDITBUTTON} uses - Classes, ButtonEdit; - -type - TCustomEditButton = class(TCustomButtonEdit); - TEditButton = class(TButtonEdit); - TCheckItemEvent = ButtonEdit.TCheckItemEvent; - TCustomControlFilterEdit = ButtonEdit.TCustomControlFilterEdit; - TAcceptFileNameEvent = ButtonEdit.TAcceptFileNameEvent; - TDialogKind = ButtonEdit.TDialogKind; - TFileNameEdit = ButtonEdit.TFileNameEdit; - TDirectoryEdit = ButtonEdit.TDirectoryEdit; - TAcceptDateEvent = ButtonEdit.TAcceptDateEvent; - TCustomDateEvent = ButtonEdit.TCustomDateEvent; - TDateOrder = ButtonEdit.TDateOrder; - TDateEdit = ButtonEdit.TDateEdit; - TAcceptValueEvent = ButtonEdit.TAcceptValueEvent; - TCalcEdit = ButtonEdit.TCalcEdit; - -const - ResBtnListFilter = ButtonEdit.ResBtnListFilter; //'btnfiltercancel'; - ResBtnFileOpen = ButtonEdit.ResBtnFileOpen; //'btnselfile'; - ResBtnSelDir = ButtonEdit.ResBtnSelDir; //'btnseldir'; - ResBtnCalendar = ButtonEdit.ResBtnCalendar; //'btncalendar'; - ResBtnCalculator = ButtonEdit.ResBtnCalculator; //'btncalculator'; - -{$ELSE} - -uses - Classes, SysUtils, LCLProc, LResources, LCLStrConsts, LCLType, LMessages, + Classes, SysUtils, LCLProc, LResources, LCLStrConsts, Types, LCLType, LMessages, Graphics, Controls, Forms, FileUtil, Dialogs, StdCtrls, Buttons, Calendar, ExtDlgs, CalendarPopup, MaskEdit, Menus; - const NullDate: TDateTime = 0; type + + TButtonAlign = (BaLeft, BaRight); + + { TBEEdit } + + TBeEdit = class(TCustomMaskedit) + protected + procedure DoEnter; override; + procedure DoExit; override; + end; + { TCustomEditButton } - TCustomEditButton = class(TCustomMaskEdit) + TCustomEditButton = class(TCustomControl) private FButton: TSpeedButton; - FButtonNeedsFocus: Boolean; + FButtonAlign: TButtonAlign; + FButtonOnlyWhenFocused: Boolean; FDirectInput: Boolean; - FIsReadOnly: boolean; - FOnButtonClick : TNotifyEvent; + FEdit: TBeEdit; + FIsReadOnly: Boolean; + FFlat: Boolean; + //Forwarded events from FButton + FOnButtonClick: TNotifyEvent; + //Forwarded events from FEdit + FOnEditClick: TNotifyEvent; + FOnEditChange: TNotifyEvent; + FOnEditDblClick: TNotifyEvent; + FOnEditDragDrop: TDragDropEvent; + FOnEditDragOver: TDragOverEvent; + FOnEditEditingDone: TNotifyEvent; + FOnEditEndDrag: TEndDragEvent; + FOnEditExit: TNotifyEvent; + FOnEditKeyDown: TKeyEvent; + FOnEditKeyPress: TKeyPressEvent; + FOnEditEnter: TNotifyEvent; + FOnEditKeyUp: TKeyEvent; + FOnEditMouseDown: TMouseEvent; + FOnEditMouseUp: TMouseEvent; + FOnEditMouseEnter: TNotifyEvent; + FOnEditMouseLeave: TNotifyEvent; + FOnEditMouseMove: TMouseMoveEvent; + FOnEditStartDrag: TStartDragEvent; + FOnEditUtf8KeyPress: TUtf8KeyPressEvent; + + function GetAlignment: TAlignment; + function GetAutoSelect: Boolean; + function GetAutoSelected: Boolean; + function GetBtnCaption: TCaption; function GetButtonHint: TTranslateString; function GetButtonWidth: Integer; + function GetCanUndo: Boolean; + function GetCaretPos: TPoint; + function GetCharCase: TEditCharCase; + function GetColor: TColor; function GetDirectInput: Boolean; - function GetFlat: Boolean; - procedure SetButtonHint(const AValue: TTranslateString); - procedure SetButtonNeedsFocus(const AValue: Boolean); - procedure SetButtonWidth(const AValue: Integer); - procedure SetDirectInput(const AValue: Boolean); - procedure SetFlat(const AValue: Boolean); - procedure SetGlyph(Pic: TBitmap); - function GetGlyph : TBitmap; - procedure SetNumGlyphs(ANumber: Integer); - function GetNumGlyphs:Integer; - function GetMinHeight: Integer; - procedure WMSetFocus(var Message: TLMSetFocus); message LM_SETFOCUS; - procedure WMKillFocus(var Message: TLMKillFocus); message LM_KILLFOCUS; + function GetEchoMode: TEchoMode; + function GetEditMask: String; + function GetGlyph: TBitmap; + function GetHideSelection: Boolean; + function GetMaxLength: Integer; + function GetModified: Boolean; + function GetNumbersOnly: Boolean; + function GetNumGlyps: Integer; + function GetPasswordChar: char; + function GetReadOnly: Boolean; + function GetSelLength: Integer; + function GetSelStart: Integer; + function GetSelText: String; + function GetText: TCaption; function IsCustomGlyph : Boolean; + + procedure InternalOnButtonClick(Sender: TObject); + procedure InternalOnEditClick(Sender: TObject); + procedure InternalOnEditDblClick(Sender: TObject); + procedure InternalOnEditChange(Sender: TObject); + procedure InternalOnEditDragDrop(Sender, Source: TObject; X,Y: Integer); + procedure InternalOnEditDragOver(Sender, Source: TObject; X,Y: Integer; State: TDragState; var Accept: Boolean); + procedure InternalOnEditEditingDone(Sender: TObject); + procedure InternalOnEditEnter(Sender: TObject); + procedure InternalOnEditExit(Sender: TObject); + procedure InternalOnEditEndDrag(Sender, Target: TObject; X,Y: Integer); + procedure InternalOnEditKeyDown(Sender: TObject; var Key: word; Shift: TShiftState); + procedure InternalOnEditKeyPress(Sender: TObject; var Key: char); + procedure InternalOnEditKeyUp(Sender: TObject; var Key: word; Shift: TShiftState); + procedure InternalOnEditMouseDown(Sender: TObject; Button: TMouseButton; + Shift: TShiftState; X, Y: Integer); + procedure InternalOnEditMouseUp(Sender: TObject; Button: TMouseButton; + Shift: TShiftState; X, Y: Integer); + procedure InternalOnEditMouseEnter(Sender: TObject); + procedure InternalOnEditMouseLeave(Sender: TObject); + procedure InternalOnEditMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); + procedure InternalOnEditUtf8KeyPress(Sender: TObject; var UTF8Key: TUTF8Char); + procedure InternalOnEditStartDrag(Sender: TObject; var DragObject: TDragObject); + + procedure SetAlignment(AValue: TAlignment); + procedure SetAutoSelect(AValue: Boolean); + procedure SetAutoSelected(AValue: Boolean); + procedure SetButtonAlign(AValue: TButtonAlign); + procedure SetBtnCaption(AValue: TCaption); + procedure SetButtonHint(AValue: TTranslateString); + procedure SetButtonOnlyWhenFocused(AValue: Boolean); + procedure SetButtonWidth(AValue: Integer); + procedure SetCaretPos(AValue: TPoint); + procedure SetCharCase(AValue: TEditCharCase); + procedure SetDirectInput(AValue: Boolean); + procedure SetEchoMode(AValue: TEchoMode); + procedure SetEditMask(AValue: String); + procedure SetFlat(AValue: Boolean); + procedure SetGlyph(AValue: TBitmap); + procedure SetHideSelection(AValue: Boolean); + procedure SetMaxLength(AValue: Integer); + procedure SetModified(AValue: Boolean); + procedure SetNumbersOnly(AValue: Boolean); + procedure SetNumGlyphs(AValue: Integer); + procedure SetPasswordChar(AValue: char); + procedure SetPopupMenu(AValue: TPopupMenu); + procedure SetReadOnly(AValue: Boolean); + procedure SetSelLength(AValue: Integer); + procedure SetSelStart(AValue: Integer); + procedure SetSelText(AValue: String); + procedure SetText(AValue: TCaption); protected - procedure CheckButtonVisible; - function CalcButtonVisible: boolean; virtual; - function CalcButtonEnabled: Boolean; virtual; - function GetReadOnly: Boolean; override; + class function GetControlClassDefaultSize: TSize; override; + function CalcButtonVisible: Boolean; virtual; function GetDefaultGlyph: TBitmap; virtual; function GetDefaultGlyphName: String; virtual; - procedure SetParent(AParent: TWinControl); override; - procedure SetReadOnly(AValue: Boolean); override; - procedure DoPositionButton; virtual; - procedure DoButtonClick (Sender: TObject); virtual; + function GetEditPopupMenu: TPopupMenu; + + procedure CalculatePreferredSize(var PreferredWidth, + PreferredHeight: integer; + WithThemeSpace: Boolean); override; + procedure CheckButtonVisible; + procedure ButtonClick; virtual; + procedure EditChange; virtual; + procedure EditClick; + procedure EditDblClick; virtual; + procedure EditDragDrop(Source: TObject; X,Y: Integer); + procedure EditDragOver(Source: TObject; X,Y: Integer; State: TDragState; var Accept: Boolean); + procedure EditEditingDone; + procedure EditEndDrag(Target: TObject; X,Y: Integer); + procedure EditEnter; virtual; + procedure EditExit; virtual; + procedure EditKeyDown(var Key: word; Shift: TShiftState); + procedure EditKeyPress( var Key: char); + procedure EditKeyUp(var Key: word; Shift: TShiftState); + procedure EditMouseDown(Button: TMouseButton; + Shift: TShiftState; X, Y: Integer); + procedure EditMouseUp(Button: TMouseButton; + Shift: TShiftState; X, Y: Integer); + procedure EditMouseEnter; + procedure EditMouseLeave; + procedure EditMouseMove(Shift: TShiftState; X, Y: Integer); + procedure EditUtf8KeyPress(var UTF8Key: TUTF8Char); + procedure EditStartDrag(var DragObject: TDragObject); + + procedure Loaded; override; - procedure Notification(AComponent: TComponent; Operation: TOperation); override; - procedure CMVisibleChanged(var Msg: TLMessage); message CM_VISIBLECHANGED; - procedure CMEnabledChanged(var Msg: TLMessage); message CM_ENABLEDCHANGED; - procedure CMBiDiModeChanged(var Message: TLMessage); message CM_BIDIMODECHANGED; - // New properties. - property ButtonWidth : Integer read GetButtonWidth write SetButtonWidth; - property DirectInput : Boolean read GetDirectInput write SetDirectInput default True; - property Glyph : TBitmap read GetGlyph write SetGlyph stored IsCustomGlyph; - property NumGlyphs : Integer read GetNumGlyphs write SetNumGlyphs; - property OnButtonClick : TNotifyEvent read FOnButtonClick write FOnButtonClick; + procedure SetAutoSize(AValue: Boolean); override; + procedure SetColor(AValue: TColor); override; + procedure SetCursor(AValue: TCursor); override; + + property AutoSelect: Boolean read GetAutoSelect write SetAutoSelect default True; + property AutoSelected: Boolean read GetAutoSelected write SetAutoSelected; property Button: TSpeedButton read FButton; + property ButtonAlign: TButtonAlign read FButtonAlign write SetButtonAlign default BaRight; + property ButtonCaption: TCaption read GetBtnCaption write SetBtnCaption; property ButtonHint: TTranslateString read GetButtonHint write SetButtonHint; + property ButtonOnlyWhenFocused: Boolean read FButtonOnlyWhenFocused write SetButtonOnlyWhenFocused default False; + property ButtonWidth: Integer read GetButtonWidth write SetButtonWidth; + property Color: TColor read GetColor write SetColor stored True default {$ifdef UseCLDefault}clDefault{$else}clWindow{$endif}; + property DirectInput : Boolean read GetDirectInput write SetDirectInput default True; + property EditMask: String read GetEditMask write SetEditMask; + property Flat: Boolean read FFlat write SetFlat default False; + property Glyph: TBitmap read GetGlyph write SetGlyph stored IsCustomGlyph; + property NumGlyphs: Integer read GetNumGlyps write SetNumGlyphs; + + property OnButtonClick: TNotifyEvent read FOnButtonClick write FOnButtonClick; + property OnClick: TNotifyEvent read FOnEditClick write FOnEditClick; + property OnDblClick: TNotifyEvent read FOnEditDblClick write FOnEditDblClick; + property OnDragDrop: TDragDropEvent read FOnEditDragDrop write FOnEditDragDrop; + property OnDragOver: TDragOverEvent read FOnEditDragOver write FOnEditDragOver; + property OnEditingDone: TNotifyEvent read FOnEditEditingDone write FOnEditEditingDone; + property OnEndDrag: TEndDragEvent read FOnEditEndDrag write FOnEditEndDrag; + property OnEnter: TNotifyEvent read FOnEditEnter write FOnEditEnter; + property OnExit: TNotifyEvent read FOnEditExit write FOnEditExit; + property OnMouseDown: TMouseEvent read FOnEditMouseDown write FOnEditMouseDown; + property OnKeyPress: TKeyPressEvent read FOnEditKeyPress write FOnEditKeyPress; + property OnKeyUp: TKeyEvent read FOnEditKeyUp write FOnEditKeyUp; + property OnMouseEnter: TNotifyEvent read FOnEditMouseEnter write FOnEditMouseEnter; + property OnMouseLeave: TNotifyEvent read FOnEditMouseLeave write FOnEditMouseLeave; + property OnMouseMove: TMouseMoveEvent read FOnEditMouseMove write FOnEditMouseMove; + property OnMouseUp: TMouseEvent read FOnEditMouseUp write FOnEditMouseUp; + property OnStartDrag: TStartDragEvent read FOnEditStartDrag write FOnEditStartDrag; + property OnUtf8KeyPress: TUtf8KeyPressEvent read FOnEditUtf8KeyPress write FOnEditUtf8KeyPress; public constructor Create(AOwner: TComponent); override; destructor Destroy; override; - property Flat: Boolean read GetFlat write SetFlat default False; - property ButtonOnlyWhenFocused: Boolean read FButtonNeedsFocus write SetButtonNeedsFocus default False; + + procedure Clear; + procedure ClearSelection; virtual; + procedure CopyToClipboard; virtual; + procedure CutToClipboard; virtual; + procedure PasteFromClipboard; virtual; + procedure SelectAll; + procedure SetFocus; override; + procedure Undo; virtual; + + property Autosize default True; + property Alignment: TAlignment read GetAlignment write SetAlignment default taLeftJustify; + property CanUndo: Boolean read GetCanUndo; + property CaretPos: TPoint read GetCaretPos write SetCaretPos; + property CharCase: TEditCharCase read GetCharCase write SetCharCase default ecNormal; + property EchoMode: TEchoMode read GetEchoMode write SetEchoMode default emNormal; + property HideSelection: Boolean read GetHideSelection write SetHideSelection default False; + property MaxLength: Integer read GetMaxLength write SetMaxLength; + property Modified: Boolean read GetModified write SetModified; + property NumbersOnly: Boolean read GetNumbersOnly write SetNumbersOnly default False; + property PasswordChar: char read GetPasswordChar write SetPasswordChar; + property PopupMenu: TPopupMenu read GetEditPopupMenu write SetPopupMenu; + property ReadOnly: Boolean read GetReadOnly write SetReadOnly default False; + property SelLength: Integer read GetSelLength write SetSelLength; + property SelStart: Integer read GetSelStart write SetSelStart; + property SelText: String read GetSelText write SetSelText; + property Text: TCaption read GetText write SetText; + + property OnChange: TNotifyEvent read FOnEditChange write FOnEditChange; + end; - { TEditButton } + { TEditButton } TEditButton = class(TCustomEditButton) - Public + public + property AutoSelected; property Button; published - property AutoSize; + property NumbersOnly; + property Action; property AutoSelect; + property AutoSize default True; property Align; + property Alignment; property Anchors; - property BidiMode; + property BiDiMode; property BorderSpacing; - property BorderStyle; + property BorderStyle default bsNone; + property ButtonAlign; + property ButtonCaption; + property ButtonHint; property ButtonOnlyWhenFocused; property ButtonWidth; - property ButtonHint; property CharCase; property Color; + property Constraints; + property Cursor; property DirectInput; - property DragCursor; - property DragMode; property EchoMode; property Enabled; property Flat; property Font; property Glyph; +// property HideSelection; + property Hint; property MaxLength; property NumGlyphs; property OnButtonClick; @@ -153,6 +311,7 @@ type property OnDblClick; property OnDragDrop; property OnDragOver; + property OnContextPopup; property OnEditingDone; property OnEndDrag; property OnEnter; @@ -161,14 +320,15 @@ type property OnKeyPress; property OnKeyUp; property OnMouseDown; + property OnMouseEnter; + property OnMouseLeave; property OnMouseMove; property OnMouseUp; property OnStartDrag; property OnUTF8KeyPress; - property ParentBidiMode; + property ParentBiDiMode; property ParentColor; property ParentFont; - property ParentShowHint; property PasswordChar; property PopupMenu; property ReadOnly; @@ -214,10 +374,10 @@ type fOnFilterItem: TFilterItemEvent; fOnCheckItem: TCheckItemEvent; procedure KeyDown(var Key: Word; Shift: TShiftState); override; - procedure Change; override; - procedure DoEnter; override; - procedure DoExit; override; - procedure DoButtonClick (Sender: TObject); override; + procedure EditChange; override; + procedure EditEnter; override; + procedure EditExit; override; + procedure ButtonClick; override; procedure SortAndFilter; virtual; abstract; procedure ApplyFilter(Immediately: Boolean = False); procedure ApplyFilterCore; virtual; abstract; @@ -289,13 +449,14 @@ type property OnMouseUp; property OnStartDrag; property OnUTF8KeyPress; + property Text; end; { TFileNameEdit } TAcceptFileNameEvent = procedure (Sender : TObject; Var Value : String) of Object; TDialogKind = (dkOpen,dkSave,dkPictureOpen,dkPictureSave); - + TFileNameEdit = class(TCustomEditButton) private FDialogOptions: TOpenOptions; @@ -317,13 +478,14 @@ type function GetDefaultGlyphName: String; override; function CreateDialog(AKind: TDialogKind): TCommonDialog; virtual; procedure SaveDialogResult(AKind: TDialogKind; D: TCommonDialog); virtual; - procedure DoButtonClick (Sender: TObject); override; + procedure ButtonClick; override; procedure RunDialog; virtual; - procedure TextChanged; override; + procedure EditChange; override; procedure DoFolderChange(Sender:TObject); virtual; public constructor Create(AOwner: TComponent); override; destructor Destroy; override; + property AutoSelected; property DialogFiles: TStrings read FDialogFiles; published // TFileName properties. @@ -387,11 +549,12 @@ type property OnMouseUp; property OnStartDrag; property OnUTF8KeyPress; + property Text; end; - - + + { TDirectoryEdit } - + TDirectoryEdit = class(TCustomEditButton) private FDialogTitle: String; @@ -405,9 +568,10 @@ type function GetDefaultGlyphName: String; override; function CreateDialog: TCommonDialog; virtual; function GetDialogResult(D : TCommonDialog) : String; virtual; - procedure DoButtonClick (Sender: TObject); override; + procedure ButtonClick; override; procedure RunDialog; virtual; public + property AutoSelected; published // TDirectory properties. property Directory: String read GetDirectory write SetDirectory; @@ -463,9 +627,10 @@ type property OnMouseUp; property OnStartDrag; property OnUTF8KeyPress; + property Text; end; - - + + { TDateEdit } TAcceptDateEvent = procedure (Sender : TObject; var ADate : TDateTime; @@ -473,8 +638,6 @@ type TCustomDateEvent = procedure (Sender : TObject; var ADate : string) of object; TDateOrder = (doNone,doMDY,doDMY,doYMd); - { TDateEdit } - TDateEdit = class(TCustomEditButton) private FDateOrder: TDateOrder; @@ -496,13 +659,14 @@ type protected function GetDefaultGlyph: TBitmap; override; function GetDefaultGlyphName: String; override; - procedure DoButtonClick(Sender: TObject); override; - procedure DblClick; override; + procedure ButtonClick; override; + procedure EditDblClick; override; procedure SetDateMask; virtual; public constructor Create(AOwner: TComponent); override; procedure DateFormatChanged; virtual; function GetDateFormat: string; + property AutoSelected; property Date: TDateTime read GetDate write SetDate; property Button; property DroppedDown: Boolean read FDroppedDown; @@ -540,6 +704,7 @@ type property OnChange; property OnChangeBounds; property OnClick; + property OnDblClick; property OnEditingDone; property OnEnter; property OnExit; @@ -559,12 +724,14 @@ type property TabStop; property TabOrder; property Visible; + property Text; end; - + { TCalcEdit } - + TAcceptValueEvent = procedure(Sender: TObject; var AValue: Double; var Accept: Boolean) of object; + TCalcEdit = class(TCustomEditButton) private FDialogTitle: String; @@ -579,10 +746,11 @@ type FCalcDialog : TForm; function GetDefaultGlyph: TBitmap; override; function GetDefaultGlyphName: String; override; - procedure DoButtonClick (Sender: TObject); override; + procedure ButtonClick; override; procedure RunDialog; virtual; public constructor Create(AOwner: TComponent); override; + property AutoSelected; published // CalcEdit properties property CalculatorLayout : TCalculatorLayout read FLayout write Flayout; @@ -638,6 +806,7 @@ type property OnMouseUp; property OnStartDrag; property OnUTF8KeyPress; + property Text; end; @@ -653,196 +822,187 @@ const ResBtnCalendar = 'btncalendar'; ResBtnCalculator = 'btncalculator'; - {$ENDIF} - procedure Register; - implementation -{$IFnDEF USEOLDEDITBUTTON} - -{$ELSE} - {$R lcl_edbtnimg.res} +{ TBEEdit } + +procedure TBeEdit.DoEnter; +begin + if (Owner is TCustomEditButton) then TCustomEditButton(Owner).CheckButtonVisible; + inherited DoEnter; +end; + +procedure TBeEdit.DoExit; +begin + if (Owner is TCustomEditButton) then TCustomEditButton(Owner).CheckButtonVisible; + inherited DoExit; +end; + { TCustomEditButton } -constructor TCustomEditButton.Create(AOwner: TComponent); -var - B: TBitmap; +procedure TCustomEditButton.InternalOnButtonClick(Sender: TObject); begin - inherited Create(AOwner); - FDirectInput := True; - FButton := TSpeedButton.Create(Self); - FButton.Width := Self.Height; - FButton.Height := Self.Height; - FButton.FreeNotification(Self); - CheckButtonVisible; - FButton.OnClick := @DoButtonClick; - FButton.Cursor := crArrow; - FButton.ControlStyle := FButton.ControlStyle + [csNoDesignSelectable]; - B := GetDefaultGlyph; - if B = nil - then FButton.LoadGlyphFromResourceName(hInstance, GetDefaultGlyphName) - else FButton.Glyph := B; - ControlStyle := ControlStyle - [csSetCaption]; + ButtonClick; end; -destructor TCustomEditButton.Destroy; +procedure TCustomEditButton.InternalOnEditChange(Sender: TObject); begin - FreeAndNil(FButton); - inherited Destroy; + EditChange; end; -procedure TCustomEditButton.SetGlyph(Pic: TBitmap); -Begin - FButton.Glyph:=Pic; +procedure TCustomEditButton.InternalOnEditClick(Sender: TObject); +begin + EditClick; +end; + +procedure TCustomEditButton.InternalOnEditDblClick(Sender: TObject); +begin + EditDblClick; +end; + +procedure TCustomEditButton.InternalOnEditDragDrop(Sender, Source: TObject; X, Y: Integer); +begin + EditDragDrop(Source, X, Y); +end; + +procedure TCustomEditButton.InternalOnEditDragOver(Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean); +begin + EditDragOver(Source, X, Y, State, Accept); +end; + +procedure TCustomEditButton.InternalOnEditEditingDone(Sender: TObject); +begin + EditEditingDone; +end; + +procedure TCustomEditButton.InternalOnEditEndDrag(Sender, Target: TObject; X, Y: Integer); +begin + EditEndDrag(Target, X, Y); +end; + +procedure TCustomEditButton.InternalOnEditEnter(Sender: TObject); +begin + EditEnter; +end; + +procedure TCustomEditButton.InternalOnEditExit(Sender: TObject); +begin + EditExit; +end; + +procedure TCustomEditButton.InternalOnEditKeyDown(Sender: TObject; var Key: word; + Shift: TShiftState); +begin + EditKeyDown(Key, Shift); +end; + +procedure TCustomEditButton.InternalOnEditKeyPress(Sender: TObject; var Key: char); +begin + EditKeyPress(Key); +end; + +procedure TCustomEditButton.InternalOnEditKeyUp(Sender: TObject; var Key: word; + Shift: TShiftState); +begin + EditKeyUp(Key, Shift); +end; + +procedure TCustomEditButton.InternalOnEditMouseDown(Sender: TObject; + Button: TMouseButton; Shift: TShiftState; X, Y: Integer); +begin + EditMouseDown(Button, Shift, X, Y); +end; + +procedure TCustomEditButton.InternalOnEditMouseUp(Sender: TObject; + Button: TMouseButton; Shift: TShiftState; X, Y: Integer); +begin + EditMouseUp(Button, Shift, X, Y); +end; + +procedure TCustomEditButton.InternalOnEditMouseEnter(Sender: TObject); +begin + EditMouseEnter; +end; + +procedure TCustomEditButton.InternalOnEditMouseLeave(Sender: TObject); +begin + EditMouseLeave; +end; + +procedure TCustomEditButton.InternalOnEditMouseMove(Sender: TObject; + Shift: TShiftState; X, Y: Integer); +begin + EditMouseMove(Shift, X, Y); +end; + +procedure TCustomEditButton.InternalOnEditUtf8KeyPress(Sender: TObject; + var UTF8Key: TUTF8Char); +begin + EditUtf8KeyPress(UTF8Key); +end; + +procedure TCustomEditButton.InternalOnEditStartDrag(Sender: TObject; var DragObject: TDragObject); +begin + EditStartDrag(DragObject); end; function TCustomEditButton.GetButtonWidth: Integer; begin - Result:=FButton.Width; + Result := FButton.Width; end; -function TCustomEditButton.GetDefaultGlyph: TBitmap; +function TCustomEditButton.GetCanUndo: Boolean; begin - Result := nil; + Result := FEdit.CanUndo; end; -function TCustomEditButton.GetDefaultGlyphName: String; +function TCustomEditButton.GetCaretPos: TPoint; begin - Result := ''; + Result := FEdit.CaretPos; end; -function TCustomEditButton.GetButtonHint: TTranslateString; +function TCustomEditButton.GetEditPopupMenu: TPopupMenu; begin - Result:=FButton.Hint; + Result := FEdit.PopupMenu; end; -function TCustomEditButton.GetDirectInput: Boolean; +procedure TCustomEditButton.CalculatePreferredSize(var PreferredWidth, + PreferredHeight: integer; WithThemeSpace: Boolean); begin - Result := FDirectInput; + inherited CalculatePreferredSize(PreferredWidth, PreferredHeight, WithThemeSpace); + PreferredWidth := 0; end; -function TCustomEditButton.GetFlat: Boolean; +function TCustomEditButton.GetReadOnly: Boolean; begin - if Assigned(FButton) then - Result := FButton.Flat - else - Result := False; + Result := FIsReadOnly; end; -function TCustomEditButton.CalcButtonVisible: boolean; +function TCustomEditButton.GetSelLength: Integer; begin - Result := (csdesigning in ComponentState) or - (Visible and (Focused or not FButtonNeedsFocus)); + Result := FEdit.SelLength; end; -procedure TCustomEditButton.CheckButtonVisible; +function TCustomEditButton.GetSelStart: Integer; begin - If Assigned(FButton) then - FButton.Visible:=CalcButtonVisible; + Result := FEdit.SelStart; end; -procedure TCustomEditButton.SetButtonHint(const AValue: TTranslateString); +function TCustomEditButton.GetSelText: String; begin - FButton.Hint:=AValue; + Result := FEdit.SelText; end; -procedure TCustomEditButton.SetButtonNeedsFocus(const AValue: Boolean); +function TCustomEditButton.GetText: TCaption; begin - if FButtonNeedsFocus<>AValue then - begin - FButtonNeedsFocus:=AValue; - CheckButtonVisible; - end; + Result := FEdit.Text; end; -procedure TCustomEditButton.SetButtonWidth(const AValue: Integer); -begin - FButton.Width:=AValue; -end; - -procedure TCustomEditButton.SetDirectInput(const AValue: Boolean); -begin - FDirectInput := AValue; - inherited SetReadOnly((not FDirectInput) or (FIsReadOnly)) -end; - -procedure TCustomEditButton.SetFlat(const AValue: Boolean); -begin - if Assigned(FButton) then - FButton.Flat:=AValue; -end; - -function TCustomEditButton.GetGlyph : TBitmap; -begin - Result:=FButton.Glyph; -end; - -procedure TCustomEditButton.SetNumGlyphs(ANumber: Integer); -begin - FButton.NumGlyphs:=ANumber; -end; - -function TCustomEditButton.GetNumGlyphs:Integer; -begin - Result:=FButton.NumGlyphs; -end; - -procedure TCustomEditButton.Notification(AComponent: TComponent; Operation: TOperation); -begin - inherited Notification(AComponent, Operation); - if (AComponent = FButton) and (Operation = opRemove) then - FButton := nil; -end; - -procedure TCustomEditButton.CMVisibleChanged(var Msg: TLMessage); -begin - inherited CMVisibleChanged(Msg); - CheckButtonVisible; -end; - -procedure TCustomEditButton.CMEnabledChanged(var Msg: TLMessage); -begin - inherited CMEnabledChanged(Msg); - if (FButton<>nil) then - FButton.Enabled:=CalcButtonEnabled; -end; - -procedure TCustomEditButton.CMBiDiModeChanged(var Message: TLMessage); -begin - inherited; - DoPositionButton; -end; - -function TCustomEditButton.GetMinHeight: Integer; -begin - Result:=23; -end; - -procedure TCustomEditButton.DoButtonClick (Sender: TObject); -begin - if not ReadOnly then - if Assigned(FOnButtonClick) then - FOnButtonClick(Self); -end; - -procedure TCustomEditButton.Loaded; -begin - inherited Loaded; - DoPositionButton; - CheckButtonVisible; -end; - -procedure TCustomEditButton.WMKillFocus(var Message: TLMKillFocus); -begin - CheckButtonVisible; - inherited; -end; - -function TCustomEditButton.IsCustomGlyph : Boolean; +function TCustomEditButton.IsCustomGlyph: Boolean; function _LoadRes: TBitmap; var @@ -896,48 +1056,518 @@ begin end; end; -function TCustomEditButton.GetReadOnly: Boolean; +function TCustomEditButton.GetAlignment: TAlignment; begin - Result := FIsReadOnly; + Result := FEdit.Alignment; end; -procedure TCustomEditButton.SetParent(AParent: TWinControl); + +function TCustomEditButton.GetAutoSelect: Boolean; begin - inherited SetParent(AParent); - if FButton <> nil then + Result := FEdit.AutoSelect; +end; + +function TCustomEditButton.GetAutoSelected: Boolean; +begin + Result := FEdit.AutoSelected; +end; + +function TCustomEditButton.GetButtonHint: TTranslateString; +begin + Result := FButton.Hint; +end; + +function TCustomEditButton.GetBtnCaption: TCaption; +begin + Result := FButton.Caption; +end; + +procedure TCustomEditButton.SetButtonAlign(AValue: TButtonAlign); +begin + if FButtonAlign = AValue then + exit; + FButtonAlign := AValue; + case FButtonAlign of + BaRight: + FButton.Align := alRight; + BaLeft: + FButton.Align := alLeft; + end; +end; + +procedure TCustomEditButton.SetButtonHint(AValue: TTranslateString); +begin + FButton.Hint := AValue; +end; + +procedure TCustomEditButton.SetButtonOnlyWhenFocused(AValue: Boolean); +begin + if FButtonOnlyWhenFocused <> AValue then begin - DoPositionButton; + FButtonOnlyWhenFocused := AValue; CheckButtonVisible; end; end; -function TCustomEditButton.CalcButtonEnabled: Boolean; +procedure TCustomEditButton.SetButtonWidth(AValue: Integer); begin - Result := not FIsReadOnly and Enabled; + FButton.Width := AValue; +end; + +procedure TCustomEditButton.SetCaretPos(AValue: TPoint); +begin + FEdit.CaretPos := AValue; +end; + +function TCustomEditButton.GetCharCase: TEditCharCase; +begin + Result := FEdit.CharCase; +end; + +function TCustomEditButton.GetDirectInput: Boolean; +begin + Result := FDirectInput; +end; + +function TCustomEditButton.GetEchoMode: TEchoMode; +begin + Result := FEdit.EchoMode; +end; + +function TCustomEditButton.GetEditMask: String; +begin + Result := FEdit.EditMask +end; + +function TCustomEditButton.GetColor: TColor; +begin + Result := FEdit.Color; +end; + + +function TCustomEditButton.GetGlyph: TBitmap; +begin + Result := FButton.Glyph; +end; + +function TCustomEditButton.GetHideSelection: Boolean; +begin + Result := FEdit.HideSelection; +end; + + +function TCustomEditButton.GetMaxLength: Integer; +begin + Result := FEdit.MaxLength; +end; + +function TCustomEditButton.GetModified: Boolean; +begin + Result := FEdit.Modified; +end; + +function TCustomEditButton.GetNumbersOnly: Boolean; +begin + Result := FEdit.NumbersOnly; +end; + +function TCustomEditButton.GetNumGlyps: Integer; +begin + Result := FButton.NumGlyphs; +end; + +function TCustomEditButton.GetPasswordChar: char; +begin + Result := FEdit.PasswordChar; +end; + +procedure TCustomEditButton.SetAlignment(AValue: TAlignment); +begin + FEdit.Alignment := AValue; +end; + +procedure TCustomEditButton.SetAutoSelect(AValue: Boolean); +begin + FEdit.AutoSelect := AValue; +end; + +procedure TCustomEditButton.SetAutoSelected(AValue: Boolean); +begin + FEdit.AutoSelected := AValue; +end; + +procedure TCustomEditButton.SetAutoSize(AValue: Boolean); +begin + if AutoSize = AValue then + Exit; + inherited SetAutosize(AValue); + //FButton.AutoSize := AValue; + FEdit.AutoSize := AValue; +end; + +procedure TCustomEditButton.SetBtnCaption(AValue: TCaption); +begin + FButton.Caption := AValue; +end; + +class function TCustomEditButton.GetControlClassDefaultSize: TSize; +begin + Result.CX := 80 + 23; //as TCustomEdit + TCustomSpeedButton + Result.CY := 23; //as TCustomEdit +end; + +function TCustomEditButton.GetDefaultGlyph: TBitmap; +begin + Result := nil; +end; + +function TCustomEditButton.GetDefaultGlyphName: String; +begin + Result := ''; +end; + +procedure TCustomEditButton.SetCharCase(AValue: TEditCharCase); +begin + FEdit.CharCase := AValue; +end; + +procedure TCustomEditButton.SetDirectInput(AValue: Boolean); +begin + FDirectInput := AValue; + FEdit.ReadOnly := ((not FDirectInput) or (FIsReadOnly)); +end; + +procedure TCustomEditButton.SetEchoMode(AValue: TEchoMode); +begin + FEdit.EchoMode := AValue; +end; + +procedure TCustomEditButton.SetEditMask(AValue: String); +begin + FEdit.EditMask := AValue; +end; + +procedure TCustomEditButton.SetColor(AValue: TColor); +begin + FEdit.Color := AValue; +end; + +procedure TCustomEditButton.SetCursor(AValue: TCursor); +begin + if Cursor = AValue then + Exit; + inherited SetCursor(AValue); + FButton.Cursor := AValue; + FEdit.Cursor := AValue; +end; + +procedure TCustomEditButton.SetFlat(AValue: Boolean); +begin + if FFlat = AValue then + Exit; + FFlat := AValue; + FButton.Flat := AValue; +end; + +procedure TCustomEditButton.SetHideSelection(AValue: Boolean); +begin + FEdit.HideSelection := AValue; +end; + +procedure TCustomEditButton.SetMaxLength(AValue: Integer); +begin + FEdit.MaxLength := AValue; +end; + +procedure TCustomEditButton.SetModified(AValue: Boolean); +begin + FEdit.Modified := AValue; +end; + +procedure TCustomEditButton.SetNumbersOnly(AValue: Boolean); +begin + FEdit.NumbersOnly := AValue; +end; + +procedure TCustomEditButton.SetNumGlyphs(AValue: Integer); +begin + FButton.NumGlyphs := AValue; +end; + +procedure TCustomEditButton.SetPasswordChar(AValue: char); +begin + FEdit.PasswordChar := AValue; +end; + +procedure TCustomEditButton.SetPopupMenu(AValue: TPopupMenu); +begin + FEdit.PopupMenu := AValue; +end; + +procedure TCustomEditButton.SetText(AValue: TCaption); +begin + FEdit.Text := AValue; +end; + +function TCustomEditButton.CalcButtonVisible: Boolean; +begin + Result := (csdesigning in ComponentState) or + (Visible and (FEdit.Focused or not FButtonOnlyWhenFocused)); +end; + +procedure TCustomEditButton.CheckButtonVisible; +begin + If Assigned(FButton) then + FButton.Visible := CalcButtonVisible; +end; + +procedure TCustomEditButton.ButtonClick; +begin + if ReadOnly then + Exit; + if Assigned(FOnButtonClick) then + FOnButtonClick(Self); +end; + +procedure TCustomEditButton.EditChange; +begin + if Assigned(FOnEditChange) then FOnEditChange(Self); +end; + +procedure TCustomEditButton.EditClick; +begin + if Assigned(FOnEditClick) then FOnEditClick(Self); +end; + +procedure TCustomEditButton.EditDblClick; +begin + if Assigned(FOnEditDblClick) then FOnEditDblClick(Self); +end; + +procedure TCustomEditButton.EditDragDrop(Source: TObject; X, Y: Integer); +begin + if Assigned(FOnEditDragDrop) then FOnEditDragDrop(Self, Source, X, Y); +end; + +procedure TCustomEditButton.EditDragOver(Source: TObject; X, Y: Integer; + State: TDragState; var Accept: Boolean); +begin + if Assigned(FOnEditDragOver) then FOnEditDragOver(Self, Source, X, Y, State, Accept); +end; + +procedure TCustomEditButton.EditEditingDone; +begin + if Assigned(FOnEditEditingDone) then FOnEditEditingDone(Self); +end; + +procedure TCustomEditButton.EditEndDrag(Target: TObject; X, Y: Integer); +begin + if Assigned(FOnEditEndDrag) then FOnEditEndDrag(Self, Target, X, Y); +end; + +procedure TCustomEditButton.EditEnter; +begin + if Assigned(FOnEditEnter) then FOnEditEnter(Self); +end; + +procedure TCustomEditButton.EditExit; +begin + if Assigned(FOnEditExit) then FOnEditExit(Self); +end; + +procedure TCustomEditButton.EditKeyDown(var Key: word; Shift: TShiftState); +begin + if Assigned(FOnEditKeyDown) then FOnEditKeyDown(Self, Key, Shift); +end; + +procedure TCustomEditButton.EditKeyPress(var Key: char); +begin + if Assigned(FOnEditKeyPress) then FOnEditKeyPress(Self, Key); +end; + +procedure TCustomEditButton.EditKeyUp(var Key: word; Shift: TShiftState); +begin + if Assigned(FOnEditKeyUp) then FOnEditKeyUp(Self, Key, Shift); +end; + +procedure TCustomEditButton.EditMouseDown(Button: TMouseButton; + Shift: TShiftState; X, Y: Integer); +begin + if Assigned(FOnEditMouseDown) then FOnEditMouseDown(Self, Button, Shift, X, Y); +end; + +procedure TCustomEditButton.EditMouseUp(Button: TMouseButton; + Shift: TShiftState; X, Y: Integer); +begin + if Assigned(FOnEditMouseUp) then FOnEditMouseUp(Self, Button, Shift, X, Y); +end; + +procedure TCustomEditButton.EditMouseEnter; +begin + if Assigned(FOnEditMouseEnter) then FOnEditMouseEnter(Self); +end; + +procedure TCustomEditButton.EditMouseLeave; +begin + if Assigned(FOnEditMouseLeave) then FOnEditMouseLeave(Self); +end; + +procedure TCustomEditButton.EditMouseMove(Shift: TShiftState; X, Y: Integer); +begin + if Assigned(FOnEditMouseMove) then FOnEditMouseMove(Self, Shift, X, Y); +end; + +procedure TCustomEditButton.EditUtf8KeyPress(var UTF8Key: TUTF8Char); +begin + if Assigned(FOnEditUtf8KeyPress) then FOnEditUtf8KeyPress(Self, Utf8Key); +end; + +procedure TCustomEditButton.EditStartDrag(var DragObject: TDragObject); +begin + if Assigned(FOnEditStartDrag) then FOnEditStartDrag(Self, DragObject); +end; + +procedure TCustomEditButton.Loaded; +begin + inherited Loaded; + CheckButtonVisible; +end; + +procedure TCustomEditButton.SetGlyph(AValue: TBitmap); +begin + FButton.Glyph := AValue; + Invalidate; end; procedure TCustomEditButton.SetReadOnly(AValue: Boolean); begin FIsReadOnly := AValue; - if Assigned(FButton) then - FButton.Enabled := CalcButtonEnabled; - inherited SetReadOnly(FIsReadOnly or (not DirectInput)); + FEdit.ReadOnly := AValue or (not DirectInput); + FButton.Enabled := not FIsReadOnly and Enabled; end; -procedure TCustomEditButton.DoPositionButton; +procedure TCustomEditButton.SetSelLength(AValue: Integer); begin - if FButton = nil then exit; - FButton.Parent := Parent; - if BiDiMode = bdLeftToRight then - FButton.AnchorToCompanion(akLeft,0,Self) + FEdit.SelLength := AValue; +end; + +procedure TCustomEditButton.SetSelStart(AValue: Integer); +begin + FEdit.SelStart := AValue; +end; + +procedure TCustomEditButton.SetSelText(AValue: String); +begin + FEdit.SelText := AValue; +end; + +constructor TCustomEditButton.Create(AOwner: TComponent); +var + B: TBitmap; +begin + FButton := TSpeedButton.Create(Self); + FEdit := TBeEdit.Create(Self); + inherited Create(AOwner); + BorderStyle := bsNone; + FButtonAlign := BaRight; + FButtonOnlyWhenFocused := False; + FDirectInput := True; + FIsReadOnly := False; + + with GetControlClassDefaultSize do + SetInitialBounds(0, 0, CX, CY); + + with FButton do + begin + Align := alRight; + OnClick := @InternalOnButtonClick; + Parent := Self; + end; + B := GetDefaultGlyph; + if B = nil + then + FButton.LoadGlyphFromResourceName(hInstance, GetDefaultGlyphName) else - FButton.AnchorToCompanion(akRight,0,Self); + FButton.Glyph := B; + + with FEdit do + begin + Align := alClient; + ParentColor := False; + ParentFont := True; + + AutoSelect := True; + Alignment := taLeftJustify; + ReadOnly := False; + + OnChange := @InternalOnEditChange; + OnClick := @InternalOnEditClick; + OnDblClick := @InternalOnEditDblClick; + OnDragDrop := @InternalOnEditDragDrop; + OnDragOver := @InternalOnEditDragOver; + OnEndDrag := @InternalOnEditEndDrag; + OnExit := @InternalOnEditExit; + OnEnter := @InternalOnEditEnter; + OnKeyDown := @InternalOnEditKeyDown; + OnKeyPress := @InternalOnEditKeyPress; + OnKeyUp := @InternalOnEditKeyUp; + OnMouseDown := @InternalOnEditMouseDown; + OnMouseUp := @InternalOnEditMouseUp; + OnMouseEnter := @InternalOnEditEnter; + OnMouseLeave := @InternalOnEditMouseLeave; + OnMouseMove := @InternalOnEditMouseMove; + OnStartDrag := @InternalOnEditStartDrag; + OnUtf8KeyPress := @InternalOnEditUtf8KeyPress; + + Parent := Self; + end; + AutoSize := True; end; -procedure TCustomEditButton.WMSetFocus(var Message: TLMSetFocus); +destructor TCustomEditButton.Destroy; begin - CheckButtonVisible; - inherited; + inherited Destroy; +end; + +procedure TCustomEditButton.Clear; +begin + FEdit.Clear; +end; + +procedure TCustomEditButton.ClearSelection; +begin + FEdit.ClearSelection; +end; + +procedure TCustomEditButton.CopyToClipboard; +begin + FEdit.CopyToClipboard; +end; + +procedure TCustomEditButton.CutToClipboard; +begin + FEdit.CutToClipBoard; +end; + +procedure TCustomEditButton.PasteFromClipboard; +begin + FEdit.PasteFromClipBoard; +end; + +procedure TCustomEditButton.SelectAll; +begin + FEdit.SelectAll; +end; + +procedure TCustomEditButton.SetFocus; +begin + inherited SetFocus; + FEdit.SetFocus; +end; + +procedure TCustomEditButton.Undo; +begin + FEdit.Undo; end; { TCustomControlFilterEdit } @@ -1059,13 +1689,13 @@ begin inherited KeyDown(Key, Shift); end; -procedure TCustomControlFilterEdit.Change; +procedure TCustomControlFilterEdit.EditChange; begin Filter:=Text; inherited; end; -procedure TCustomControlFilterEdit.DoEnter; +procedure TCustomControlFilterEdit.EditEnter; begin // inherited; fJustActivated:=False; @@ -1073,14 +1703,14 @@ begin Text:=''; end; -procedure TCustomControlFilterEdit.DoExit; +procedure TCustomControlFilterEdit.EditExit; begin fJustActivated:=False; Filter:=Text; // inherited; end; -procedure TCustomControlFilterEdit.DoButtonClick(Sender: TObject); +procedure TCustomControlFilterEdit.ButtonClick; begin fJustActivated:=False; Filter:=''; @@ -1148,9 +1778,9 @@ begin Inc(FFileNameChangeLock); try if FHideDirectories then - inherited RealSetText(ExtractFileName(AValue)) + Text:=ExtractFileName(AValue) //Originally used inherited RealSetText() else - inherited RealSetText(AValue) + Text:=AValue finally Dec(FFileNameChangeLock); end; @@ -1225,9 +1855,9 @@ begin end; end; -procedure TFileNameEdit.DoButtonClick(Sender: TObject); +procedure TFileNameEdit.ButtonClick; begin - inherited DoButtonClick(Sender); + inherited ButtonClick; RunDialog; end; @@ -1254,7 +1884,7 @@ begin end end; -procedure TFileNameEdit.TextChanged; +procedure TFileNameEdit.EditChange; begin if FFileNameChangeLock <= 0 then begin @@ -1268,7 +1898,7 @@ begin Dec(FFileNameChangeLock); end; end; - inherited TextChanged; //do this _after_ we have updated FFileName + inherited EditChange; //do this _after_ we have updated FFileName end; procedure TFileNameEdit.DoFolderChange(Sender: TObject); @@ -1308,9 +1938,9 @@ begin end; -procedure TDirectoryEdit.DoButtonClick(Sender: TObject); +procedure TDirectoryEdit.ButtonClick; begin - inherited DoButtonClick(Sender); + inherited ButtonClick; RunDialog; end; @@ -1398,12 +2028,12 @@ begin Result := ResBtnCalendar; end; -procedure TDateEdit.DoButtonClick(Sender: TObject);//or onClick +procedure TDateEdit.ButtonClick;//or onClick var PopupOrigin: TPoint; ADate: TDateTime; begin - inherited DoButtonClick(Sender); + inherited ButtonClick; PopupOrigin := ControlToScreen(Point(0, Height)); ADate := GetDate; @@ -1413,11 +2043,11 @@ begin @CalendarPopupReturnDate, @CalendarPopupShowHide) end; -procedure TDateEdit.DblClick; +procedure TDateEdit.EditDblClick; begin - inherited DblClick; + inherited EditDblClick; if not ReadOnly then - DoButtonClick(nil); + ButtonClick; end; procedure TDateEdit.SetDateMask; @@ -1597,9 +2227,9 @@ begin Result:=FDialogTitle<>rsCalculator; end; -procedure TCalcEdit.DoButtonClick(Sender: TObject); +procedure TCalcEdit.ButtonClick; begin - inherited DoButtonClick(Sender); + inherited ButtonClick; RunDialog; end; @@ -1634,17 +2264,10 @@ begin end; -{$ENDIF} - procedure Register; begin -{$IFDEF USEOLDEDITBUTTON} RegisterComponents('Misc', [TEditButton,TFileNameEdit,TDirectoryEdit, TDateEdit,TCalcEdit]); -{$ELSE} -RegisterComponents('Misc', [TEditButton]); // still need to be able to load this -{$ENDIF} end; - end. diff --git a/lcl/lclbase.lpk b/lcl/lclbase.lpk index 737f8faa51..c36f88843b 100644 --- a/lcl/lclbase.lpk +++ b/lcl/lclbase.lpk @@ -30,7 +30,7 @@ - + @@ -100,1107 +100,1103 @@ - - - - - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + + + + + - + - + - + - + - - - - - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + + + + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - - - - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + + + + + - + - + - + - + - - - - - - - + + + - - + + diff --git a/lcl/registerlcl.pas b/lcl/registerlcl.pas index 3aced4aa35..d8e45c8f51 100644 --- a/lcl/registerlcl.pas +++ b/lcl/registerlcl.pas @@ -12,7 +12,7 @@ interface uses LazarusPackageIntf, Menus, Buttons, StdCtrls, ExtCtrls, ComCtrls, MaskEdit, CheckLst, Forms, Grids, Controls, Dialogs, Spin, Arrow, Calendar, - PairSplitter, ExtDlgs, StdActns, DbCtrls, DBGrids, DBActns, EditBtn, ButtonEdit, + PairSplitter, ExtDlgs, StdActns, DbCtrls, DBGrids, DBActns, EditBtn, ActnList, FileCtrl, Graphics, XMLPropStorage, IniPropStorage, BarChart, ColorBox, ButtonPanel, LResources, LazHelpHTML, PopupNotifier, AsyncProcess, UTF8Process, ShellCtrls, ValEdit; @@ -61,7 +61,6 @@ begin RegisterUnit('UTF8Process', @UTF8Process.Register); RegisterUnit('ShellCtrls', @ShellCtrls.Register); RegisterUnit('ValEdit', @ValEdit.Register); - RegisterUnit('ButtonEdit',@ButtonEdit.Register); end; procedure RegisterLCLBase;