Перейти к содержанию
Fire Monkey от А до Я

Draggo

Пользователи
  • Постов

    4
  • Зарегистрирован

  • Посещение

Сообщения, опубликованные Draggo

  1. Может мое решение и не лучшее или даже плохое

     

    Странно, у меня этот код работает криво (XE6 Upd1)

     

    Ввожу в Edit любую цифру, но попадаю в условие

    if not(CharInSet(Edit1.Text[lc1], ['0'..'9', ',', '-'])) then begin
    delete(c1, lc11, 1);
    Edit1.Text:=c1;
    end;

    в итоге Edit остается пустой... что за бред?

     

    У меня все нормально работает. Точку заменяет запятой, а при блокировке оставляет только цифры, запятую и минус.

  2. А что именно не понятно?

    Событие срабатывает каждый раз, когда вы вводите новый символ в поле Edit1 (Edit1.Text).

    Пишем цикл, в котором пробегаем по всем введённым символам и проверяем их на соответствие списку запрещённых символов. Если находим запрещённый символ, то сразу удаляем его из строки или можно ещё предупреждение Спасибо уже разобрался.

    Спасибо, уже разобрался. Может мое решение и не лучшее или даже плохое, но может кому-то (с такой же проблемой) поможет:

    procedure TForm1.Edit1ChangeTracking(Sender: TObject);
    var c1:string; lc1,lc11:integer;
    begin
    c1:=Edit1.Text;
    lc1:=length(c1)-1;
    lc11:=length(c1);
      if c1<>'' then begin
      if Edit1.Text[lc1]='.' then begin delete(c1, lc11, 1);
                                        c1:=c1+',';
                                        Edit1.Text:=c1;
                                  end;
    
      if not(CharInSet(Edit1.Text[lc1], ['0'..'9', ',', '-'])) then begin
                                        delete(c1, lc11, 1);
                                        Edit1.Text:=c1;
                                                                    end;
                     end;
    end;
    
  3. Честно говоря, я тоже не знаю, почему так происходит…

    Но могу подсказать временное решение: используем событие OnChangeTracking, проверяем последний введённый символ (или даже лучше сразу все символы проверять) и решаем, что с ним делать.

    Не могли бы вы поподробней рассказать про OnChangeTracking. Никогда с этим не сталкивался.

  4. Проблема заключается в следующем: мне нужно запретить ввод в TEdit всех символов, кроме цифр и запятой, а если вводится точка, то подменить ее на запятую.

    Запретить пробовал так:

    procedure TForm.EditKeyDown(Sender: TObject; var Key: Char);
    begin
    if not (Key in ['0'..'9', 'А'..'Я', 'а'..'я', 'A'..'Z', 'a'..'z', #8 ]) then Key:=#0;
    end;
    

    Символы продолжают вводиться. Запрет должен происходить при нажатиях на экранную клавиатуру Android'а.

    События KeyPressed я в XE6 не нашел.

×
×
  • Создать...