Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.05.2013, 21:47   #1
qpuTuJlb
Пользователь
 
Аватар для qpuTuJlb
 
Регистрация: 31.03.2012
Сообщений: 67
По умолчанию Запретить вводить вторую точку

Доброго времени суток,как в Edit запретить вводить более одной точки?
qpuTuJlb вне форума Ответить с цитированием
Старый 15.05.2013, 22:03   #2
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Писать свой Edit.
s-andriano вне форума Ответить с цитированием
Старый 15.05.2013, 22:17   #3
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

Цитата:
Сообщение от qpuTuJlb Посмотреть сообщение
Доброго времени суток,как в Edit запретить вводить более одной точки?

в обработчике событие onKeyPress
Код:
if ('.', Edit1.text) > 0 then key:=chr(0);
Вадим Мошев вне форума Ответить с цитированием
Старый 15.05.2013, 22:52   #4
qpuTuJlb
Пользователь
 
Аватар для qpuTuJlb
 
Регистрация: 31.03.2012
Сообщений: 67
По умолчанию

Цитата:
Сообщение от Вадим Мошев Посмотреть сообщение
в обработчике событие onKeyPress
Код:
if ('.', Edit1.text) > 0 then key:=chr(0);
ошибка: ')' expected but ',' found
qpuTuJlb вне форума Ответить с цитированием
Старый 15.05.2013, 23:38   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

пропущено указание функции Pos:
Код:
if Pos('.', Edit1.text) > 0 then key:=#0;
Serge_Bliznykov вне форума Ответить с цитированием
Старый 16.05.2013, 00:12   #6
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,434
По умолчанию

А я бы просто в OnKeyPress ставил некий bDotExists в True. Проверка условия занимает меньше тактов чем вызов толпы функций...
Человек_Борща вне форума Ответить с цитированием
Старый 16.05.2013, 00:30   #7
Алексей_2012
t45t
Участник клуба
 
Аватар для Алексей_2012
 
Регистрация: 20.03.2012
Сообщений: 1,849
По умолчанию

Цитата:
А я бы просто в OnKeyPress ставил некий bDotExists в True. Проверка условия занимает меньше тактов чем вызов толпы функций...
А что это делает?
from dark to light)
Алексей_2012 вне форума Ответить с цитированием
Старый 16.05.2013, 08:48   #8
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от Человек_Борща Посмотреть сообщение
А я бы просто в OnKeyPress ставил некий bDotExists в True. Проверка условия занимает меньше тактов чем вызов толпы функций...
не, это ещё хуже. Ведь содержимое Edit'а редактируется, поэтому точку вполне могут УДАЛИТЬ. Тогда Вам придётся анализировать содержимое и выставлять/убирать флаг bDotExists - т.е. помимо вышеуказанных действий Вам придётся ещё и признаком заниматься..
будет в OnKeyPress что-то вроде:
Код:
 bDotExists  := Pos('.', Edit1.Text)>0;
 if (key='.') and  bDotExists  then key = #0;
На мой взгляд, это ничем не лучше предложенного выше варианта:
Код:
 if (key='.') and (Pos('.', Edit1.Text)>0)  then key = #0;
Serge_Bliznykov вне форума Ответить с цитированием
Старый 16.05.2013, 19:19   #9
qpuTuJlb
Пользователь
 
Аватар для qpuTuJlb
 
Регистрация: 31.03.2012
Сообщений: 67
По умолчанию

спасибо всем
qpuTuJlb вне форума Ответить с цитированием
Старый 16.05.2013, 19:49   #10
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,434
По умолчанию

Цитата:
не, это ещё хуже.
Не совсем так. Признак регулирует Backspace
Код:
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: char);
begin
  //Не даем вводить ещё 1 точку
  if (Key = '.') and bDotExists then
    Key := #0;

  //Разрешаем ввести точку если её ещё не было
  if (Key = '.') and not bDotExists then
    bDotExists := True;

  //Если жмякаем Backspace и последний символ это точка, то она будет удалена
  if (Key = #8) and bDotExists and (Edit1.Text[Length(Edit1.Text)] = '.') then
    bDotExists := False;
end;
Человек_Борща вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как вводить дату? zoner Microsoft Office Excel 1 06.05.2013 09:34
Как вводить текст в DBEdit? Nazario Общие вопросы Delphi 3 05.05.2012 22:11
вводить только число kursant95 Microsoft Office Excel 8 16.02.2011 13:01
Вводить только кратные 2 значения DIgorevich Microsoft Office Excel 1 26.01.2011 18:34
tchart - Как при наведении курсора на определенную точку сериэса узнать точку наведения и отобразить её xaero93 Помощь студентам 0 22.04.2009 19:28