amaskpad.pas

来自「delphi编程控件」· PAS 代码 · 共 115 行

PAS
115
字号
unit amaskpad;
(*
 COPYRIGHT (c) RSD Software 1997 - 98
 All Rights Reserved.
*)

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, Mask;

type
  TFACLMaskEditEditor = class(TForm)
    Label1: TLabel;
    EMaskName: TEdit;
    LInputMask: TLabel;
    EInput: TEdit;
    LBlanks: TLabel;
    EBlanks: TEdit;
    CBLiteral: TCheckBox;
    GroupBox1: TGroupBox;
    LTextInput: TLabel;
    MaskEdit: TMaskEdit;
    BOk: TButton;
    BCancel: TButton;
    BHelp: TButton;
    procedure EMaskNameChange(Sender: TObject);
    procedure CBLiteralClick(Sender: TObject);
    procedure EBlanksChange(Sender: TObject);
    procedure EInputChange(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;


function EditACLMaskEditStringEdit(var AName, AValue, AMask : String) : Boolean;

implementation

{$R *.DFM}

function EditACLMaskEditStringEdit(var AName, AValue, AMask : String) : Boolean;
var
  AForm: TFACLMaskEditEditor;
begin
  AForm := TFACLMaskEditEditor.Create(Nil);
  with AForm do begin
    EMaskName.Text := AName;
    EInput.Text := AMask;
    MaskEdit.Text := AValue;
    EMaskNameChange(Nil);
    CBLiteral.Checked := MaskGetMaskSave(AMask);
    EBlanks.Text := MaskGetMaskBlank(AMask);
    ShowModal;
    if(ModalResult = mrOk) then begin
      AName := EMaskName.Text;
      AMask := EInput.Text;
      MaskEdit.EditMask := '';
      AValue := MaskEdit.Text;
      Result := True;

    end else Result := False;
  end;  
  AForm.Free;
end;

procedure TFACLMaskEditEditor.EMaskNameChange(Sender: TObject);
begin
  BOk.Enabled := EMaskName.Text <> '';
end;

procedure TFACLMaskEditEditor.CBLiteralClick(Sender: TObject);
Var
  St, St1 : String;
  i : Integer;
begin
  if(EInput.Text <> '') then begin
    if(EBlanks.Text = '') then
      EBlanks.Text := MaskGetMaskBlank(EInput.Text);
    if(CBLiteral.Checked) then
      St := MaskFieldSeparator + '1'
    else St := MaskFieldSeparator + '0';
    St := St + MaskFieldSeparator + EBlanks.Text;
    if MaskGetMaskSave(EInput.Text) then
      St1 := MaskFieldSeparator	+ '1'
    else St1 := MaskFieldSeparator + '0';
    St1 := St1 + MaskFieldSeparator + MaskGetMaskBlank(EInput.Text);
    i := Pos(St1, EInput.Text);
    if(i > 0) then
      EInput.Text := Copy(EInput.Text, 1, i - 1) + St
    else EInput.Text := EInput.Text + St;
  end;
end;

procedure TFACLMaskEditEditor.EBlanksChange(Sender: TObject);
begin
  if(EBlanks.Text = '') then exit;
  if(MaskGetMaskBlank(EInput.Text) = '')
  And (EInput.Text <> '') then begin
    if(EInput.Text[Length(EInput.Text)] = MaskFieldSeparator) then
      EInput.Text := EInput.Text + MaskFieldSeparator;
    EInput.Text := EInput.Text + EBlanks.Text;
  end else CBLiteralClick(Sender);
end;

procedure TFACLMaskEditEditor.EInputChange(Sender: TObject);
begin
  MaskEdit.EditMask := EInput.Text;
end;

end.

⌨️ 快捷键说明

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