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

Все приведенные выше примеры грешат несколькими проблемами: одни из них не учитывают ВСЕ способы которыми может вводится информация в TEdit - одни не учитывают clipboard, другие ввод из кода программы, и наконец все они не учитывают, что число может иметь например такую запись "2E4" или даже "2E-4".

 

Попытка разрешить ситуацию привела к следующему простому коду:

Code:

unit Unit1;

{©Drkb v.3: www.drkb.ru,

®Vit (Vitaly Nevzorov) - Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра.}

 

interface

 

uses

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

Dialogs, StdCtrls;

 

type

TForm1 = class(TForm)

   Edit1: TEdit;

   procedure Edit1Change(Sender: TObject);

   procedure FormCreate(Sender: TObject);

private

   EditValue:string;

public

   { Public declarations }

end;

 

var

Form1: TForm1;

 

 

implementation

 

{$R *.dfm}

 

procedure TForm1.Edit1Change(Sender: TObject);

var selstart, sellength:integer;

begin

if Edit1.Text='' then

   begin

     Edit1.Text:='0';

     Edit1.SelStart:=1;

     Edit1.SelLength:=0;

     Exit;

   end

try

   strtofloat(Edit1.Text);

   EditValue:=Edit1.Text;

except

   selstart:=Edit1.SelStart;

   sellength:=Edit1.SelLength;

   Edit1.Text:=EditValue;

   Edit1.SelStart:=selstart;

   Edit1.SelLength:=sellength;

end;

end;

 

procedure TForm1.FormCreate(Sender: TObject);

begin

EditValue:='0';

Edit1.Text:=EditValue;

end;

 

end.

 

В данном коде в TEdit не получится вставить не цифровые данные. Можно заменить строку

 

strtofloat(Edit1.Text);

 

на

 

strtoint(Edit1.Text);

 

для того чтобы ограничить возможность ввода только целыми числами.

 

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

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

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

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


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