Я, кажется, не могу получить свойство 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 := 0; |
на
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...
- Reinhard Kalinke [001021]