Конференция "Основная" » DBGrid цифровая клавиарура ввод десят.запятой
 
  • MishaLukash (22.05.08 12:16) [0]
    как сделать чтобы DBGrid был нечувствителен к языку ввода
    (когда вводишь цифры с десятичной запятой с цифровой клавиатуры надо переключать язык чтобы там была точка )
    а вот DBNumberEditEh нечувствителен к раскладке
    в любом случае ставит точку

    спасибо
  • Reindeer Moss Eater © (22.05.08 12:23) [1]
    очень полезная для грида фича.
    особенно если вводят не числа, а слова и буквы разделенные запятыми.
  • MishaLuk (22.05.08 12:27) [2]
    те я понял что так задуманно
    а если юзеры плюются , что надо переключать все время язык
    и вводят только цифры в эту сетку
    что делать?
    переключать язык при загрузке программы? (из-за настроек винды на разных компах разные требования на одном надо англ на другом рус)
    спасибо
  • Vlad Oshin © (22.05.08 12:31) [3]
    procedure TForm1.StringGrid1KeyPress(Sender: TObject; var Key: Char);
    begin
     if Key=',' then Key='.';
    end;
  • Vlad Oshin © (22.05.08 12:31) [4]
    Удалено модератором
  • Vlad Oshin © (22.05.08 12:31) [5]
    Удалено модератором
  • Reindeer Moss Eater © (22.05.08 12:32) [6]
    хочешь счастья юзерам - вводи данные на формах через dbedit'ы
    в которых и обрабатывай точки с запятыми
  • Reindeer Moss Eater © (22.05.08 12:33) [7]
    procedure TForm1.StringGrid1KeyPress(Sender: TObject; var Key: Char);
    begin
    if Key=',' then Key='.';
    end;

    А если
    "Превед, медвед!"
  • Vlad Oshin © (22.05.08 12:35) [8]

    > вводят только цифры в эту сетку
  • Reindeer Moss Eater © (22.05.08 12:41) [9]
    А сработает ли кейпресс грида в этом случае?
    там же отдельный инплейс эдитор создается во время редактирования.
  • MishaLuk (22.05.08 12:57) [10]
    ну вы даете!
    неужели ни у кого не было такой проблемы?
    большая сетка - название и потом к нему много цифр
    и записей десятками (какой тут
    > хочешь счастья юзерам - вводи данные на формах через dbedit'ы
    > в которых и обрабатывай точки с запятыми

    )
    что
    таки нужно в ручную переключать клаву?
    спасибо
  • Reindeer Moss Eater © (22.05.08 13:08) [11]
    неужели ни у кого не было такой проблемы?
    такие проблемы посещают только одаренных, а их здесь мало.
  • Сергей М. © (22.05.08 13:15) [12]

    > MishaLuk   (22.05.08 12:57) [10]


    Поле дбгрида связано с объектом TField.
    У этого объекта есть событие OnSetText, в обработчике которого ты вправе заменить нежелательные введенные юзером символы на желательные.
  • MishaLukash (22.05.08 17:00) [13]

    > Сергей М. ©   (22.05.08 13:15) [12]

    спасибо!
  • MishaLukash (22.05.08 17:12) [14]
    просто сделал
    procedure TForm1.DBGridTPress(Sender: TObject; var Key: Char);
    begin
     if Key=',' then Key:='.';

    end;
  • Сергей М. © (22.05.08 19:17) [15]

    > MishaLukash   (22.05.08 17:12) [14]


    Тупо ты сделал. Тупо.

    Смотри [7]
  • MsGuns © (22.05.08 22:35) [16]
    Миша, для быстрого ввода чисел используется специальная примочка на клавиатуре, кейпад называется. Именно ею пользуются опытные операторы.

    А искусственно подменять одни символы другими, даже из лучших побуждений - это см [15]
  • MsGuns © (22.05.08 22:38) [17]
    Млин, речь только о дес.точке - пардон, не въехал. Тогда нужно в OnKeyPress проверять содержимое поля и, если там число, то тогда "," менять на "." Хотя тоже могут быть грабли ;)))
  • Сергей М. © (22.05.08 22:49) [18]

    > Хотя тоже могут быть грабли


    Антиграбельный комитет рекомендовал не заниматься дурью, редактируя прямо в гриде, а пользоваться специальнми антиграбельными инструментами типа TMaskEdit, TNumericEdit и иже с ними)
  • MsGuns © (22.05.08 23:29) [19]
    >TMaskEdit

    Ох, и гадость эта ваша заливная рыба ;)
  • Сергей М. © (23.05.08 12:22) [20]

    > MsGuns ©   (22.05.08 23:29) [19]


    Да, есть в этом блюде кой-какие невкусные ингредиенты)
    Но зато у него есть исходники, по которым можно приготовить собственное вкусное блюдо)
  • ab (01.06.08 19:19) [21]
    несколько лет назад здесь же на тот же вопрос мне подсказали:

    procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG;
     var Handled: Boolean);
    begin
     with Msg do
       case Message of
         WM_KEYDOWN:
           if wParam=VK_DECIMAL then begin
             Handled := True;
             PostMessage(HWND, WM_CHAR, Ord('.'), lParam);
           end;
         WM_KEYUP:
          if wParam=VK_DECIMAL then
            Handled := True;
       end;
    end;

 
Конференция "Основная" » DBGrid цифровая клавиарура ввод десят.запятой
Есть новые Нет новых   [134491   +8][b:0][p:0.001]