📄 jvqinspector.pas
字号:
function GetHideSelectTextColor: TColor; override;
procedure DoPaint; override;
procedure InitializeColors; override;
procedure PaintDivider(const X, YTop, YBottom: Integer); override;
procedure SetHideSelectColor(const Value: TColor); override;
procedure SetHideSelectTextColor(const Value: TColor); override;
published
property DividerColor default clBtnFace;
property HideSelectColor default clBtnFace;
property HideSelectTextColor default clHighlightText;
property SelectedColor default clHighlight;
property SelectedTextColor default clHighlightText;
property OnSetItemColors: TOnJvInspectorSetItemColors read FOnSetItemColors write FOnSetItemColors;
end;
TJvInspectorItemSizing = class(TPersistent)
private
FMinHeight: TItemRowSizing;
FSizable: Boolean;
FSizingFactor: TItemRowSizing;
protected
Item: TJvCustomInspectorItem;
function GetMinHeight: TItemRowSizing;
function GetSizable: Boolean;
function GetSizingFactor: TItemRowSizing;
procedure SetMinHeight(Value: TItemRowSizing);
procedure SetSizable(Value: Boolean);
procedure SetSizingFactor(Value: TItemRowSizing);
public
constructor Create(const AItem: TJvCustomInspectorItem);
procedure Assign(Source: TPersistent); override;
property MinHeight: TItemRowSizing read GetMinHeight write SetMinHeight;
property Sizable: Boolean read GetSizable write SetSizable;
property SizingFactor: TItemRowSizing read GetSizingFactor write SetSizingFactor;
end;
TJvCustomInspectorItem = class(TPersistent)
private
FData: TJvCustomInspectorData;
FDisplayIndex: Integer;
FDisplayName: string;
FDroppedDown: Boolean;
FEditCtrlDestroying: Boolean;
FEditCtrl: TOpenEdit;
FEditing: Boolean;
FAutoComplete: TJvEditListBoxAutoComplete;
FFlags: TInspectorItemFlags;
FHeight: Integer;
FInspector: TJvCustomInspector;
FItems: TObjectList;
FListBox: TCustomListBox;
FOnCompare: TInspectorItemSortCompare;
FOnGetValueList: TInspectorItemGetValueListEvent;
FOnValueChanged: TNotifyEvent;
FParent: TJvCustomInspectorItem;
FLastPaintGen: Integer;
FPressed: Boolean;
FRects: array [TInspectorPaintRect] of TRect;
FRowSizing: TJvInspectorItemSizing;
FSortKind: TInspectorItemSortKind;
FTracking: Boolean;
FUserData: Pointer;
FDropDownCount: Integer;
protected
function GetName: string; virtual; // NEW: Warren added.
procedure AlphaSort;
procedure Apply; virtual;
procedure ApplyDisplayIndices(const ItemList: TList); virtual;
procedure BuildDisplayableList(const ItemList: TList); virtual;
procedure ButtonClick(Sender: TObject); virtual;
function CanEdit: Boolean; virtual;
procedure CloseUp(Accept: Boolean); virtual;
procedure DataSort;
procedure Deactivate; dynamic;
procedure DoAfterItemCreate; virtual;
function DoCompare(const Item: TJvCustomInspectorItem): Integer; virtual;
procedure DoDefaultDrawListItem(ACanvas: TCanvas; Rect: TRect; const AText: string); virtual;
procedure DoDrawListItem(Control: TObject; Index: Integer; Rect: TRect;
State: TOwnerDrawState; var Handled: Boolean); virtual;
procedure DoDropDownKeys(var Key: Word; Shift: TShiftState); virtual;
procedure DoGetValueList(const Strings: TStrings); virtual;
procedure DoMeasureListItem(Control: TWinControl; Index: Integer;
var Height: Integer); virtual;
procedure DoMeasureListItemWidth(Control: TWinControl; Index: Integer;
var Width: Integer); virtual;
procedure DoValueChanged; virtual;
procedure DropDown; dynamic;
// Defines what to do when the property editor of this inspector item is invoked. Ie, '...' button is clicked on items with iifEdit in their flags.
procedure Edit; virtual;
procedure EditChange(Sender: TObject); virtual;
procedure EditFocusLost(Sender: TObject); dynamic;
procedure EditKillFocus(Sender: TObject);
procedure EditKeyPress(Sender: TObject; var Key: Char); dynamic;
procedure EditKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); dynamic;
procedure EditMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer); virtual;
procedure EditMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); virtual;
procedure EditMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer); virtual;
procedure AutoCompleteStart(Sender: TObject); dynamic;
function GetAutoUpdate: Boolean; virtual;
function GetBaseCategory: TJvCustomInspectorItem; virtual;
function GetCategory: TJvCustomInspectorItem; virtual;
function GetCount: Integer; virtual;
function GetData: TJvCustomInspectorData; virtual;
function GetDisplayIndex: Integer; virtual;
function GetDisplayName: string; virtual; // NOTE THIS USES DISPLAY NAME PROPERTIES TO BUILD ITS RESULT
function GetFullName: string; // NOTE THIS USES THE INTERNAL NAME properties to build its result.
function GetDisplayParent: TJvCustomInspectorItem; virtual;
function GetDisplayValue: string; virtual;
function GetDroppedDown: Boolean; virtual;
function GetEditCtrl: TOpenEdit; virtual;
function GetEditCtrlDestroying: Boolean; virtual;
function GetEditing: Boolean; virtual;
function GetExpanded: Boolean; virtual;
function GetFlags: TInspectorItemFlags; virtual;
function GetHeight: Integer; virtual;
function GetHeightFactor: Integer; virtual;
function GetHidden: Boolean; virtual;
function GetInspector: TJvCustomInspector; virtual;
function GetInspectorPaintGeneration: Integer;
function GetIsCompoundColumn: Boolean; virtual;
function GetItems(const I: Integer): TJvCustomInspectorItem; virtual;
function GetLevel: Integer; virtual;
function GetListBox: TCustomListBox; virtual;
function GetMultiline: Boolean; virtual;
function GetNextSibling: TJvCustomInspectorItem; virtual;
function GetParent: TJvCustomInspectorItem; virtual;
function GetQualifiedNames: Boolean; virtual;
function GetReadOnly: Boolean; virtual;
function GetRects(const RectKind: TInspectorPaintRect): TRect; virtual;
function GetRowSizing: TJvInspectorItemSizing; virtual;
function GetSortKind: TInspectorItemSortKind; virtual;
function GetSortName: string; virtual;
procedure GetValueList(const Strings: TStrings); virtual;
function GetVisible: Boolean; virtual;
procedure InvalidateItem; virtual;
procedure InvalidateList; virtual;
procedure InvalidateSort; virtual;
procedure InvalidateMetaData; virtual;
procedure InvalidateValue; virtual;
function IsCategory: Boolean; virtual;
procedure ListExit(Sender: TObject); virtual;
{procedure ListMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer); virtual;}
procedure ListValueSelect(Sender: TObject); virtual;
procedure ListDeactivate(Sender: TObject); virtual;
procedure MouseDown(Button: TMouseButton; Shift: TShiftState;
X, Y: Integer); virtual;
procedure MouseMove(Shift: TShiftState; X, Y: Integer); virtual;
procedure MouseUp(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); virtual;
procedure NaturalSort;
procedure SelectValue(const Delta: Integer); virtual;
procedure SetAutoUpdate(const Value: Boolean); virtual;
procedure SetDisplayIndex(const Value: Integer); virtual;
procedure SetDisplayIndexValue(const Value: Integer); virtual;
procedure SetDisplayName(Value: string); virtual;
procedure SetDisplayValue(const Value: string); virtual;
procedure SetEditCtrl(const Value: TOpenEdit); virtual;
procedure SetEditing(const Value: Boolean); virtual;
procedure SetExpanded(Value: Boolean); virtual;
procedure SetFlags(const Value: TInspectorItemFlags); virtual;
procedure SetFocus; virtual;
procedure SetHeight(Value: Integer); virtual;
procedure SetHeightFactor(Value: Integer); virtual;
procedure SetHidden(Value: Boolean); virtual;
procedure SetInspector(const AInspector: TJvCustomInspector); virtual;
procedure SetMultiline(const Value: Boolean); virtual;
procedure SetOnCompare(const Value: TInspectorItemSortCompare); virtual;
procedure SetParent(const Value: TJvCustomInspectorItem); virtual;
procedure SetQualifiedNames(const Value: Boolean); virtual;
procedure SetReadOnly(const Value: Boolean); virtual;
procedure SetRects(const RectKind: TInspectorPaintRect; Value: TRect); virtual;
procedure SetRowSizing(Value: TJvInspectorItemSizing); virtual;
procedure SetSortKind(Value: TInspectorItemSortKind); virtual;
procedure SetVisible(Value: Boolean); virtual;
procedure StopTracking; dynamic;
procedure TrackButton(X, Y: Integer); dynamic;
procedure Undo; virtual;
procedure UpdateDisplayOrder(const Item: TJvCustomInspectorItem; const NewIndex: Integer); virtual;
procedure UpdateLastPaintGeneration;
property BaseCategory: TJvCustomInspectorItem read GetBaseCategory;
property Category: TJvCustomInspectorItem read GetCategory;
property DroppedDown: Boolean read GetDroppedDown;
property EditCtrlDestroying: Boolean read GetEditCtrlDestroying;
property EditCtrl: TOpenEdit read GetEditCtrl;
property IsCompoundColumn: Boolean read GetIsCompoundColumn;
property LastPaintGeneration: Integer read FLastPaintGen;
property ListBox: TCustomListBox read GetListBox;
//promoted: property OnGetValueList: TInspectorItemGetValueListEvent read FOnGetValueList write FOnGetValueList;
property Pressed: Boolean read FPressed write FPressed;
property Tracking: Boolean read FTracking write FTracking;
public
constructor Create(const AParent: TJvCustomInspectorItem; const AData: TJvCustomInspectorData); virtual;
destructor Destroy; override;
function Add(const Item: TJvCustomInspectorItem): Integer;
procedure BeforeDestruction; override;
procedure Clear;
procedure Delete(const Index: Integer); overload; virtual;
procedure Delete(const Item: TJvCustomInspectorItem); overload; virtual;
procedure Delete(const Data: TJvCustomInspectorData); overload; virtual;
procedure DrawEditor(const ACanvas: TCanvas); virtual;
procedure DrawName(const ACanvas: TCanvas); virtual;
procedure DrawValue(const ACanvas: TCanvas); virtual;
function EditFocused: Boolean; dynamic;
function HasViewableItems: Boolean; virtual;
function IndexOf(const Item: TJvCustomInspectorItem): Integer; overload; virtual;
function IndexOf(const Data: TJvCustomInspectorData): Integer; overload; virtual;
procedure InitEdit; dynamic;
procedure DoneEdit(const CancelEdits: Boolean = False); dynamic;
procedure Insert(const Index: Integer; const Item: TJvCustomInspectorItem);
procedure ScrollInView;
procedure Sort;
function GetEditorText: string;
property AutoUpdate: Boolean read GetAutoUpdate write SetAutoUpdate;
property Count: Integer read GetCount;
property Data: TJvCustomInspectorData read GetData;
property DisplayIndex: Integer read GetDisplayIndex write SetDisplayIndex;
property DisplayName: string read GetDisplayName write SetDisplayName;
property FullName: string read GetFullName;
property DisplayValue: string read GetDisplayValue write SetDisplayValue;
property Editing: Boolean read GetEditing;
property Expanded: Boolean read GetExpanded write SetExpanded;
property Flags: TInspectorItemFlags read GetFlags write SetFlags;
property Hidden: Boolean read GetHidden write SetHidden;
property Height: Integer read GetHeight write SetHeight;
property HeightFactor: Integer read GetHeightFactor write SetHeightFactor;
property Inspector: TJvCustomInspector read GetInspector;
property Items[const I: Integer]: TJvCustomInspectorItem read GetItems; default;
property Level: Integer read GetLevel;
property Multiline: Boolean read GetMultiline write SetMultiline;
property Name: string read GetName;
property Parent: TJvCustomInspectorItem read GetParent;
property QualifiedNames: Boolean read GetQualifiedNames write SetQualifiedNames;
property ReadOnly: Boolean read GetReadOnly write SetReadOnly;
property Rects[const RectKind: TInspectorPaintRect]: TRect read GetRects write SetRects;
property RowSizing: TJvInspectorItemSizing read GetRowSizing write SetRowSizing;
property SortKind: TInspectorItemSortKind read GetSortKind write SetSortKind;
property UserData: Pointer read FUserData write FUserData;
property Visible: Boolean read GetVisible write SetVisible;
property OnCompare: TInspectorItemSortCompare read FOnCompare write SetOnCompare;
property OnValueChanged: TNotifyEvent read FOnValueChanged write FOnValueChanged;
property OnGetValueList: TInspectorItemGetValueListEvent read FOnGetValueList write FOnGetValueList;
property DropDownCount: Integer read FDropDownCount write FDropDownCount;
end;
TJvInspectorCustomCategoryItem = class(TJvCustomInspectorItem)
private
FName: string;
protected
function GetName: string; override;
function IsCategory: Boolean; override;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -