Componentes.Terceros.DevExp.../official/x.26/ExpressQuantumGrid 6/Demos/Delphi/EditorsMaskDemo/EditorsMaskDemoMain.pas
2007-09-09 11:27:27 +00:00

238 lines
8.2 KiB
ObjectPascal

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.