📄 wwdatainspector.pas
字号:
TwwDataInspectorEdit = class(TInplaceEdit)
private
FwwPicture: TwwDBPicture;
FWordWrap: boolean;
ParentGrid: TwwDataInspector;
FUsePictureMask: boolean;
FCanvas: TControlCanvas;
procedure WMSetFocus(var Message: TWMSetFocus); message WM_SETFOCUS;
procedure CMFontChanged(var Message: TMessage); message CM_FONTCHANGED;
procedure WMPaste(var Message: TMessage); message WM_PASTE; {10/28/96 }
procedure CMExit(var Message: TMessage); message CM_EXIT;
procedure WMPaint(var Message: TWMPaint); message WM_PAINT;
procedure WMEraseBkgnd(var Message: TWmEraseBkgnd); message WM_ERASEBkgnd;
protected
procedure BoundsChanged; override;
procedure KeyDown(var Key: Word; Shift: TShiftState); override;
procedure CreateParams(var Params: TCreateParams); override;
procedure KeyUp(var Key: Word; Shift: TShiftState); override;
procedure KeyPress(var Key: Char); override;
procedure SetWordWrap(val: boolean);
procedure UpdateContents; override;
public
constructor wwCreate(AOwner: TComponent; dummy: integer); virtual;
destructor Destroy; override;
function IsValidPictureValue(s: string): boolean;
Function HavePictureMask: boolean;
property Picture: TwwDBPicture read FwwPicture write FwwPicture;
property WordWrap: boolean read FWordWrap write SetWordWrap;
property Color;
property Font;
end;
TwwInspectorFieldChangedEvent =
procedure (Sender: TwwDataInspector; Field: TField) of object;
TwwInspectorCreateDTPEvent = procedure(Sender: TwwDataInspector;
ADateTimePicker: TwwDBCustomDateTimePicker) of object;
TwwInspectorCreateComboEvent = procedure(Sender: TwwDataInspector;
Combo: TwwDBComboBox) of object;
TwwInspectorBeforeSelectCellEvent = procedure (Sender: TwwDataInspector;
ObjItem: TwwInspectorItem; var CanSelect: boolean) of object;
TwwInspectorAfterSelectCellEvent = procedure (Sender: TwwDataInspector;
ObjItem: TwwInspectorItem) of object;
TwwInspectorCanExpandEvent = procedure (Sender: TwwDataInspector;
ObjItem: TwwInspectorItem; var CanExpand: boolean) of object;
TwwInspectorCanCollapseEvent = procedure (Sender: TwwDataInspector;
ObjItem: TwwInspectorItem; var CanCollapse: boolean) of object;
TwwInspectorExpandedEvent = procedure (Sender: TwwDataInspector;
ObjItem: TwwInspectorItem) of object;
TwwInspectorCollapsedEvent = procedure (Sender: TwwDataInspector;
ObjItem: TwwInspectorItem) of object;
TwwInspectorTabSetFocusStyle = (itsPreserveActiveItem, itsResetActiveItem);
TwwInspectorButtonOptions = class(TPersistent)
private
FExpandGlyph: TBitmap;
FCollapseGlyph: TBitmap;
Control: TWinControl;
FTransparentGlyphs: boolean;
procedure SetExpandGlyph(Value: TBitmap);
procedure SetCollapseGlyph(Value: TBitmap);
public
constructor Create(AOwner: TComponent);
destructor Destroy; override;
published
property ExpandGlyph: TBitmap read FExpandGlyph write SetExpandGlyph;
property CollapseGlyph: TBitmap read FCollapseGlyph write SetCollapseGlyph;
property TransparentGlyphs: Boolean read FTransparentGlyphs write FTransparentGlyphs default false;
end;
TwwInspectorPaintTextEvent = procedure (Sender: TwwDataInspector; Item: TwwInspectorItem; var PaintText: string) of object;
TwwInspectorValidationError = procedure (Sender: TwwDataInspector;
Item: TwwInspectorItem; var Msg: string; var DoDefault: boolean) of object;
TwwCreateInspectorHintWindowEvent =
procedure (Sender: TObject;
HintWindow: TwwInspectorHintWindow;
AField: TField; R: TRect;
var WordWrap: boolean;
var MaxWidth, MaxHeight: integer;
var DoDefault: boolean) of object;
TwwInspectorIndicatorRow=class(TPersistent)
private
FEnabled: boolean;
FCaption: string;
FHeight: integer;
FColor: TColor;
FTextAlignment: TAlignment;
procedure SetColor(Value: TColor);
procedure SetEnabled(Value: Boolean);
procedure SetHeight(Value: integer);
procedure SetCaption(Value: string);
procedure SetTextAlignment(Value: TAlignment);
public
Inspector: TwwDataInspector;
constructor Create(Owner: TComponent);
procedure Invalidate;
published
property TextAlignment: TAlignment read FTextAlignment write SetTextAlignment default taLeftJustify;
property Color: TColor read FColor write SetColor default clBtnFace;
property Enabled: boolean read FEnabled write SetEnabled default False;
property Caption: string read FCaption write SetCaption;
property Height: integer read FHeight write SetHeight default 0;
end;
TwwDataInspector = class(TCustomGrid)
private
SkipUpdateCustomControlInFocus: boolean;
NewMouseRow: integer;
FIndicators: TImageList;
FOnDrawDataCell: TwwInspectorDrawDataCellEvent;
FOnDrawIndicatorCell: TwwInspectorDrawICellEvent;
FOnTopLeftChanged: TNotifyEvent;
FOnCalcCustomEdit: TwwInspectorCalcCustomEditEvent; // 1/21/02
FOptions: TwwDataInspectorOptions;
FPaintOptions: TwwGridPaintOptions;
FDesigner: TControl;
FItems: TwwInspectorCollection;
FDataLink: TwwDataInspectorDataLink;
FCaptionWidth: integer;
FInactiveFocusColor: TColor;
FEditText: string;
FSizingIndex: integer;
FSizingPos, FSizingOfs: Integer;
FOnCheckValue: TwwValidateEvent;
FOnFieldChanged: TwwInspectorFieldChangedEvent;
FOnItemChanged: TwwInspectorItemChanged;
FReadOnly: boolean;
FCaptionIndent: integer;
FDateTimePicker: TwwDBCustomDateTimePicker;
FCombo: TwwDBComboBox;
FOnCreateDateTimePicker: TwwInspectorCreateDTPEvent;
FOnCreateDefaultCombo: TwwInspectorCreateComboEvent;
FPictureMaskFromDataSet: boolean;
FDefaultRowHeight: integer;
FCaptionFont: TFont;
FLineStyleData: TwwDataInspectorLineStyle;
FLineStyleCaption: TwwDataInspectorLineStyle;
FDottedLineColor: TColor;
FUpdateCount: Integer;
InvalidateInEndUpdate: boolean;
FButtonOptions: TwwInspectorButtonOptions;
FSetFocusTabStyle : TwwInspectorTabSetFocusStyle;
FOnDrawCaptionCell: TwwInspectorDrawCaptionEvent;
FOnBeforePaint: TwwInspectorNotifyEvent;
FOnGetEditMask: TGetEditEvent;
FOnBeforeSelectCell: TwwInspectorBeforeSelectCellEvent;
FOnAfterSelectCell: TwwInspectorAfterSelectCellEvent;
FOnCanExpand: TwwInspectorCanExpandEvent;
FOnCanCollapse: TwwInspectorCanCollapseEvent;
FOnExpanded : TwwInspectorExpandedEvent;
FOnCollapsed : TwwInspectorCollapsedEvent;
FOnCalcDataPaintText: TwwInspectorPaintTextEvent;
FOnValidationErrorUsingMask: TwwInspectorValidationError;
FOnCreateHintWindow: TwwCreateInspectorHintWindowEvent;
TextIsSame: boolean;
LastDefaultRowHeight: integer;
SkipErase: boolean;
CheckRowCount: boolean;
FPaintCanvas: TCanvas;
FPaintBitmap: TBitmap;
UseTempCanvas: boolean;
OldDesigning: boolean;
LastActiveItem: TwwInspectorItem;
FActiveItem, FTopItem: TwwInspectorItem;
FMinRowHeight: integer;
OldTopRow: integer;
DoBeginUpdateInSelectCell: boolean;
SelectCellUpdateRect: TRect;
ChildDataChanged: boolean; // 2/10/2000 - Clear inplaceeditor if child datalink is changed.
FDataColumns: integer;
FTreeLineColor: TColor;
FFixedDataRows: integer;
// FAlternatingRowColor: TColor;
// FActiveColumnColor: TColor;
// Cell hint support
lastMouseX, lastMouseY: integer;
HintWindow: THintWindow;
HintTimer: TTimer;
HintTimerCount: integer;
FCustomControlKeyMode: boolean;
UpdateRect: TRect;
// OldClientRect: TRect;
// InitBlendBitmapsFlag: boolean;
OldBoundsRect: TRect;
FScrollBars: TScrollStyle;
// FIndicatorCaption: string;
FIndicatorRow: TwwInspectorIndicatorRow;
// PaintCopyBrushColor: TColor;
PaintCopyTextColor: TColor;
SkipSetFocus: boolean;
SkipUpdateEditText: boolean;
lastMouseCoord: TGridCoord;
{$ifdef wwUseThemeManager}
HotCol: integer;
HotRow: integer;
{$endif}
FDisableThemes: boolean;
procedure HintTimerEvent(Sender: TObject);
procedure EditingChanged;
procedure SetDataSource(value : TDataSource);
Function GetDataSource: TDataSource;
procedure SetCaptionWidth(value: integer);
procedure FieldChanged(Field: TField);
procedure RecordChanged(Field: TField);
procedure UpdateData;
function GetPageHeight: integer;
function InValidColSizingArea(x: integer): boolean;
function GetDateTimePicker: TwwDBCustomDateTimePicker;
function DataRow(ARow: integer): integer;
procedure WMVScroll(var Message: TWMVScroll); message WM_VSCROLL;
procedure WMSize(var Message: TWMSize); message WM_SIZE;
procedure WMKillFocus(var Message: TMessage); message WM_KillFocus;
procedure WMSetFocus(var Msg: TWMSetFocus); message WM_SETFOCUS;
procedure CMEnter(var Message: TCMEnter); message CM_ENTER;
procedure CMExit(var Message: TMessage); message CM_EXIT;
procedure WMSetCursor(var Msg: TWMSetCursor); message WM_SETCURSOR;
procedure WMEraseBkgnd(var Message: TWmEraseBkgnd); message WM_ERASEBkgnd;
procedure WMChar(var Msg: TWMChar); message WM_CHAR;
procedure WMPaint(var Message: TWMPaint); message WM_PAINT;
procedure WMLButtonDown(var Message: TWMLButtonDown); message WM_LBUTTONDOWN;
procedure WMHScroll(var Message: TWMHScroll); message WM_HSCROLL;
procedure CMGetDataLink(var Message: TMessage); message CM_GETDATALINK;
procedure CMMouseLeave(var Message: TMessage); message CM_MOUSELEAVE;
procedure CMMouseEnter(var Message: TMessage); message CM_MOUSEENTER;
Function IsHighlightRowVisible: boolean;
Procedure GetActiveItemCallback(
Item: TwwInspectorItem;
UserData: Pointer; var AContinue: boolean);
Procedure GetActiveRowsCallback(
Item: TwwInspectorItem;
UserData: Pointer; var AContinue: boolean);
Procedure ApplySettingsCallback(
Item: TwwInspectorItem;
UserData: Pointer; var AContinue: boolean);
Procedure LinkActiveCallback(
Item: TwwInspectorItem;
UserData: Pointer; var AContinue: boolean);
Function GetActiveRows: integer;
procedure SetCaptionIndent(val: integer);
procedure SetItems(Value: TwwInspectorCollection);
procedure SetOptions(Value: TwwDataInspectorOptions);
// procedure SetPaintOptions(Value: TwwInspectorPaintOptions);
procedure SetDefaultRowHeight(Value: integer);
procedure SetCaptionFont(Value: TFont);
procedure CaptionFontChanged(Sender: TObject);
procedure ToggleCheckbox(obj: TwwInspectorItem);
procedure SetLineStyleCaption(val: TwwDataInspectorLineStyle);
procedure SetLineStyleData(val: TwwDataInspectorLineStyle);
procedure SetUpdateState(Updating: Boolean);
function isFocused: boolean;
Procedure SetActiveItem(obj: TwwInspectorItem);
function GetActiveItem: TwwInspectorItem;
function GetCaptionColor: TColor;
function GetTreeLineColor: TColor;
procedure SetCaptionColor(val: TColor);
procedure SetTreeLineColor(val: TColor);
Function GetTopItem: TwwInspectorItem;
procedure UpdateRowCount;
procedure EditDataLinkDataChange(Sender: TObject);
procedure EditDataLinkUpdateData(Sender: TObject);
Function GetActiveEdit: TWinControl;
procedure SetDottedLineColor(val: TColor);
procedure SetDataColumns(val:integer);
procedure SetScrollBars(Value: TScrollStyle);
procedure SetFixedDataRows(Value: integer);
// procedure SetIndicatorCaption(val: string);
protected
CurrentCustomEdit: TWinControl; //CustomEdit;
CurrentCustomEditRow: integer;
CurrentCustomEditCol: integer;
InTracking: boolean;
FFocused: boolean;
FastDesign: boolean; { Need to test more with this as true }
TempRichEdit: TwwDBRichEdit;
function GetEditLimit: Integer; override;
function CanEditAcceptKey(Key: Char): Boolean; override;
// 1/21/02
procedure CurrentCustomEditSetfocus; virtual;
procedure DoCalcCustomEdit(Item: TwwInspectorItem;
CustomEdit: TWinControl;
var AllowCustomEdit: boolean); virtual;
function RecordCountIsValid: boolean; virtual;
function GetClientRect: TRect; override;
procedure UpdateScrollBar; virtual;
procedure CreateWnd; override;
procedure Scroll(Distance: Integer); virtual;
Function CreateHintWindow: THintWindow; virtual;
procedure HintMouseMove(Shift: TShiftState; X, Y: Integer); virtual;
procedure DisplayIndicatorCell(ACol: integer; ARect: TRect); virtual;
Function EffectiveFocused: boolean;
procedure DoCreateHintWindow(
HintWindow: TwwInspectorHintWindow;
AField: TField; R: TRect;
var WordWrap: boolean;
var MaxWidth, MaxHeight: integer;
var DoDefault: boolean); virtual;
procedure UpdateCurrentEditPosition;
function ControlRect(ACol, ARow: integer): TRect;
procedure UpdateCustomEdit;
procedure FreeHintWindow; virtual;
function IsActiveControl: Boolean;
procedure ChangeOrientation(RightToLeftOrientation: Boolean);
procedure InheritedPaint;
procedure FirstTimePaint; virtual;
procedure SetDesigner(Value: TControl); virtual;
procedure Notification(AComponent: TComponent; Operation: TOperation); override;
function CreateDateTimePicker: TwwDBCustomDateTimePicker; virtual;
function CreateDefaultCombo: TwwDBComboBox; virtual;
procedure DoCreateDateTimePicker(ADateTimePicker: TwwDBCustomDateTimePicker); virtual;
procedure DoCreateDefaultCombo(ACombo: TwwDBComboBox); virtual;
procedure LinkActive(Value: Boolean); virtual;
function CanEditModify: Boolean; override;
procedure DoFieldChanged(Field: TField); virtual;
procedure DoItemChanged(Item: TwwInspectorItem; NewValue: string); virtual;
function CreateEditor: TInplaceEdit; override;
procedure DoExit; override;
procedure TopLeftChanged; override;
function CanEditShow: Boolean; override;
procedure DrawCell(ACol, ARow: Integer; ARect: TRect; AState: TGridDrawState); override;
procedure MouseMove(Shift: TShiftState; X, Y: Integer); override;
procedure MouseDown(Button: TMouseButton; Shift: TShiftState;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -