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

📄 ieditorbasiccomponents.pas

📁 iocopm3.04源码,一套很好的工控开发工具
💻 PAS
📖 第 1 页 / 共 5 页
字号:
{*******************************************************}
{                                                       }
{       Iocomp Editor Basic Components                  }
{                                                       }
{       Copyright (c) 1997,2003 Iocomp Software         }
{                                                       }
{*******************************************************}
{$I iInclude.inc}

{$ifdef iVCL}unit  iEditorBasicComponents;{$endif}
{$ifdef iCLX}unit QiEditorBasicComponents;{$endif}

interface

uses
  {$I iIncludeUses.inc}

  {$IFDEF iVCL}  iTypes,  iCheckBox,  iRadioGroup,  iGPFunctions,  iColorDialog,  iFontDialog,  iOpenDialog,  iSaveDialog;{$ENDIF}
  {$IFDEF iCLX} QiTypes, QiCheckBox, QiRadioGroup, QiGPFunctions;                                                         {$ENDIF}

type
  TiValueConverterPageType = (ivcptInterval, ivcptDateTime, ivcptPrice32nd);

  TFormTranslationMethod = procedure (AForm: TCustomForm) of object;

  TiListBoxGetDataEvent  = procedure(const Index: Integer; var DrawColorBox : Boolean; var AColor : TColor; var AText : String) of object;
  //****************************************************************************
  TiCustomEditorForm = class(TCustomForm)
  public
    procedure UserChange; virtual;
    property  FormStyle;
  published
    property Caption;
    property ClientHeight;
    property ClientWidth;
    property PixelsPerInch;
    property OnCreate;
    property OnDestroy;
    property OnClose;
    property AutoScroll;
  end;
  //****************************************************************************
  TiComponentEditorEdit = class(TCustomEdit)
  private
    FBlockingEvents : Boolean;
    FOriginalText   : String;
    FOnUpdate       : TNotifyEvent;

    function  GetAsInteger  : Integer;
    function  GetAsString   : String;
    function  GetAsFloat    : Double;
    function  GetAsDateTime : Double;

    procedure SetAsInteger (const Value: Integer);
    procedure SetAsString  (const Value: String);
    procedure SetAsFloat   (const Value: Double);
    procedure SetAsDateTime(const Value: Double);
  protected
    procedure KeyPress(var Key: Char); override;
    procedure KeyDown(var Key: Word; Shift: TShiftState); override;

    procedure DoUpdate;
    procedure DoEnter; override;
    procedure DoExit;  override;
    {$ifdef iVCL}procedure SetEnabled(      Value: Boolean); override;{$endif}
    {$ifdef iCLX}procedure SetEnabled(const Value: Boolean); override;{$endif}
    {$ifdef iVCL}procedure WMKillFocus     (var Message: TMessage         );message WM_KILLFOCUS;     {$endif}
    {$ifdef iVCL}procedure WMGetDLGCode    (var Message: TMessage         );message WM_GETDLGCODE;    {$endif}
    {$ifdef iVCL}procedure CMWantSpecialKey(var Message: TCMWantSpecialKey);message CM_WANTSPECIALKEY;{$endif}
    {$ifdef iVCL}procedure CreateParams(var Params: TCreateParams); override;{$endif}
  public
    constructor Create(AOwner: TComponent); override;
    procedure   Disable;
    procedure   DisableNoClear;
    procedure   Enable;

    procedure   SetStringWithEvent (Value : String);
    procedure   SetIntegerWithEvent(Value : Integer);
    procedure   SetDoubleWithEvent (Value : Double );

    property AsInteger  : Integer     read GetAsInteger  write SetAsInteger;
    property AsString   : String      read GetAsString   write SetAsString;
    property AsFloat    : Double      read GetAsFloat    write SetAsFloat;
    property AsDateTime : Double      read GetAsDateTime write SetAsDateTime;

    property Color;
  published
    property OnUpdate : TNotifyEvent read FOnUpdate    write FOnUpdate;

    property TabOrder;
    property ReadOnly;
    property Height default 21;
    property Visible;
  end;
  //****************************************************************************
  TiUpDown = class(TGraphicControl)
  private
    FTimer              : TTimer;
    FFirstTimerMessage  : Boolean;

    FAssociate          : TiComponentEditorEdit;
    FMin                : SmallInt;
    FMax                : SmallInt;
    FIncrement          : Integer;

    FMouseDown          : Boolean;
    FMouseDownX         : Integer;
    FMouseDownY         : Integer;

    FUpButtonPressed    : Boolean;
    FDownButtonPressed  : Boolean;
    FUpButtonRect       : TRect;
    FDownButtonRect     : TRect;
    FUserGenerated      : Boolean;

    function GetPosition: Integer;
    procedure SetPosition (const Value: Integer);
    procedure SetAssociate(const Value: TiComponentEditorEdit);
    procedure SetMax      (const Value: SmallInt);
    procedure SetMin      (const Value: SmallInt);
    procedure SetIncrement(const Value: Integer);
    function GetAsInteger: Integer;
    procedure SetAsInteger(const Value: Integer);
  protected
    procedure Notification(AComponent: TComponent; Operation: TOperation);        override;
    procedure DrawButton(DrawRect : TRect; ShowDown : Boolean);
    procedure CalcButtons;
    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 TimerEvent(Sender: TObject);
  public
    constructor Create(AOwner: TComponent);                                       override;
    destructor  Destroy;                                                          override;
    procedure   Paint;                                                            override;

    procedure   Disable;
    procedure   Enable;

    property    AsInteger : Integer read GetAsInteger write SetAsInteger;
  published
    property Associate : TiComponentEditorEdit  read FAssociate  write SetAssociate;
    property Min       : SmallInt               read FMin        write SetMin        default 0;
    property Max       : SmallInt               read FMax        write SetMax        default 100;
    property Increment : Integer                read FIncrement  write SetIncrement  default 1;
    property Width  default 15;
    property Height default 21;
  end;
  //****************************************************************************
  TiComponentEditorPageControl = class(TPageControl)
  private
    FTabIndex : Integer;
  protected
    {$IFDEF iVCL}procedure WMGetDLGCode(var Message: TMessage); message WM_GETDLGCODE;{$endif}
    {$IFDEF iVCL}procedure CreateParams(var Params: TCreateParams); override;{$endif}
    procedure KeyPress(var Key: Char); override;
  published
    property TabIndex : Integer read FTabIndex write FTabIndex;
  end;
  //****************************************************************************
  TiComponentEditorButton = class(TButton)
  protected
    procedure KeyPress(var Key: Char); override;
    {$ifdef iVCL} procedure WMGetDLGCode(var Message: TMessage); message WM_GETDLGCODE; {$endif}
    {$IFDEF iVCL}procedure CreateParams(var Params: TCreateParams); override;{$endif}
    procedure DoEnter; override;
  end;
  //****************************************************************************
  TiComponentEditorCheckBox = class(TiCheckBox)
  private
    FBlockingEvents : Boolean;
    function GetAsBoolean: Boolean;
    procedure SetAsBoolean(const Value: Boolean);
  protected
    procedure KeyPress(var Key: Char); override;
    {$IFDEF iVCL}procedure WMGetDLGCode(var Message: TMessage); message WM_GETDLGCODE;{$endif}
    procedure DoEnter; override;
    procedure DoChange; override;
  public
    constructor Create(AOwner: TComponent); override;
    procedure   Disable;
    procedure   Enable;

    property    AsBoolean : Boolean read GetAsBoolean  write SetAsBoolean;
  end;
  //****************************************************************************
  TiComponentEditorRadioGroup = class(TiRadioGroup)
  private
    FBlockingEvents : Boolean;
  protected
    function GetAsInteger: Integer;
    procedure SetAsInteger(const Value: Integer);
    procedure KeyPress(var Key: Char); override;
    {$IFDEF iVCL}procedure CreateParams(var Params: TCreateParams); override;{$endif}
    procedure DoEnter; override;
  public
    constructor Create(AOwner: TComponent); override;
    procedure   Click;                      override;
    procedure   Disable;
    procedure   Enable;
    property    AsInteger : Integer read GetAsInteger write SetAsInteger;
  end;
  //****************************************************************************
  TiComponentEditorMemo = class(TMemo)
  private
    FOriginalText   : String;
    FBlockingEvents : Boolean;
    FOnUpdate       : TNotifyEvent;
  protected
    function GetAsString: String;
    procedure SetAsString(const Value: String);
    procedure KeyPress(var Key: Char); override;
    procedure DoUpdate;

    {$ifdef iVCL}procedure WMGetDLGCode(var Message: TMessage); message WM_GETDLGCODE;{$endif}
    {$ifdef iVCL}procedure WMKillFocus (var Message: TMessage); message WM_KILLFOCUS; {$endif}
  public
    constructor Create(AOwner: TComponent); override;
    procedure   Disable;
    procedure   Enable;

    property AsString : String       read GetAsString  write SetAsString;
  published
    property OnUpdate : TNotifyEvent read FOnUpdate    write FOnUpdate;
  end;
  //****************************************************************************
  TiComponentEditorComboBox = class(TComboBox)
  private
    FBlockingEvents : Boolean;
  protected
    function GetAsInteger: Integer;
    function GetAsString : String;

    procedure SetAsInteger(const Value: Integer);
    procedure SetAsString (const Value: String);

    procedure KeyPress(var Key: Char); override;
    {$IFDEF iVCL}procedure WMGetDLGCode    (var Message: TMessage);         message WM_GETDLGCODE;   {$endif}
    {$ifdef iVCL}procedure CMWantSpecialKey(var Message: TCMWantSpecialKey);message CM_WANTSPECIALKEY;{$endif}
    {$IFDEF iVCL}procedure CreateParams(var Params: TCreateParams); override;           {$endif}
    procedure DoEnter; override;
  public
    constructor Create(AOwner: TComponent); override;
    procedure   Click;                      override;
    procedure   Disable;
    procedure   Enable;
    property    AsInteger : Integer read GetAsInteger write SetAsInteger;
    property    AsString  : String  read GetAsString  write SetAsString;
  published
    property Visible;
  end;
  //****************************************************************************
  TiComponentEditorListBox = class(TCustomListBox)
  private
    FOnGetData  : TiListBoxGetDataEvent;
    FOnItemMove : TNotifyEvent;
  protected
    {$ifdef iVCL}procedure DrawItem(Index: Integer; Rect: TRect; State: TOwnerDrawState);          override;{$endif}
    {$ifdef iCLX}function  DrawItem(Index: Integer; Rect: TRect; State: TOwnerDrawState): Boolean; override;{$endif}

    procedure DragOver(Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean); override;

    {$ifdef iVCL}procedure CNCommand   (var Message: TWMCommand); message CN_COMMAND;   {$endif}
    {$ifdef iVCL}procedure WMGetDLGCode(var Message: TMessage  ); message WM_GETDLGCODE;{$endif}
    {$IFDEF iVCL}procedure CreateParams(var Params: TCreateParams); override;           {$endif}

    {$IFDEF iVCL}procedure CreateWnd; override;                                         {$endif}

    procedure KeyPress(var Key: Char); override;
    procedure DoEnter; override;
  public
    constructor Create(AOwner: TComponent); override;
    procedure DragDrop(Source: TObject; X, Y: Integer); override;

    procedure SelectLast;
    procedure DeleteSelectedObject;
    procedure DeleteObjectIndex(AObject: TObject);

    property Items;
  published
    property Enabled;
    property Font;
    property TabOrder;
    property TabStop;
    property Visible;
    property OnClick;
    property OnDblClick;
    property Style    default lbOwnerDrawFixed;
    property Sorted   default False;
    property OnGetData  : TiListBoxGetDataEvent read FOnGetData  write FOnGetData;
    property OnItemMove : TNotifyEvent          read FOnItemMove write FOnItemMove;
    property OnDrawItem;

    property DragMode default dmAutomatic;
  end;
  //****************************************************************************
  TiComponentEditorColorPicker = class(TCustomControl)
  private
    FButton      : TButton;
    FColor       : TColor;
    FOnChange    : TNotifyEvent;
    procedure SetColor(const Value: TColor);
  protected
    {$IFDEF iVCL}procedure OpenVCL;{$endif}
    {$IFDEF iCLX}procedure OpenCLX;{$endif}

    procedure ButtonClick(Sender: TObject);
    procedure Paint;    override;
    procedure DblClick; override;
    procedure KeyPress(var Key: Char); override;
    {$IFDEF iVCL}procedure WMGetDLGCode(var Message: TMessage); message WM_GETDLGCODE;{$endif}
    {$IFDEF iVCL}procedure CreateParams(var Params: TCreateParams); override;         {$endif}
    procedure DoEnter; override;
  public
    constructor Create(AOwner: TComponent); override;
    procedure   SetBounds(ALeft, ATop, AWidth, AHeight: Integer); override;
    procedure   Disable;
    procedure   Enable;

    property Color    : TColor       read FColor    write SetColor;
  published
    property OnChange : TNotifyEvent read FOnChange write FOnChange;
    property TabOrder;
  end;
  //****************************************************************************
  TiComponentEditorComputerPicker = class(TiComponentEditorButton)
  private
    FComputerName : String;
    FOnChange     : TNotifyEvent;
  public
    constructor Create(AOwner: TComponent); override;
    procedure   Click;                      override;
  published
    property OnChange     : TNotifyEvent read FOnChange     write FOnChange;
    property ComputerName : String       read FComputerName write FComputerName;
  end;
  //****************************************************************************
  TiComponentEditorFontPicker = class(TiComponentEditorButton)
  private
    FFont     : TFont;
    FOnChange : TNotifyEvent;
  protected
    {$IFDEF iVCL}procedure OpenVCL;{$endif}
    {$IFDEF iCLX}procedure OpenCLX;{$endif}

    procedure SetFont(const Value: TFont);
    procedure KeyPress(var Key: Char); override;
    {$IFDEF iVCL}procedure WMGetDLGCode(var Message: TMessage); message WM_GETDLGCODE;{$endif}
    procedure DoEnter; override;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -