Components for Delphi and C++ Builder.

Перейти в английский форум
Перейти на EhLib.com
Текущее время: 28 мар 2024, 12:55

Часовой пояс: UTC




Начать новую тему Ответить на тему  [ Сообщений: 6 ] 
Автор Сообщение
СообщениеДобавлено: 28 мар 2021, 07:59 
Не в сети

Зарегистрирован: 02 фев 2021, 14:35
Сообщений: 7
Поиск по Lookup в DBGridEh принудительно подменяет любой символ ".", набранный любым способом при любой раскладке клавиатуры на ","
В итоге, набрать "." получилось только вставкой из буффера обмена. Hint: в поиске "." - не всегда децимальный разделитель в соответствии с локалью. Это может быть, например, частью текстового кода.
Среда: CBuilder 10 (Seattle)
Версия EhLib: 10.0.031
Локаль: русский
ОС: Win10


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 31 мар 2021, 16:58 
Не в сети

Зарегистрирован: 21 дек 2011, 18:48
Сообщений: 1546
Добрый день.

Замена точки или запятой на DecimalSeparator выполняется только для числовых полей.

Если у вас создано Lookup поле числового типа, то можете написать причину такого выбора.
Ведь обычно, лукап поле используется для отображения справочного значения по его коду.
У вас справочное значение, судя по всему, имеет цифровой тип, при этом с десятичным остатком?

_________________
Best regards
EhLib support Team


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 31 мар 2021, 18:38 
Не в сети

Зарегистрирован: 23 май 2013, 11:39
Сообщений: 52
EhLibSupport писал(а):
Если у вас создано Lookup поле числового типа, то можете написать причину такого выбора.


Это может быть сделано для ограничения выбора числовых значений по справочнику, в котором находятся все допустимые числовые значения.
Например, поле "Проба золота" (ювелирное дело) с lookup на справочник с фиксированными значениями: 585, 750, 999.9 (проба "чистоты" имеет десятичный знак), и т.п. Использовать текст вместо чисел не очень удобно, т.к. эти значения потом участвуют в формулах.


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 02 апр 2021, 07:55 
Не в сети

Зарегистрирован: 02 фев 2021, 14:35
Сообщений: 7
EhLibSupport писал(а):
Добрый день.

Замена точки или запятой на DecimalSeparator выполняется только для числовых полей.

Если у вас создано Lookup поле числового типа, то можете написать причину такого выбора.
Ведь обычно, лукап поле используется для отображения справочного значения по его коду.
У вас справочное значение, судя по всему, имеет цифровой тип, при этом с десятичным остатком?

Нет. Цифровой тип имеет поле результата. LookupDisplayField - текстовое поле, содержащее код МКБ-10(буквенно-цифровой, содержащий в теле "."), в БД хранится, ессно, идентификатор. Лукап делался прямо в колонке грида. Похоже, автозамена смотрит на тип поля, а не на тип LookupDisplayField, по которому осуществляется поиск/фильтрация.


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 06 апр 2021, 14:27 
Не в сети

Зарегистрирован: 21 дек 2011, 18:48
Сообщений: 1546
Добрый день.

Если Lookup настроен прямо в колонке грида через LookupParams, то поле Column.FieldName должно быть пусто,
и соответственно Column.Field должно быть пусто
и соответственно код

Код:
procedure TDBAxisGridInplaceEdit.KeyPress(var Key: Char);
begin
  if Assigned(AxisBar) and Assigned(AxisBar.Field) and (AxisBar.Field is TNumericField) then
    if CharInSetEh(Key, ['.', ',']) then
      Key := Copy(FormatSettings.DecimalSeparator, 1, 1)[1];
...

не должен срабатывать.

_________________
Best regards
EhLib support Team


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 09 апр 2021, 14:03 
Не в сети

Зарегистрирован: 02 фев 2021, 14:35
Сообщений: 7
EhLibSupport писал(а):
Добрый день.

Если Lookup настроен прямо в колонке грида через LookupParams, то поле Column.FieldName должно быть пусто,
и соответственно Column.Field должно быть пусто
и соответственно код

Код:
procedure TDBAxisGridInplaceEdit.KeyPress(var Key: Char);
begin
  if Assigned(AxisBar) and Assigned(AxisBar.Field) and (AxisBar.Field is TNumericField) then
    if CharInSetEh(Key, ['.', ',']) then
      Key := Copy(FormatSettings.DecimalSeparator, 1, 1)[1];
...

не должен срабатывать.

Принято, спасибо!


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 6 ] 

Часовой пояс: UTC


Кто сейчас на форуме

Сейчас этот форум просматривают: Google [Bot] и гости: 4


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB