home *** CD-ROM | disk | FTP | other *** search
/ PC World Plus! (NZ) 2001 June / HDC50.iso / Runimage / Delphi50 / Doc / MASK.INT < prev    next >
Text File  |  1999-08-11  |  5KB  |  152 lines

  1.  
  2. {*******************************************************}
  3. {                                                       }
  4. {       Borland Delphi Visual Component Library         }
  5. {                                                       }
  6. {       Copyright (c) 1995,99 Inprise Corporation       }
  7. {                                                       }
  8. {*******************************************************}
  9.  
  10. unit Mask;
  11.  
  12. {$R-,T-,H+,X+}
  13.  
  14. interface
  15.  
  16. uses Windows, SysUtils, Classes, StdCtrls, Controls, Messages,
  17.   Forms, Graphics, Menus;
  18.  
  19. const
  20.   DefaultBlank: Char = '_';
  21.   MaskFieldSeparator: Char = ';';
  22.   MaskNoSave: Char = '0';
  23.  
  24.   mDirReverse = '!';         { removes leading blanks if true, else trailing blanks}
  25.   mDirUpperCase = '>';       { all chars that follow to upper case }
  26.   mDirLowerCase = '<';       { all chars that follow to lower case }
  27.                              { '<>' means remove casing directive }
  28.   mDirLiteral = '\';         { char that immediately follows is a literal }
  29.  
  30.   mMskAlpha = 'L';           { in US = A-Z,a-z }
  31.   mMskAlphaOpt = 'l';
  32.   mMskAlphaNum = 'A';        { in US = A-Z,a-z,0-9 }
  33.   mMskAlphaNumOpt  = 'a';
  34.   mMskAscii = 'C';           { any character}
  35.   mMskAsciiOpt = 'c';
  36.   mMskNumeric = '0';         { 0-9, no plus or minus }
  37.   mMskNumericOpt = '9';
  38.   mMskNumSymOpt = '#';       { 0-9, plus and minus }
  39.  
  40.    { intl literals }
  41.   mMskTimeSeparator = ':';
  42.   mMskDateSeparator = '/';
  43.  
  44. type
  45.  
  46.   TMaskCharType = (mcNone, mcLiteral, mcIntlLiteral, mcDirective, mcMask,
  47.     mcMaskOpt, mcFieldSeparator, mcField);
  48.   TMaskDirectives = set of (mdReverseDir, mdUpperCase, mdLowerCase,
  49.     mdLiteralChar);
  50.  
  51. type
  52. { Exception class }
  53.   EDBEditError = class(Exception);
  54.  
  55.   TMaskedState = set of (msMasked, msReEnter, msDBSetText);
  56.  
  57. { TCustomMaskEdit }
  58.  
  59.   TCustomMaskEdit = class(TCustomEdit)
  60.   protected
  61.     procedure ReformatText(const NewMask: string);
  62.     procedure GetSel(var SelStart: Integer; var SelStop: Integer);
  63.     procedure SetSel(SelStart: Integer; SelStop: Integer);
  64.     procedure SetCursor(Pos: Integer);
  65.     procedure KeyDown(var Key: Word; Shift: TShiftState); override;
  66.     procedure KeyUp(var Key: Word; Shift: TShiftState); override;
  67.     procedure KeyPress(var Key: Char); override;
  68.     function EditCanModify: Boolean; virtual;
  69.     procedure Reset; virtual;
  70.     function GetFirstEditChar: Integer;
  71.     function GetLastEditChar: Integer;
  72.     function GetNextEditChar(Offset: Integer): Integer;
  73.     function GetPriorEditChar(Offset: Integer): Integer;
  74.     function GetMaxChars: Integer;
  75.     function Validate(const Value: string; var Pos: Integer): Boolean; virtual;
  76.     procedure ValidateError; virtual;
  77.     procedure CheckCursor;
  78.     property EditMask: string;
  79.     property MaskState: TMaskedState;
  80.     property MaxLength: Integer default 0;
  81.   public
  82.     constructor Create(AOwner: TComponent); override;
  83.     procedure ValidateEdit; virtual;
  84.     procedure Clear; override;
  85.     function GetTextLen: Integer;
  86.     property IsMasked: Boolean;
  87.     property EditText: string;
  88.     property Text: string;
  89.   end;
  90.  
  91. { TMaskEdit }
  92.  
  93.   TMaskEdit = class(TCustomMaskEdit)
  94.   published
  95.     property Anchors;
  96.     property AutoSelect;
  97.     property AutoSize;
  98.     property BiDiMode;
  99.     property BorderStyle;
  100.     property CharCase;
  101.     property Color;
  102.     property Constraints;
  103.     property Ctl3D;
  104.     property DragCursor;
  105.     property DragKind;
  106.     property DragMode;
  107.     property Enabled;
  108.     property EditMask;
  109.     property Font;
  110.     property ImeMode;
  111.     property ImeName;
  112.     property MaxLength;
  113.     property ParentBiDiMode;
  114.     property ParentColor;
  115.     property ParentCtl3D;
  116.     property ParentFont;
  117.     property ParentShowHint;
  118.     property PasswordChar;
  119.     property PopupMenu;
  120.     property ReadOnly;
  121.     property ShowHint;
  122.     property TabOrder;
  123.     property TabStop;
  124.     property Text;
  125.     property Visible;
  126.     property OnChange;
  127.     property OnClick;
  128.     property OnDblClick;
  129.     property OnDragDrop;
  130.     property OnDragOver;
  131.     property OnEndDock;
  132.     property OnEndDrag;
  133.     property OnEnter;
  134.     property OnExit;
  135.     property OnKeyDown;
  136.     property OnKeyPress;
  137.     property OnKeyUp;
  138.     property OnMouseDown;
  139.     property OnMouseMove;
  140.     property OnMouseUp;
  141.     property OnStartDock;
  142.     property OnStartDrag;
  143.   end;
  144.  
  145. function FormatMaskText(const EditMask: string; const Value: string): string;
  146. function MaskGetMaskSave(const EditMask: string): Boolean;
  147. function MaskGetMaskBlank(const EditMask: string): Char;
  148. function MaskGetFldSeparator(const EditMask: string): Integer;
  149.  
  150.  
  151. implementation
  152.