Содержание материала

 

Блокировка вставки нецифровых данных через буфер обмена

Code:

uses Clipbrd;

 

function NewEditProc(wnd:HWND; uMsg:UINT; wParam:WPARAM; lParam:LPARAM):integer; stdcall;

var

s:string;

i:integer;

begin

if (uMsg=WM_PASTE) and Clipboard.HasFormat(CF_TEXT) then

begin

s := Clipboard.AsText;

for i:=1 to Length(s) do if (not (s[i] in ['0'..'9'])) then begin uMsg:=0; break end

end;

result:=CallWindowProc(Pointer(GetWindowLong(wnd,GWL_USERDATA)),wnd,uMsg,wParam,lParam)

end;

 

procedure TForm1.FormCreate(Sender: TObject);

begin

SetWindowLong(Edit1.Handle,GWL_STYLE,GetWindowLong(Edit1.Handle,GWL_STYLE) or ES_NUMBER);

SetWindowLong(Edit1.Handle,GWL_USERDATA,SetWindowLong(Edit1.Handle, GWL_WNDPROC, LPARAM(@NewEditProc)))

end;

 
Автор: Krid

Взято из https://forum.sources.ru

 

Следующий код создаёт TEdit который блокирует ввод любых нецифровых данных при вводе любым способом.

 

Code:

unit Unit1;

 

interface

 

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls;

 

{ Пример TEdit с выравниванием по центру © Song

в модификации Vit}

{©Drkb v.3(2007): www.drkb.ru}

 

type

TForm1 = class(TForm)

  procedure FormCreate(Sender: TObject);

private

  { Private declarations }

public

  { Public declarations }

end;

 

{ Обявляем класс нашего едита как потомок от стандартного}

type TMySuperEdit=class(TCustomEdit)

public

{ Внутри класса переопредялем процедуру CreateParams,

    т.к. нужный нам стиль можно изменить только на создании или пересоздании

    окна  }

Procedure CreateParams(Var Params: TCreateParams); override;

end;

 

var

Form1: TForm1;

 

implementation

 

{$R *.dfm}

 

Procedure TMySuperEdit.CreateParams(Var Params: TCreateParams);

Begin

{ Вызываем родительский обработчик, чтобы он сделал все процедуры по созданию объекта класса }

inherited CreateParams(Params);

{ Изменяем стиль }

With Params Do Style:=Style or ES_NUMBER;

End;

 

procedure TForm1.FormCreate(Sender: TObject);

begin

{ Создаём едит на основе нашего класса и кладём его на форму }

With TMySuperEdit.Create(Self) Do

Parent:=Self;

end;

End.

 

Добавить комментарий

Не использовать не нормативную лексику.

Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.

ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!


Защитный код
Обновить