Delphi World - это проект, являющийся сборником статей и малодокументированных возможностей  по программированию в среде Delphi. Здесь вы найдёте работы по следующим категориям: delphi, delfi, borland, bds, дельфи, делфи, дэльфи, дэлфи, programming, example, программирование, исходные коды, code, исходники, source, sources, сорцы, сорсы, soft, programs, программы, and, how, delphiworld, базы данных, графика, игры, интернет, сети, компоненты, классы, мультимедиа, ос, железо, программа, интерфейс, рабочий стол, синтаксис, технологии, файловая система...
Производная TIntegerField

Автор: Mark Edington

Я думал о производной, новом варианте компонента TIntegerfield, но я не могу понять как мне его получить во время разработки, ведь он не устанавливается в палитру компонентов.

Это то, что вы хотите. Создайте следующий молуль:

MICRON.PAS:


unit micron;

interface

uses DB, DBTables, Classes;

type
  TMicronField = class(TIntegerField)
  public
    function IsValidChar(Ch: Char): Boolean; override;
  end;

procedure Register;

implementation

function TMicronField.IsValidChar(Ch: Char): Boolean;
begin
  Result := Ch in ['+', '-', '0'..'9', '.'];
end;

procedure Register;
begin
  RegisterFields([TMicronField]);
end;

end.

Поместите данный модуль в ваш каталог lib и добавьте это поле, используя диалог установки компонент. Затем, используя "DataSet designer", свяжите TMicronField с нужными вам полями, после чего вы увидите, что список типов полей включает теперь "Micron". (для отображения полей на новый тип поля, сначала вам необходимо удалить все TIntegerFields).

Другое решение, более простое (но так-же работающее), заключается в изменении исходного кода DBTables и простой замене существующей функции IsValidChar на TIntegerField.

Проект Delphi World © Выпуск 2002 - 2024
Автор проекта: USU Software
Вы можете выкупить этот проект.