Программирование - это просто
Advertisement
Главная arrow Уроки Delphi arrow Утилита управления метаданными (платный раздел) arrow Пишем утилиту управления метаданными. Урок 4. Создание класса метаданных типа.
30.11.2021 г.
Главное меню
Главная
Интернет магазин
Программные продукты
Биржевые роботы
Искусственный интеллект
Математика и информатика
1С:Предприятие
Уроки C#
Уроки Delphi
Уроки программирования
Web-программирование
Дизайн и графика
Компьютер для блондинок
Исходники
Статьи
Платный раздел
Рассказы про компьютеры
Хитрости и секреты
Системный подход
Размышления
Наука для чайников
Друзья сайта
Excel-это не сложно
Все о финансах
.
Пишем утилиту управления метаданными. Урок 4. Создание класса метаданных типа. Печать E-mail
Автор megabax   
28.12.2010 г.
New Page 1

Пишем утилиту управления метаданными. Урок 4. Создание класса метаданных типа.

Что бы смотреть урок полностью, подпишитесь на платный раздел.

В платном разделе статья находиться здесь.


Исходники к уроку можно скачать в платном разделе.

На прошлом уроке мы создали класс описания типа. Сегодня создадим класс описания метаданных типа. Для чего он нужен? Что бы пользователь системы MDE мог включить в нее свой набор типов. И так, давайте объявим класс...

... Собственно говоря, пока класс у нас состоит из свойств и методов для сериализации этих свойств. В дальнейшем мы расширим его функционал. Что же это за свойства? Первое, TypeName - имя типа. Далее идет набор свойств управления доступом к свойству DataType (через класс TMDEDataType, помните, мы на прошлом уроке писали к этому классу заглушки? пришло время начать их реализовывать):

  • IsDataTypeAllowed  - доступно ли свойство DataType. 
  • IsDataTypeFixed - фиксировано ли свойство DataType. Например, если у нас тип - ссылка на другую таблицу, то свойство  фиксировано (имеет тип, в котором можно хранить, например, ID записи, на которую ссылается поле) и менять его нельзя. 
  • DefaultDataType - значение по умолчанию, или фиксированное значение если установлен флаг IsDataTypeFixed. 

Аналогично для полей Size, Precision, TableName. Теперь давайте разберем несколько примеров, как будут описываться некоторые типы при помощи данного класса... 

...

....Ссылка на справочник товаров

Значение DataType Size Precision TableName
Is....Allowed   false false false false
Is....Fixed  true false false true
Default ftFloat 10 0 'Wares'

А теперь реализуем методы класса....

...

И тестовый пример (не забудьте на форме разместить нужные TLabel):

function lBoolToStr(a:boolean):string;

begin

  if a  then result:='true' else result:='false';

end;

 

 

procedure TfrmMDETest.btnLoadClick(Sender: TObject);

var  Stream:TFileStream;

     TD:TMDETypeDescription;

begin

  Stream:=TFileStream.Create('d:\1\1.mde',fmOpenRead);

  TD:=TMDETypeDescription.Create;

  TD.Unserialize(Stream);

  Stream.Free;

  lbTypeName.Caption:=TD.TypeName;

  lbIsDataTypeAllowed.Caption:=lBoolToStr(TD.IsDataTypeAllowed);

  lbIsSizeAllowed.Caption:=lBoolToStr(TD.IsSizeAllowed);

  if(TD.DefaultDataType=ftFloat) then lbDefaultDataType.Caption:='Float';

  lbDefaultTableName.Caption:=TD.DefaultTableName;

end;

 

procedure TfrmMDETest.btnSaveClick(Sender: TObject);

var Stream:TFileStream;

    TD:TMDETypeDescription;

begin

  TD:=TMDETypeDescription.Create;

  TD.TypeName:='MyType';

  TD.IsDataTypeAllowed:=true;

  TD.IsSizeAllowed:=false;

  TD.DefaultDataType:=ftFloat;

  TD.DefaultTableName:='TestTable';

 

    Stream:=TFileStream.Create('d:\1\1.mde',fmCreate);

  TD.Serialize(Stream);

  Stream.Free;

end;

Внешний вид формы:

Урок 4. Создание класса метаданных типа.

Если все сделано правильно, то после нажатия на кнопочку "Сохранить", а потом "Прочитать" появиться что то вроде того:

Урок 4. Создание класса метаданных типа.

 

(C) Шуравин Александр 


Скриншоты, помеченные знаком * , являются цитатами и иллюстрациями   программного продукта "Turbo Delphi", авторское право на который принадлежит "Borland Software Corporation


 

Последнее обновление ( 06.11.2011 г. )
 
« След.   Пред. »
 
© 2021 Программирование - это просто
Joomla! - свободное программное обеспечение, распространяемое по лицензии GNU/GPL.
Русская локализация © 2005-2008 Joom.Ru - Русский Дом Joomla!
Design by Mamboteam.com | Powered by Mambobanner.de
Я принимаю Яндекс.Деньги