Delphi-Help

Главная Статьи TDBEdit Исправление DBEdit MaxLength

Исправление DBEdit MaxLength

Оцените материал
(0 голосов)


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

Другие материалы в этой категории: « Компонент TDBEdit

Авторизация



Счетчики