TORSER7 Цитата: требуется ввести целое (именно целое) число с ограничением
разрядности MaxLength. И чтобы вставку из буфера обмена запретить.
Примеры для TcxTextEdit и TcxMaskEdit.
[more=далее]
Код: unit Unit76;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, dxSkinsCore, dxSkinMcSkin, dxSkinsDefaultPainters, cxControls, cxContainer, cxEdit, cxTextEdit,
cxMaskEdit;
type
TcxMaskEdit = class(cxMaskEdit.TcxMaskEdit)
public
procedure PasteFromClipboard; override;
end;
type
TForm76 = class(TForm)
cxTextEdit1: TcxTextEdit;
cxMaskEdit1: TcxMaskEdit;
procedure cxMaskEdit1ContextPopup(Sender: TObject; MousePos: TPoint; var Handled: Boolean);
procedure cxTextEdit1ContextPopup(Sender: TObject; MousePos: TPoint; var Handled: Boolean);
procedure cxTextEdit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
procedure FormCreate(Sender: TObject);
procedure cxTextEdit1KeyPress(Sender: TObject; var Key: Char);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form76: TForm76;
vMaxTextLength: Integer;
implementation
{$R *.dfm}
// В cxMaskEdit1 можно и не переопределять это событие, чтобы дать возможность
// пользователю использовать контекстное меню для копирования и вырезания содержимого этого контола
// команда *Paste* из этого меню все равно не выполнится
procedure TForm76.cxMaskEdit1ContextPopup(Sender: TObject; MousePos: TPoint; var Handled: Boolean);
begin
Handled := True;
end;
procedure TForm76.cxTextEdit1ContextPopup(Sender: TObject; MousePos: TPoint; var Handled: Boolean);
begin
Handled := True;
end;
procedure TForm76.cxTextEdit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
if Length(TcxTextEdit(Sender).EditingText) >= vMaxTextLength then
TcxTextEdit(Sender).ActiveProperties.ValidChars := [#8]
else TcxTextEdit(Sender).ActiveProperties.ValidChars := ['0'..'9'] + [#8];
end;
procedure TForm76.cxTextEdit1KeyPress(Sender: TObject; var Key: Char);
begin
if not (Key in TcxTextEdit(Sender).ActiveProperties.ValidChars) then
Key := #0;
end;
procedure TForm76.FormCreate(Sender: TObject);
begin
vMaxTextLength := 5;
cxMaskEdit1.Properties.MaskKind := emkRegExprEx;
cxMaskEdit1.Properties.EditMask := Format('\d{0,%d}', [vMaxTextLength]);
end;
{ TcxMaskEdit }
procedure TcxMaskEdit.PasteFromClipboard;
begin
//
end;
end.