Исправление DBEdit MaxLength
Я, кажется, не могу получить свойство MaxLength, чтобы работать
с компонентами TDBEdit. В TEdit это работает как положено, но при попытке задать
максимальную длину текста в TDBEdit это не срабатывает, и я все еще могу набрать
текст сверх установленного ограничения.
По-моему, это является следствием этого кода в TDBEdit.DataChange
(DBCTRLS.PAS):
if FDataLink.Field <> nil then
begin
...
if FDataLink.Field.DataType = ftString then
MaxLength := FDataLink.Field.Size
else
MaxLength := 0;
...
end else
begin
...
MaxLength := 0;
...
end;
|
т.к. иногда значение устанавливается на ноль...
Похоже все будет работать, если вы измените строку
на
MaxLength := inherited MaxLength;
|
Для того, чтобы изменения вступили в силу, вам необходимо перекомпилировать
ваш complib с измененным DBCTRLS.PAS, находящимся в пути lib.
Если вы хотите использовать MaxLength с StringField, изменений необходимо
сделать немного больше:
...
if (FDataLink.Field.DataType = ftString)
and (inherited MaxLength = 0) then
MaxLength := FDataLink.Field.Size
else
MaxLength := inherited MaxLength;
...
|
Или использовать что-то типа EditMask...
|