⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 wwdatainspector.pas

📁 胜天进销存源码,国产优秀的进销存
💻 PAS
📖 第 1 页 / 共 5 页
字号:

  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 + -