Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Tedit [D7, WinXP]


Страницы:   1 2

poroshm ©   (2007-08-05 16:36:00) 

Как надо настроить TEdit  чтобы вводились только цифры?


DVM   (2007-08-05 22:00:00) [21]

в OnKeyPress нужного Edit-а:

if not (key in [ #0..' ','0'..'9']) then key:=#0;


SergeIT   (2007-08-05 21:45:00) [22]

Что-нибудь вроде этого (использую больше 10 лет)

type
 TLetters = #32..#255;
 TLetSet = set of TLetters;
var
  _IntChars: TLetSet = ['0','1','2','3','4','5','6','7','8','9'];

function CheckString(var str: String; const let: TLetSet): Boolean;
var
  s: String;
  n, i: Integer;
begin
    Result := TRUE;
    s := '';
    n := Length(str);
    if n < 1 then exit;
    Result := FALSE;
    for i := 1 to n do
    begin
      if str[i] in let then s := s + str[i];
    end;
    if Length(s) = n then Result := TRUE else str := s;
end;

procedure EditCheckValue(Edit: TEdit; Let: TLetSet);
var
  i, n: Integer;
  s: String;
begin
 if NOT Edit.Focused then exit;
 i := Edit.SelStart;
 n := Length(Edit.Text);
 s := Edit.Text;
 if NOT CheckString(s, Let) then
 begin
   Edit.Text := s;
   i := i - (n - Length(s));
   if (i >= 0) AND (i <= Length(s)) then
        Edit.SelStart := i
   else Edit.SelStart := 0;
   if Edit.Focused then MessageBeep($FFFFFFFF);
 end;
end;


EditCheckValue вызывется в OnChange TEdit.


Инс   (2007-08-05 17:30:00) [23]


>  [2] {RASkov} ©   (05.08.07 17:27)

Да и ваш способ на 100% не решает проблемы. Следующий вопрос будет, а как мне сделать, чтобы туда нельзя было вставить не-цифры. Ответ - перекрывать обработку WM_PASTE. В общем, все сводится к написанию своего компонента:
http://www.delphikingdom.com/asp/viewitem.asp?catalogid=1140+ обсуждение


{RASkov}   (2007-08-05 17:27:00) [24]

[1] - но этот способ отвечат на 100% вопроса:

> чтобы вводились только цифры

Т.е. уже никакие другие символы, такие как -+., , вводиться уже не будут....
Если нужно более шире, то обработывать нужно OnKeyXxxx и контролировать параметр Key.... который var....


Инс   (2007-08-05 16:46:00) [25]

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


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо