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