📄 editorsmaskdemomain.pas
字号:
unit EditorsMaskDemoMain;
interface
uses
Windows, Messages, Classes, Graphics, Controls, Forms,
Dialogs, cxControls, cxLookupGrid, cxLookupDBGrid, cxGridCustomTableView,
cxGridTableView, cxGridDBTableView, cxGridLevel, cxGridCustomView, cxGrid,
cxGridCardView, cxGridDBCardView, cxMaskEdit, StdCtrls, ExtCtrls,
cxContainer, cxEdit, cxTextEdit, cxDropDownEdit, cxDBEdit, cxStyles,
Menus, ActnList, ImgList, ComCtrls, cxLookAndFeels,
cxButtonEdit, DBCtrls, EditorsMaskDemoData,
cxCustomData, cxGraphics, cxFilter, cxData, DB, cxDBData, cxClasses,
cxEditMaskEditor, cxNavigator, cxDBNavigator, cxDataStorage;
type
TEditorsMaskDemoMainForm = class(TForm)
mmMain: TMainMenu;
miAbout: TMenuItem;
miFile: TMenuItem;
miOptions: TMenuItem;
miExit: TMenuItem;
sbMain: TStatusBar;
lbDescrip: TLabel;
Panel1: TPanel;
Panel3: TPanel;
cxGrid: TcxGrid;
cxGridDBTableView: TcxGridDBTableView;
cxGridDBTableViewNAME: TcxGridDBColumn;
cxGridLevel: TcxGridLevel;
miShowMaskButtons: TMenuItem;
miDefaultMaskSettings: TMenuItem;
Panel2: TPanel;
lbFirstName: TLabel;
lbMiddleName: TLabel;
lbLastName: TLabel;
lbCountry: TLabel;
lbPostalCode: TLabel;
lbCity: TLabel;
lbAddress: TLabel;
lbPhone: TLabel;
lbFax: TLabel;
lbEmail: TLabel;
lbHomePage: TLabel;
lbInfoPhone: TLabel;
lbInfoFax: TLabel;
lbInfoHomePage: TLabel;
lbInfoEmail: TLabel;
lbInfoPostalCode: TLabel;
lbInfoFirstName: TLabel;
lbInfoMiddleName: TLabel;
lbInfoLastName: TLabel;
lbInfoCountry: TLabel;
lbInfoCity: TLabel;
lbInfoAddress: TLabel;
Panel5: TPanel;
edtFirstName: TcxDBTextEdit;
edtMiddleName: TcxDBTextEdit;
edtLastName: TcxDBTextEdit;
edtCountry: TcxDBTextEdit;
edtCity: TcxDBTextEdit;
edtAddress: TcxDBTextEdit;
DBNavigator1: TcxDBNavigator;
edtPostalCode: TcxDBButtonEdit;
edtPhone: TcxDBButtonEdit;
edtFax: TcxDBButtonEdit;
edtHomePage: TcxDBButtonEdit;
edtEmail: TcxDBButtonEdit;
LookAndFeelController: TcxLookAndFeelController;
procedure miAboutClick(Sender: TObject);
procedure miExitClick(Sender: TObject);
procedure edtPostalCodePropertiesButtonClick(Sender: TObject;
AButtonIndex: Integer);
procedure cxDBButtonEdit1PropertiesButtonClick(Sender: TObject;
AButtonIndex: Integer);
procedure cxDBButtonEdit2PropertiesButtonClick(Sender: TObject;
AButtonIndex: Integer);
procedure cxDBButtonEdit3PropertiesButtonClick(Sender: TObject;
AButtonIndex: Integer);
procedure cxDBButtonEdit4PropertiesButtonClick(Sender: TObject;
AButtonIndex: Integer);
procedure miShowMaskButtonsClick(Sender: TObject);
procedure miDefaultMaskSettingsClick(Sender: TObject);
private
procedure ChangeLabel(ALabel: TLabel; AProperties: TcxCustomMaskEditProperties);
function GetMaskKindLabel(AMaskKind: TcxEditMaskKind): string;
procedure ShowEditMaskDialog(AProperties: TcxCustomEditProperties);
end;
var
EditorsMaskDemoMainForm: TEditorsMaskDemoMainForm;
implementation
uses
AboutDemoForm;
{$R *.dfm}
const
cxDefaultPostalCodeMaskKind: TcxEditMaskKind = emkRegExprEx;
cxDefaultPhoneMaskKind: TcxEditMaskKind = emkStandard;
cxDefaultFaxMaskKind: TcxEditMaskKind = emkRegExprEx;
cxDefaultHomePageMaskKind: TcxEditMaskKind = emkRegExprEx;
cxDefaultEmailMaskKind: TcxEditMaskKind = emkRegExpr;
cxDefaultPostalCodeEditMask: string = '\d\d\d\d\d? | \w\w\w'' ''\w\w\w';
cxDefaultPhoneEditMask: string = '!\(999\) 000-0000;1;_';
cxDefaultFaxEditMask: string = '(\(\d\d\d\)'' '')?\d\d\d-\d\d\d\d';
cxDefaultHomePageEditMask: string = 'http\:\/\/(\w+(\.\w+)*@)?\w+\.\w+(\.\w+)*(/(\w+(/\w+)*/?)?)?';
cxDefaultEmailEditMask: string = '\w+@\w+\.\w+(\.\w+)*';
type
TcxCustomMaskEditPropertiesAccess = class(TcxCustomMaskEditProperties);
procedure TEditorsMaskDemoMainForm.miAboutClick(Sender: TObject);
begin
ShowAboutDemoForm;
end;
procedure TEditorsMaskDemoMainForm.miExitClick(Sender: TObject);
begin
Close;
end;
procedure TEditorsMaskDemoMainForm.ChangeLabel(ALabel: TLabel; AProperties: TcxCustomMaskEditProperties);
var
AText: string;
begin
if TcxCustomMaskEditPropertiesAccess(AProperties).EmptyMask(AProperties.EditMask) then
AText := 'No mask'
else
AText := GetMaskKindLabel(AProperties.MaskKind);
ALabel.Caption := AText;
end;
function TEditorsMaskDemoMainForm.GetMaskKindLabel(AMaskKind: TcxEditMaskKind): string;
begin
case AMaskKind of
emkStandard:
Result := 'Delphi Standard Mask';
emkRegExpr:
Result := 'Regular Expression';
emkRegExprEx:
Result := 'Regular Expression with Auto Complete Function';
else
Result := 'Unknown';
end;
end;
procedure TEditorsMaskDemoMainForm.ShowEditMaskDialog(AProperties: TcxCustomEditProperties);
var
ADialog: TcxEditMaskEditorDlg;
begin
if AProperties.InheritsFrom(TcxCustomMaskEditProperties) then
begin
ADialog := TcxEditMaskEditorDlg.Create(nil);
try
ADialog.MaskEditProperties := AProperties as TcxCustomMaskEditProperties;
ADialog.ShowModal;
finally
ADialog.Free;
end;
end;
end;
procedure TEditorsMaskDemoMainForm.edtPostalCodePropertiesButtonClick(
Sender: TObject; AButtonIndex: Integer);
begin
ShowEditMaskDialog((Sender as TcxDBButtonEdit).Properties);
ChangeLabel(lbInfoPostalCode, (Sender as TcxDBButtonEdit).Properties as TcxCustomMaskEditProperties);
end;
procedure TEditorsMaskDemoMainForm.cxDBButtonEdit1PropertiesButtonClick(
Sender: TObject; AButtonIndex: Integer);
begin
ShowEditMaskDialog((Sender as TcxDBButtonEdit).Properties);
ChangeLabel(lbInfoPhone, (Sender as TcxDBButtonEdit).Properties as TcxCustomMaskEditProperties);
end;
procedure TEditorsMaskDemoMainForm.cxDBButtonEdit2PropertiesButtonClick(
Sender: TObject; AButtonIndex: Integer);
begin
ShowEditMaskDialog((Sender as TcxDBButtonEdit).Properties);
ChangeLabel(lbInfoFax, (Sender as TcxDBButtonEdit).Properties as TcxCustomMaskEditProperties);
end;
procedure TEditorsMaskDemoMainForm.cxDBButtonEdit3PropertiesButtonClick(
Sender: TObject; AButtonIndex: Integer);
begin
ShowEditMaskDialog((Sender as TcxDBButtonEdit).Properties);
ChangeLabel(lbInfoHomePage, (Sender as TcxDBButtonEdit).Properties as TcxCustomMaskEditProperties);
end;
procedure TEditorsMaskDemoMainForm.cxDBButtonEdit4PropertiesButtonClick(
Sender: TObject; AButtonIndex: Integer);
begin
ShowEditMaskDialog((Sender as TcxDBButtonEdit).Properties);
ChangeLabel(lbInfoEmail, (Sender as TcxDBButtonEdit).Properties as TcxCustomMaskEditProperties);
end;
procedure TEditorsMaskDemoMainForm.miShowMaskButtonsClick(Sender: TObject);
var
AButtonVisible: Boolean;
begin
with Sender as TMenuItem do
begin
Checked := not Checked;
AButtonVisible := Checked;
end;
edtPostalCode.Properties.Buttons.Items[0].Visible := AButtonVisible;
edtPhone.Properties.Buttons.Items[0].Visible := AButtonVisible;
edtFax.Properties.Buttons.Items[0].Visible := AButtonVisible;
edtHomePage.Properties.Buttons.Items[0].Visible := AButtonVisible;
edtEmail.Properties.Buttons.Items[0].Visible := AButtonVisible;
end;
procedure TEditorsMaskDemoMainForm.miDefaultMaskSettingsClick(Sender: TObject);
begin
edtPostalCode.Properties.MaskKind := cxDefaultPostalCodeMaskKind;
edtPostalCode.Properties.EditMask := cxDefaultPostalCodeEditMask;
ChangeLabel(lbInfoPostalCode, edtPostalCode.Properties);
edtPhone.Properties.MaskKind := cxDefaultPhoneMaskKind;
edtPhone.Properties.EditMask := cxDefaultPhoneEditMask;
ChangeLabel(lbInfoPhone, edtPhone.Properties);
edtFax.Properties.MaskKind := cxDefaultFaxMaskKind;
edtFax.Properties.EditMask := cxDefaultFaxEditMask;
ChangeLabel(lbInfoFax, edtFax.Properties);
edtHomePage.Properties.MaskKind := cxDefaultHomePageMaskKind;
edtHomePage.Properties.EditMask := cxDefaultHomePageEditMask;
ChangeLabel(lbInfoHomePage, edtHomePage.Properties);
edtEmail.Properties.MaskKind := cxDefaultEmailMaskKind;
edtEmail.Properties.EditMask := cxDefaultEmailEditMask;
ChangeLabel(lbInfoEmail, edtEmail.Properties);
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -