EDA Ltd.
Начало Карта Контакт Мнения Портфолио
За фирмата
Разработка на софтуер
Delphi компоненти
Хардуер и системи
Електронна търговия
Интернет услуги
Бизнес решения

Пакети

Common Controls Component
Generator
SmartDBNavigator
Lookups
EDA Components


Shopping hosted by

Delphi компоненти : Generator Package

Уважаеми потребители,
Тук можете да намерите подробна информация за основната компонента TGenerator от Generator Package на екипа на ЕДА за Delphi компоненти.

версия

без сорс

със сорс

D4

$19
 Купете сега!

$19.50
 Купете сега!

D5

$19
 Купете сега!

$19.50
 Купете сега!

D6

$19
 Купете сега!

$19.50
 Купете сега!

D7

$19
 Купете сега!

$19.50
 Купете сега!

Тайните на нашия генератор

Почти винаги при работа с бази данни има полета, които биха могли да се генерират автоматично по определени правила. Сигурни сме, че бихте намерили необходимост от подобно приложение на много места. Ето кратко описание на едно решение на тази задача - TGenerator. Той е невизуална компонента за Delphi 4.0 и Delphi 5.0 - основна компонента в нашия Generator package. Сега ще ви обясним действието му.

Защо се нарича ‘дефиниран от потребителя’?

TGenerator връща стринг, стойността на който се генерира по определена маска. Тя се задава чрез свойство, композирано от потребителя в design time.

Защо се нарича ‘auto incremental’?

TGenerator предлага автоматично в run time следващата валидна последователност от символи, определена по специфични правила (маската). Всеки път при извикване на функцията Generator ще получите следващото състояние на стринга. Генераторът е подходящ при издаване на фактури или други документи - за определяне на поредния номер на документа. В такива случаи можете да контролирате типа на номерацията чрез свойството Mask на компонентата. По-надолу следват няколко примера за използване на нашия TGenerator.
Можете да използвате TGenerator в отделно приложение или в такова, работещо в мрежа. Много важно във втория случай е, че TGenerator използва свой вътрешен TTable обект, за да съхранява последното състояние на инкременталния стринг, което означава, че генерирането на следващ стринг е независимо от потребителската сесия над приложението. Едновременно могат да работят няколко генератора над стринг по една и съща маска - в случая генераторите ще работят конкурентно, т. е. всяко извикване на функцията Generator на коя да е инстанция на TGenerator ще дава следващ валиден стринг.


Примери:

TGenerator има много гъвкав механизъм на генериране. Следващите примери илюстрират генериране на стрингове по модел, зададен от потребителя.

 

Пример 1:
Нека свойството Mask на генератора е = 'ST-$###[012]'
След последователно извикване на TGenerator.Generator-функцията ще получавате следните стрингове:

1.  'ST-A0000'
2.  'ST-A0001'
3.  'ST-A0002''
4.  'ST-A0010''
5.  ..........'
6.  'ST-Z9992' - след този стринг ще се предизвика събитието OnOverflowMask и генерирането на стринг ще започне отново от началната стойност
7.  'ST-A0000'

 

Пример 2:
Mask = '$$##'
Изходните стрингове ще бъдат:

'AA00', 'AA01', ..., 'AA99', 'AB00', ..., 'ZZ99', ...

 

Пример 3:
Използвайки свойствата StartValue и EndValue можете да постигнете следните резултати:
Mask = 'A-##'
StartValue = 'A-11'
EndValue = 'F-33'
Изходните стрингове ще са:

 'A-11', 'A-12', ..., 'F-32', 'F-33', 'A-11', ...

 

Пример 4:
Можете да зададете като маска и множество елементи, например:
Mask = '[012A]-[KLM]'
Изходните стрингове ще бъдат:

'0-K', '0-L', '0-M', '1-K', ..., 'A-M', '0-K', ...

 

Пример 5:
Може да имате нужда и от стринг, който да се генерира в зависимост от резултат от изчисление във вашия програмен код. TGenerator ви дава възможността да използвате и символи от процедурен тип. Например:
Mask='#@@@'
Напишете код в събитието OnGetUserPrefixes. Нека там TmpString да получава стойностите на множеството: 'JAN', 'FEB', 'MAR', 'APR', ..., 'NOV', 'DEC'
Тогава изходните стрингове ще бъдат:

'0JAN', '0FEB', ..., '0DEC', '1JAN', ..., '9DEC', '0JAN' Всеки път, когато бъде достигната EndValue (ако е зададена) или най-голямата стойност по дефинираната маска, ще се предизвика препълване , т. е. събитието OnMaskOverflow.

 

Пример 6:
Да предположим, че приложението ви работи в многопотребителска среда с две сесии на две работни станции, работещи над една и съща база данни. Нека, освен това, двама потребители, например фактуристи, работят едновременно с една и съща форма. Тогава всеки от тях ще изисква генериране на следващ номер на фактура.
Mask = 'OMC-###-$-##'
Нека последният генериран стринг е бил 'OMC-333-C-44'.
Потребител 1 започва да пише фактура. Той ще получи номер 'OMC-333-C-45'.
По същото време и Потребител 2 започва да издава фактура. В такъв случай TGenerator изчаква Потребител 1 да получи своя номер и предлага на Потребител2 следващия - 'OMC-333-C-46'.

 

Пример 7:
Има случаи, в които ще искате два или повече генератора да работят над един и същи стринг, но в различни ‘граници’ на модела. Всичко необходимо е да зададете на първия генератор StartValue1 и EndValue1, а на втория - StartValue2 и EndValue2:

  • Generator1:
  • Mask = '##'
    StartValue = '00'
    EndValue = '33'
    GeneratorType = 1

  • Generator2:
  • Mask = '##'
    StartValue = '34'
    EndValue = '99'
    GeneratorType = 2

Тогава изходния стринг за Generator1 ще е:

'00','01',....'33','00',....

А за Generator2 ще бъде:

'34','35',....'99','34',....


Тези примери ви предлагат една малка част от възможностите на нашата компонента. Но, съгласете се, тук не можем да ви покажем всичко! Но вие имате нужда от TGenerator. И ако искате да спестите време и пари, купете го!

Вие ще разберете всичко за нашия TGenerator, защото е направен така, че да работите лесно и с удоволствие с него!

Разгледайте част от екраните за настройване на компонентата (84K).

Събота, 5 Юли, 2008

© 2005-2008 ЕДА ООД. Всички права върху web съдържанието запазени!

 

Условия на поддръжка