Блокировка вставки нецифровых данных через буфер обмена
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. |
- Назад
- Вперёд >>
Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.
ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!