Components for Delphi and C++ Builder.

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

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




Начать новую тему Ответить на тему  [ Сообщений: 3 ] 
Автор Сообщение
 Заголовок сообщения: Позиционирование курсора в MaskEdit
СообщениеДобавлено: 23 ноя 2018, 13:31 
Не в сети

Зарегистрирован: 15 авг 2018, 07:39
Сообщений: 106
Добрый.
Build 9.3.010, в более ранних версиях тоже.
При первом входе в TDBEditEh с заданной маской (или, например, в TDBDateTimeEditEh, как частный случай), курсор смещается относительно позиции мыши. В обычном TMaskEdit такого не наблюдается. Именно, при первом входе в контрол, когда попадает фокус. У себя костылю в OnEnter вызовом такого метода:
Код:
procedure TCustomDBEditEhHelper.CorrectCursorPos(const AverageLetterWidth: Double{заранее вычисленная средняя ширина буквы});
var
  p: TPoint;
  curPos, prevPos, nextPos: Integer;
  width: Double;
begin
  GetCursorPos(p);
  p := Self.ScreenToClient(p);
  width := IfThen(AverageLetterWidth <= 0, Self.GetAverageLetterWidth(){это метод, вычисляющий среднюю ширину буквы по канве}, AverageLetterWidth);
  if (width = 0) then
    curPos := Length(Self.Text)
  else
    curPos := Floor(Abs(p.X) / width);
  nextPos := Self.GetNextEditChar(curPos);
  prevPos := Self.GetPriorEditChar(curPos);
  if (curPos < Length(Self.EditText)) then begin // при наличии маски Self.Text может быть пустым, Self.EditText нет
    if (prevPos = nextPos) then
      Self.SetSel(curPos, curPos + 1)
    else
      Self.SetSel(nextPos, nextPos + 1);
  end;
end;

В приложенном в скрине примере маска задана как '000000\-0000000;0;_'
Хотелось бы видеть исправление поведения в исходниках EhLib.


Вложения:
Комментарий к файлу: Скрин
_2018_11_23_14_59_45.gif
_2018_11_23_14_59_45.gif [ 201.89 KiB | Просмотров: 928 ]
Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 10 янв 2019, 13:52 
Не в сети

Зарегистрирован: 15 авг 2018, 07:39
Сообщений: 106
Up!


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

Зарегистрирован: 15 авг 2018, 07:39
Сообщений: 106
Up!
Есть какое-то решение по этому вопросу?


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

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


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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2


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

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