Советы по Delphi

         

Исправление 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 := 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]



Содержание раздела