Componentes.Terceros.DevExp.../official/x.36/ExpressVerticalGrid/Demos/Delphi/EditorsMaskDemo/EditorsMaskDemoMain.pas
2008-06-02 17:37:37 +00:00

220 lines
7.8 KiB
ObjectPascal

unit EditorsMaskDemoMain;
interface
uses
Windows, Messages, Classes, Graphics, Controls, Forms,
Dialogs, cxGraphics, cxCustomData, cxStyles, cxMaskEdit,
cxLookAndFeels, ActnList, ImgList, Menus, cxButtonEdit, cxDBEdit,
cxNavigator, cxDBNavigator, cxContainer, cxEdit, cxTextEdit,
cxInplaceContainer, cxControls, ExtCtrls, ComCtrls,
StdCtrls, DemoBasicMain, cxVGrid, cxDBVGrid;
type
TEditorsMaskDemoMainForm = class(TDemoBasicMainForm)
Panel1: TPanel;
Panel3: TPanel;
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;
vgDepartments: TcxDBVerticalGrid;
cxDBVerticalGrid1NAME: TcxDBEditorRow;
cxDBVerticalGrid1CategoryRow1: TcxCategoryRow;
miDefaultMaskSettings: TMenuItem;
N1: TMenuItem;
miShowMaskButtons: TMenuItem;
procedure edtEmailPropertiesButtonClick(Sender: TObject;
AButtonIndex: Integer);
procedure edtFaxPropertiesButtonClick(Sender: TObject;
AButtonIndex: Integer);
procedure edtHomePagePropertiesButtonClick(Sender: TObject;
AButtonIndex: Integer);
procedure edtPhonePropertiesButtonClick(Sender: TObject;
AButtonIndex: Integer);
procedure edtPostalCodePropertiesButtonClick(Sender: TObject;
AButtonIndex: Integer);
procedure miDefaultMaskExecute(Sender: TObject);
procedure miShowEditMaskButtonsExecute(Sender: TObject);
procedure vgDepartmentsLeftVisibleRecordIndexChanged(
Sender: TObject);
private
procedure ChangeLabel(ALabel: TLabel; AProperties: TcxCustomMaskEditProperties);
function GetMaskKindLabel(AMaskKind: TcxEditMaskKind): string;
procedure ShowEditMaskDialog(AProperties: TcxCustomEditProperties);
end;
var
EditorsMaskDemoMainForm: TEditorsMaskDemoMainForm;
implementation
uses
cxEditMaskEditor, EditorsMaskDemoData;
{$R *.dfm}
type
TcxCustomMaskEditPropertiesAccessor = class(TcxCustomMaskEditProperties);
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+)*';
procedure TEditorsMaskDemoMainForm.edtEmailPropertiesButtonClick(
Sender: TObject; AButtonIndex: Integer);
begin
ShowEditMaskDialog((Sender as TcxDBButtonEdit).Properties);
ChangeLabel(lbInfoEmail, (Sender as TcxDBButtonEdit).Properties as TcxCustomMaskEditProperties);
end;
procedure TEditorsMaskDemoMainForm.edtFaxPropertiesButtonClick(
Sender: TObject; AButtonIndex: Integer);
begin
ShowEditMaskDialog((Sender as TcxDBButtonEdit).Properties);
ChangeLabel(lbInfoFax, (Sender as TcxDBButtonEdit).Properties as TcxCustomMaskEditProperties);
end;
procedure TEditorsMaskDemoMainForm.edtHomePagePropertiesButtonClick(
Sender: TObject; AButtonIndex: Integer);
begin
ShowEditMaskDialog((Sender as TcxDBButtonEdit).Properties);
ChangeLabel(lbInfoHomePage, (Sender as TcxDBButtonEdit).Properties as TcxCustomMaskEditProperties);
end;
procedure TEditorsMaskDemoMainForm.edtPhonePropertiesButtonClick(
Sender: TObject; AButtonIndex: Integer);
begin
ShowEditMaskDialog((Sender as TcxDBButtonEdit).Properties);
ChangeLabel(lbInfoPhone, (Sender as TcxDBButtonEdit).Properties as TcxCustomMaskEditProperties);
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.miDefaultMaskExecute(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;
procedure TEditorsMaskDemoMainForm.miShowEditMaskButtonsExecute(
Sender: TObject);
begin
TMenuItem(Sender).Checked := not TMenuItem(Sender).Checked;
edtPostalCode.Properties.Buttons.Items[0].Visible := TMenuItem(Sender).Checked;
edtPhone.Properties.Buttons.Items[0].Visible := TMenuItem(Sender).Checked;
edtFax.Properties.Buttons.Items[0].Visible := TMenuItem(Sender).Checked;
edtHomePage.Properties.Buttons.Items[0].Visible := TMenuItem(Sender).Checked;
edtEmail.Properties.Buttons.Items[0].Visible := TMenuItem(Sender).Checked;
end;
procedure TEditorsMaskDemoMainForm.ChangeLabel(ALabel: TLabel; AProperties: TcxCustomMaskEditProperties);
var
AText: string;
begin
with TcxCustomMaskEditPropertiesAccessor(AProperties) do
begin
if EmptyMask(EditMask) then
AText := 'No mask'
else
AText := GetMaskKindLabel(MaskKind);
end;
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.vgDepartmentsLeftVisibleRecordIndexChanged(
Sender: TObject);
begin
vgDepartments.DataController.FocusedRecordIndex := vgDepartments.LeftVisibleRecord;
end;
end.