Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 27.03.2009, 07:06
Darken Darken вне форума
Прохожий
 
Регистрация: 24.02.2009
Сообщения: 48
Репутация: 10
По умолчанию Конторль вводимых значений для множества полей Edit

Надо, чтобы в поле можно было ввести только цифры, разделитель десятичных дробей и удаление, я реализовал это так:

PHP код:
procedure TForm3.sEdit2KeyPress(SenderTObject; var KeyChar);  //EDIT2
begin
  
case Key of
  
'0'..'9'#8:;
  
'.',',':  begin
            Key 
:= DecimalSeparator;
            if 
Pos(DecimalSeparator,sEdit2.Text)<>0 then Key := #0;
            
end;
  else 
Key:= #0;
  
end;
end

Вся проблема в том, что я не пойму как прикрутить это дело для множества определенных полей Edit, т.к. писать вышеизложенное для каждого поля муторно.

И еще может кто подскажет как модернизировать код для того, чтобы если пользователь ввел первой цифрой 0 - автоматически менялось на 0 c разделителем десятичных знаков принятых в системе, т.е. с использованием DecimalSeparator.

Заранее благодарен
Ответить с цитированием
  #2  
Старый 27.03.2009, 07:17
BloodFooria BloodFooria вне форума
Новичок
 
Регистрация: 30.10.2008
Адрес: Улан-Удэ
Сообщения: 81
Репутация: 10
По умолчанию

Самый простой способ, напишите процедуру.

Код:
procedure TForm3.EditText(CurEdit : TEdit; var Key : Char);
begin 
  case Key of 
  '0'..'9', #8:; 
  '.',',':  begin 
            Key := DecimalSeparator; 
            if Pos(DecimalSeparator,CurEdit.Text)<>0 then Key := #0; 
            end; 
  else Key:= #0; 
  end; 
end;

А после вызывать:

Код:
procedure TForm3.sEdit2KeyPress(Sender: TObject; var Key: Char);
begin
  EditText(sEdit2, Key);
end;

Сам попробовал, все работает
Ответить с цитированием
  #3  
Старый 27.03.2009, 08:44
Darken Darken вне форума
Прохожий
 
Регистрация: 24.02.2009
Сообщения: 48
Репутация: 10
По умолчанию

спасибо, как вариант учту, может у кого будут еще более изящные решения?

по поводу ведущего нуля есть решения?
Ответить с цитированием
  #4  
Старый 27.03.2009, 09:03
Аватар для Karsh
Karsh Karsh вне форума
Активный
 
Регистрация: 22.09.2007
Адрес: SPb
Сообщения: 228
Версия Delphi: 7, 2009, XE2
Репутация: 70
По умолчанию

Есть решение попроще. На первом edit пишешь:
Код:
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
  case Key of
  '0'..'9', #8:;
  '.',',':  begin
            Key := DecimalSeparator;
            if Pos(DecimalSeparator, TEdit(Sender).Text)<>0 then Key := #0;
            end;
  else Key:= #0;
  end;
end;
А у остальных в событиях OnKeyPress кидаешь ссылку на эту процедуру.
__________________
Начинающий программист уверен, что в 1 килобайте 1000 байт.
Законченный программист уверен, что в 1 километре 1024 метра.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 15:26.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025