Исправление DBEdit MaxLength
|
Аксиомы:
1. Купи Pentium IV и увидишь, что REBOOT там намного быстрее.
2. У программ нет глюков. Они просто содержат неизвестные тебе функции.
3. Лучший метод сжатия файлов: DEL *.* - 100% сжатие.
4. Пентиум III - это такая новая модель процессоров, делающая ошибки в 10 раз быстрее.
5. Секрет Windows: Запусти на Пентиуме эмулятор PC XT.
6. Компьютер - это устройство, созданное для скоростного создания и автоматизации ошибок.
7. E-mail, возвращенный отправителю, означает несоответствие напряжений в Сети.
8. Компьютеры делают очень быстро и аккуратно стандартные ошибки.
|
Я, кажется, не могу получить свойство 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...
|