Добрый.
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.