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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.03.2010, 18:02   #1
kta87
Форумчанин
 
Аватар для kta87
 
Регистрация: 22.02.2010
Сообщений: 912
Восклицание Проблема с инструкцией

В Edit4 нужно запретить вводить все кроме цифр, но возможно дробные значения , а значит присутствуют символы ',' & '.' . При этом точку нужно заменять на запятую, а дальше с учетом различенных условий поместить курсор либо на Edit6 либо на Edit7. Пробую так:
Код:
procedure TForm1.Edit4KeyPress(Sender: TObject; var Key: Char);
begin
 case Key of
 '0'..'9':;
  #8:;
  #13:;
  #40:;
  else Key:= Chr(0);
  if ((key = #13) or (key = #40)) and (Form1.ComBoBox3.ItemIndex = 19) then
   Form1.Edit6.SetFocus else
    begin
     if ((key = #13) or (key = #40)) then Form1.Edit7.SetFocus;
    end;
 end;
end;
Код компилируется, но не выполняется часть :
Код:
 if ((key = #13) or (key = #40)) and (Form1.ComBoBox3.ItemIndex = 19) then
   Form1.Edit6.SetFocus else
    begin
     if ((key = #13) or (key = #40)) then Form1.Edit7.SetFocus;
    end;
 end;
end;
Подскажите как исправить ?!
kta87 вне форума Ответить с цитированием
Старый 23.03.2010, 18:08   #2
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
По умолчанию

Условия перехода курсора сам допиши. Этот код будет заменять все неподходящие символы на пустой и выходить из процедуры (не проверял, но должно работать).
Код:
if not (key in [0..9]) then 
  if key = '.' then key := ','
  else
    if key <> ',' then 
      if not (key in [#13, #40]) then key:='';
Эту часть логичнее сделать так:
Код:
if (key = #13) or (key = #40) then
  if ComBoBox3.ItemIndex = 19 then
    Edit6.SetFocus 
  else
    Edit7.SetFocus;
Соедини две эти части вместе и вот у тебя готовая процедура. Исправил верхнюю, так будет правильнее, опять таки не проверял.
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог

Последний раз редактировалось mutabor; 23.03.2010 в 18:25.
mutabor вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с рамами/Проблема с ЖД DRAGGER Компьютерное железо 6 04.01.2009 23:37