home *** CD-ROM | disk | FTP | other *** search
- unit inplace;
- {/*****************************************************************/
- / Copyright (c) 1998 IMCA SYSTEMS /
- / All Rights Reserved. /
- / Creation Date: 06.08.98 /
- / Version /
- / MODULE: Inplace Editor Control - real Plug for Controls /
- /*****************************************************************/}
- {$I DFS.inc}
-
- {Define Registered}
- interface
- uses Windows, Classes, CommCtrl, Controls, DsgnIntf, ExtCtrls,stdctrls,dialogs,
- Forms, Graphics, Messages, SysUtils, Menus, ComCtrls,Consts,Grids,Mask;
-
- const
- ISCopyright = 'IMCA SYSTEMS (c) Copyright 1996-98';
- ISOutInplace = 'TOutInplaceEdit';
- ISMail = 'victorov@spb.cityline.ru';
- ISHomePage = 'http://www.spb.cityline.ru/u/victorov';
-
- type
- TSelection = record
- StartPos, EndPos: Integer;
- end;
-
-
- TCheckListBox = class(TCustomListBox)
- private
- FAllowGrayed: Boolean;
- FFlat: Boolean;
- FStandardItemHeight: Integer;
- FOnClickCheck: TNotifyEvent;
- FSaveStates: TList;
- procedure ResetItemHeight;
- procedure DrawCheck(R: TRect; AState: TCheckBoxState);
- procedure SetChecked(Index: Integer; Checked: Boolean);
- function GetChecked(Index: Integer): Boolean;
- procedure SetState(Index: Integer; AState: TCheckBoxState);
- function GetState(Index: Integer): TCheckBoxState;
- procedure ToggleClickCheck(Index: Integer);
- procedure InvalidateCheck(Index: Integer);
- function CreateWrapper(Index: Integer): TObject;
- function ExtractWrapper(Index: Integer): TObject;
- function GetWrapper(Index: Integer): TObject;
- function HaveWrapper(Index: Integer): Boolean;
- procedure SetFlat(Value: Boolean);
- procedure CNDrawItem(var Message: TWMDrawItem); message CN_DRAWITEM;
- procedure CMFontChanged(var Message: TMessage); message CM_FONTCHANGED;
- procedure WMDestroy(var Msg : TWMDestroy);message WM_DESTROY;
- protected
- procedure DrawItem(Index: Integer; Rect: TRect;
- State: TOwnerDrawState); override;
- procedure SetItemData(Index: Integer; AData: LongInt); {$ifdef DFS_DELPHI_4_UP} override;{$endif}
- function GetItemData(Index: Integer): LongInt; {$ifdef DFS_DELPHI_4_UP} override;{$endif}
- procedure ResetContent; {$ifdef DFS_DELPHI_4_UP} override;{$endif}
- procedure DeleteString(Index: Integer); {$ifdef DFS_DELPHI_4_UP} override;{$endif}
-
- procedure KeyPress(var Key: Char); override;
- procedure MouseDown(Button: TMouseButton; Shift: TShiftState;
- X, Y: Integer); override;
-
- procedure ClickCheck; dynamic;
- procedure CreateParams(var Params: TCreateParams); override;
- procedure CreateWnd; override;
- procedure DestroyWnd; override;
- function GetCheckWidth: Integer;
- public
- constructor Create(AOwner: TComponent); override;
- destructor Destroy; override;
- property Checked[Index: Integer]: Boolean read GetChecked write SetChecked;
- property State[Index: Integer]: TCheckBoxState read GetState write SetState;
- published
- property OnClickCheck: TNotifyEvent read FOnClickCheck write FOnClickCheck;
- property Align;
- property AllowGrayed: Boolean read FAllowGrayed write FAllowGrayed default False;
- {$ifdef DFS_DELPHI_4_UP}
- property Anchors;
- property BiDiMode;
- property Constraints;
- property BorderStyle;
- property DragKind;
- property DragMode;
- property ImeMode;
- property ImeName;
- property ParentBiDiMode;
- property OnEndDock;
- property OnEndDrag;
- property OnStartDock;
- property OnStartDrag;
- {$endif}
- property Flat: Boolean read FFlat write SetFlat default True;
- property Color;
- property Columns;
-
- property Ctl3D;
- property DragCursor;
- property Enabled;
- property Font;
- property IntegralHeight;
- property ItemHeight;
- property Items;
-
- property ParentColor;
- property ParentCtl3D;
- property ParentFont;
- property ParentShowHint;
- property PopupMenu;
- property ShowHint;
- property Sorted;
- property Style;
- property TabOrder;
- property TabStop;
- property TabWidth;
- property Visible;
- property OnClick;
- property OnDblClick;
- property OnDragDrop;
- property OnDragOver;
- property OnDrawItem;
-
- property OnEnter;
- property OnExit;
- property OnKeyDown;
- property OnKeyPress;
- property OnKeyUp;
- property OnMeasureItem;
- property OnMouseDown;
- property OnMouseMove;
- property OnMouseUp;
- end;
-
- { TPopupListbox }
- TPopupListbox = class(TCustomListbox)
- private
- FSearchText: String;
- FSearchTickCount: Longint;
- protected
- procedure CreateParams(var Params: TCreateParams); override;
- procedure CreateWnd; override;
- procedure KeyPress(var Key: Char); override;
- procedure MouseUp(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); override;
- procedure MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Integer);override;
-
- end;
-
- TPopupCheckListbox = class(TCheckListBox)
- private
- FSearchText: String;
- FSearchTickCount: Longint;
- protected
- procedure CreateParams(var Params: TCreateParams); override;
- procedure CreateWnd; override;
- procedure KeyPress(var Key: Char); override;
- procedure MouseUp(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); override;
- function GetStrValue : string;
- procedure SetStrValue(Value : string);
- public
- property StrValue : string read GetStrValue write SetStrValue;
- end;
-
- type
- TCustomInplaceEdit=class;
- TEditStyle = (etsSimple, etsEllipsis, etsPickList, etsCheckList, etsAuto);
- TEditOption =(eosAlwaysShowEditor);
- TeditOptions = set Of TEditOption;
- //for future use
- TIEDataType = (iedBoolean,iedInteger,iedCurrency,iedPicklist,iedChecklist);
- TIEGetEditDataEvent = procedure(Sender: TCustomInplaceEdit; var AData : String; var Pwd : boolean) of object;
- TIEValidateDataEvent = procedure(Sender: TCustomInplaceEdit; AData : String; var aCancel : boolean) of object;
- TIEGetEditstyleEvent = procedure(Sender: TCustomInplaceEdit; var aEditstyle : TEditStyle) of object;
- TIEGetPickListEvent = procedure(Sender: TCustomInplaceEdit; var aPickList : Tstrings) of object;
- TIEGetReadOnlyEvent = procedure(Sender: TCustomInplaceEdit; var aReadOnly : boolean) of object;
-
- TIEEditButtonClickEvent = procedure(Sender: TCustomInplaceEdit) of object;
- TIEHideEditorEvent = procedure(Sender: TCustomInplaceEdit) of object;
- TIEUpdateDataEvent= procedure(Sender: TCustomInplaceEdit) of object;
- TIEGetClickKeyEvent=procedure(Sender: TCustomInplaceEdit; var aKey : Word; var aShift : TShiftState) of object;
- TIEUpdateEditEvent =procedure(Sender: TCustomInplaceEdit) of object;
-
-
- TCustomInplaceEdit = class(TCustomEdit)//TMaskEdit)//
- private
- FControl: TWinControl;
- FEditOptions : TEditOptions;
- //callback from FControl events
- FOnGetEditData : TIEGetEditDataEvent;
- FOnValidateData : TIEValidateDataEvent;
- FOnGetEditStyle : TIEGetEditstyleEvent;
- FonGetPickList : TIEGetPickListEvent;
- FonGetReadOnly : TIEGetReadOnlyEvent;
-
- FonEditButtonClick:TIEEditButtonClickEvent;
- FOnHideEditor : TIEHideEditorEvent;
- FOnUpdateData : TIEUpdateDataEvent;
- FonGetClickKey : TIEGetClickKeyEvent;
- FonUpdateEdit : TIEUpdateEditEvent;
- FonKeyUpParent : TKeyEvent;
- FonKeydownParent : TKeyEvent;
- FonKeyPressParent : TKeyPressEvent;
- FonDblClickParent : TNotifyEvent;
-
- FClickTime: Longint;
- FCancelData:boolean;
-
- procedure InternalMove(const Loc: TRect; Redraw: Boolean);
- procedure CMShowingChanged(var Message: TMessage); message CM_SHOWINGCHANGED;
- procedure WMGetDlgCode(var Message: TWMGetDlgCode); message WM_GETDLGCODE;
- procedure WMPaste(var Message); message WM_PASTE;
- procedure WMCut(var Message); message WM_CUT;
- procedure WMClear(var Message); message WM_CLEAR;
- protected
- procedure CreateParams(var Params: TCreateParams); override;
- procedure DblClick; override;
- procedure KeyDown(var Key: Word; Shift: TShiftState); override;
- procedure KeyPress(var Key: Char); override;
- procedure KeyUp(var Key: Word; Shift: TShiftState); override;
- procedure BoundsChanged; virtual;
- procedure UpdateContents; virtual;
- procedure WndProc(var Message: TMessage); override;
- procedure CreateWnd; override;
- //virtual engine
- procedure GetEditData( var AData : String; var Pwd : boolean);
- procedure ValidateData(AData : String; var aCancel : boolean);
- procedure GetEditstyle(var aEditstyle : TEditStyle);
- procedure GetPickList(var aPickList : Tstrings);
- procedure GetReadOnly(var aReadOnly : boolean);
-
- procedure EditButtonClick;
- procedure HideEditor;
- procedure UpdateData;
- procedure UpdateEdit;//update location and data of editor
- procedure GetClickKey(var aKey : Word; var aShift : TShiftState);
- procedure KeyUpParent(var Key: Word; Shift: TShiftState);
- procedure KeydownParent(var Key: Word; Shift: TShiftState);
- procedure KeyPressParent(var Key: Char);
- procedure DblClickParent;
-
- public
- procedure Hide;
- constructor Create(AOwner: TComponent); override;
- procedure Deselect;
- procedure Invalidate;
- procedure Move(const Loc: TRect);
- function PosEqual(const Rect: TRect): Boolean;
- procedure SetFocus; //reintroduce;
- procedure UpdateLoc(const Loc: TRect);
- function Visible: Boolean;
- property EditOptions : TEditOptions read FeditOptions write FeditOptions;
- property CancelData : boolean read FcancelData write FcancelData;//cancelling update data
- property ClickTime : Longint read FClickTime write FClickTime;
- property Control: TWinControl read FControl write Fcontrol;
- property OnGetEditData : TIEGetEditDataEvent read FOnGetEditData write FOnGetEditData;
- property OnValidateData : TIEValidateDataEvent read FOnValidateData write FOnValidateData;
- property OnGetEditStyle : TIEGetEditstyleEvent read FOnGetEditStyle write FOnGetEditStyle;
- property OnGetPickList : TIEGetPickListEvent read FonGetPickList write FonGetPickList;
- property OnGetReadOnly : TIEGetReadOnlyEvent read FonGetReadOnly write FonGetReadOnly;
-
- property OnEditButtonClick : TIEEditButtonClickEvent read FonEditButtonClick write FonEditButtonClick;
- property OnHideEditor : TIEHideEditorEvent read FonHideEditor write FonHideEditor;
- property OnUpdateData : TIEUpdateDataEvent read FonUpdateData write FonUpdateData;
- property OnGetClickKey : TIEGetClickKeyEvent read FonGetClickKey write FonGetClickKey;
- property OnUpdateEdit : TIEUpdateEditEvent read FonUpdateEdit write FonUpdateEdit;
- property OnKeyUpParent : TKeyEvent read FonKeyUpParent write FonKeyUpParent;
- property OnKeydownParent : TKeyEvent read FonKeydownParent write FonKeydownParent;
- property OnKeyPressParent : TKeyPressEvent read FonKeyPressParent write FonKeyPressParent;
- property OnDblClickParent : TNotifyEvent read FonDblClickParent write FonDblClickParent;
-
- end;
-
- // TOutInplaceEdit
-
- TOutInplaceEdit = class(TCustomInplaceEdit)
- private
-
- FButtonWidth: Integer;
- FPickList: TCustomListbox;//TPopupListbox;
- FActiveList: TWinControl;
-
- FEditStyle: TEditStyle;
- FListVisible: Boolean;
- FTracking: Boolean;
- FPressed: Boolean;
- procedure ListMouseUp(Sender: TObject; Button: TMouseButton;
- Shift: TShiftState; X, Y: Integer);
- procedure SetEditStyle(Value: TEditStyle);
- procedure StopTracking;
- procedure TrackButton(X,Y: Integer);
-
- procedure CMCancelMode(var Message: TCMCancelMode); message CM_CancelMode;
- procedure WMCancelMode(var Message: TMessage); message WM_CancelMode;
- procedure WMKillFocus(var Message: TMessage); message WM_KillFocus;
-
- procedure WMLButtonDblClk(var Message: TWMLButtonDblClk); message wm_LButtonDblClk;
- procedure WMPaint(var Message: TWMPaint); message wm_Paint;
- procedure WMSetCursor(var Message: TWMSetCursor); message WM_SetCursor;
- function OverButton(const P: TPoint): Boolean;
- function ButtonRect: TRect;
-
- protected
- procedure BoundsChanged; override;
- procedure CloseUp(Accept: Boolean);
- procedure DoDropDownKeys(var Key: Word; Shift: TShiftState);
-
- procedure KeyDown(var Key: Word; Shift: TShiftState); override;
- procedure MouseDown(Button: TMouseButton; Shift: TShiftState;
- X, Y: Integer); override;
- procedure MouseMove(Shift: TShiftState; X, Y: Integer); override;
- procedure MouseUp(Button: TMouseButton; Shift: TShiftState;
- X, Y: Integer); override;
- procedure PaintWindow(DC: HDC); override;
- procedure WndProc(var Message: TMessage); override;
-
- property ActiveList: TWinControl read FActiveList write FActiveList;
- procedure CreateWnd; override;
- property PickList: TCustomListbox read FPickList;
- public
- procedure CancelMode(Sender : Tobject);
- procedure UpdateContents; override;
- procedure DropDown;
- constructor Create(Owner: TComponent); override;
- property EditStyle: TEditStyle read FEditStyle write SetEditStyle;
- end;
-
- implementation
-
-
- end.
-