КІРІСПЕ 4
1.Негізгі бөлім 5
1.1 Баркер әдісі 5
1.2 CASE - технологиясы 8
1.3 Объектілі - бағытталған CASE - технологиясы 12
1.4 CASE – технологиясының мінездемесі 14
2. ТЕОРИЯЛЫҚ БӨЛІМ 19
2.1 COM-объектсі 19
2.2 СОМ-интерфейсі 19
2.3 CoClass-класы 21
3. ПРАКТИКАЛЫҚ БӨЛІМ 23
3.1 Өз компонентті жасаудың алдында арғы атасын таңдау
3.2 Рrivate, protected, public және published секциялары 23
3.3 Модуль компонентін құру 25
ҚОРЫТЫНДЫ 33
Пайдаланылған әдебиеттер 34
Қосымша А 35
КІРІСПЕ
Аспаптар – ол жұмысты орындау үшін арналған құралдар,
Негізінен бағдарламаны әзірлеудің құрал – жабдықтары компьютерге программаларды
Программалық өнімді (ПӨ) өңдеу көптеген бір-бірімен байланысқан әрекеттерден
- деректер моделін құру және есептеу әдістемесі;
- есептеуді қамтамасыздандыратын, функциональдық сипаттамасы;
- деректер құрылымын анықтау – компьютерде және алгоритмде
- есепті тарату әдістерін сипаттау және анықтау
- пайдаланушы интерфейсін сипаттау және анықтау;
- ПӨ қолдау құралдарын анықтау;
- есеп спецификациясы;
- тестілеу программасын қоса отырып, программа мәтінін жазу;
- программаның тестіленуі, трансляциясы және жөнделуі;
- қолдау кітапханаларын қосу және байланыстыру;
- орындау ортасын құру; орындамалық модулді орналастыру және
- орнатылған көмекті құру және өңдеуді құжаттау;
- орнатылатын (инсталляциялық) ПӨ пакетін құру.
Rational Unified Process (RUP) аймағында программаларды өңдеуге арналған
- талаптарды анықтау;
- жобалау;
- программалау;
- тестілеу;
- ендіру.
Көрсетілген жұмыстарды орындау үшін көптеген программалар жиынтығы үнемі
1.Негізгі бөлім
1.1 Баркер әдісі
Модельдің көмегімен біз керегі жоқ детальдарды қарастырмай-ақ бар
Маңызы (Entity) – нақты немесе ойластырылған объект. (1.1-сурет).
1.1-сурет Графикалық суреттер
1.2-сурет
Бұл режим сол жақ басқыш басқа да бір
1.3-сурет Сипаттама бергенде берілетін түзулер.
1.4-сурет
Соңғы моделдеу идентификация атрибуты болып табылады.
Атрибуттар – «сабақты өткізетін орын», «сабақты өткізетін уақыт»,
1.5 - сурет
Типтер және супертиптер: Бір маңызды ұқсас маңыздардың тобына
Өзара шығарып тастайтын байланыстың: Тек қана маңызы әрбір
1.6-сур.
1.7-сурет
Рекурсивті байланыс: сущность может быть связана сама с
Ауыстырылмайтын (non-transferrable) байланыс: көшірме бір орыннан екіншіге ауыстырылмайды
1.8-сурет Ауыстырылмайтын байланыс
1.2 CASE - технологиясы
Алдыңғы технологиялардың қарастырылуына сәйкес (Survey of Advanced Technology),
CASE - құралдары әсерді тез емес қайсыбір
CASE - құралдардың енгізуіне нақты шығындар олардың тауып
CASE – құралдары сәтті аяқталған кезде ғана қамтамасыз
Каскадты пайдалану келесі түрде көрсетілген:
әрбір этапта құжаттың жобалық түрі қалыптасады;
логикалық жүйеліліктің этаптары жолдардың барлық жұмысын аяқтайды.
1.9- сурет ПО Каскадтық схема ортасы
Енгізуінің басқа салыстырмалы нақты қанағаттандыруы сөзсіз бекітулері қандай
Сапаның әр түрлілігі және CASE – құралдарының мүмкіндіктері;
Әртүрлі ұйымдарда CASE – құралдарының пайдалануы;
Әртүрлі ұйымдардың енгізу тәжірибесіндегі кең әр түрлілік;
Толық метрикалардың жоқ болуы;
Жобаның аймақтық мысалдағы кең диапазоны;
Әртүрлі жобадағы CASE – құралдарының интиграциялауы.
Бұл қиындықтар нәтижесінде ақпаратқа қол жеткізу құрал типіне,
Нәтижесінде ПО құру процесі келесі түрге ие болды
1.10- сурет Каскадтық схемедағы ПО өндеу
Қазіргі заманғы CASE – құралдары АЖ жобалық технологияның
АЖ еңбекті талап ететің этап анализ және жобалау
CASE – құралының разрядына персональді компьютерлердің шектелген мүмкіншіліктері
детте CASE – құралдарына кез – келген бағдарламалық
АЖ графикалық құралдары үшін сипаттау және құжаттау;
интеграция отдельных компонент CASE – құралын жеке интеграциялау;
арнай тәсілмен қолдану (репозитория).
CASE – құралын интеграциялау;
CASE – құралын көрсеткіш компоненттің үстінде пайда болды;
dsDragLeave — көрсеткіш компонентті тастап кетті;
dsDragMove — көрсеткіш компонент үстімен жылжып барады.
Қабылдаушы кейбір жағдайларды ескеру керек, егер қабылдаушы жұмысын
type TDragDropEvent = procedure(Sender, Source: TObject; X, Y:
property OnDragDrop: TDragDropEvent;
Ол маустың сол жақ басқышын жіберген кезде шақырылады.
type TEndDragEvent = procedure(Sender, Target: TObject; X, Y:
property OnEndDrag: TEndDragEvent;
конфигурациялық басқару құралы;
құжаттау құралы;
тестілеу құралы;
жобаны басқару құралы;
реинжиниринг құралы.
CASE моделі жүйенің функциясына немесе оның объектісіне дайын
CASE – құралын -да блоктар кері номерленген болуы
CASE – құралын диаграммасы бір-бірімен 3-6 дейінгі блоктардан
CASE – құралын диаграммасы белгіленген объектілер декомпозициясы
ICOM кодтары , ұрпақ диаграммамен ата-аналық диаграммаларды
Түйін номері берілген диаграмманың сатысын иерархиялық
Егер модельде диаграммаларды оқу үшін өте қиын
CASE – құралын келесі қасиеттермен классификациялау:
ұйымдық өнімнің нақты бағасын анықтау;
тапсырыс берушіні ұстап тұру үшін бағаны анықтау;
Бірінші кезекте көңіл бөлу керек жұмыстарды анықтау және
Бағалақ талдау кең Design/IDEF ((Meta Software), BPwin (Logic
(Middle CASE) әдістемесі келесі негізгі сипаттамалардан тұрады, шығын
MS Visio беттері және олардың қолданылуы.
Дұрыс құрылған класс тек бір ғана абстракцияны бере
Қосымша типтері:
жобалау және басқару құралы (SE Companion, Microsoft Project
конфигурациялық басқару құралы (PVCS (Intersolv));
тестілеу құралы (Quality Works (Segue Software));
құжаттау құралы (SoDA (Rational Software)).
Қазіргі таңда бағдарламалық қамтамсыз ету CASE – құралдарға
Vantage Team Builder (Westmount I-CASE);
Designer/2000;
Silverrun;
ERwin+BPwin;
S-Designor;
CASE Аналитика.
Бұдан басқа, жаңадан жүйелік қолданушы шығады (мысал, CASE
1.3 Объектілі - бағытталған CASE - технологиясы
Логикалық жобалау автоматизациясының – артықшылықтары мен кемшіділктері. RR
“CASE – құралдарына байланысты ақпараттар біздің ойымызша кәдімгі
Rational Software Rational Rose 98 компаниясының CASE -
Мысалы, қарапайым - Rose 98 Modeler Edition пакетіне
Айталық, Rose жүйесі - визуальды моделдеу жүйесінде жақсы
Rational Rose 98-дің артықшылықтары:
Қосымшаның өңделу циклын қысқарту.
Программист жұмысының өнімділігін арттыру.
Бизнес және пайдаланушыларға байланысты тапсырыс берушілердің программа құрудағы
Үлкен жобалар және жобалар тобын құруа алу мүмкіндіктері.
Бұрын құрылған ПҚ қолдана алу және олардың құрылымы
UML тілі әртүрлі бөлімдер мен өндірушілер арасындағы әмбебеп
Жүйенің кемшілігі, басқа да бөліктеп жинау жүйелері сияқты
1.4 CASE – технологиясының мінездемесі
Silverrun
CASE - құралы Silverrun америкалық фирма Сomputer Systems
1.11-сурет Спиральді модель ЖЦ
Компьютер үшін программа – бұл программалау тілінде құрылған
Жүйеде дайын методология бар: DATARUN (негізгі методология, Silverrun),
Құрылым және функциялар
Silverrun модульдік құрылымға ие және төрт модульден тұрады.
Командалық (атомарлы), құрылымдық, модульдік программалау – категориялары, (BPM
«Құрылымдық программалау – программалау методологиясы, жүйелік түрдегі талдауға
Есепте қолданылатын, басқарылатын құрылымның қарапайымдылығы және атомарлығы. Бұл,
Модуль - модулдік программалау (ERX - Entity-Relationship eXpert)
Тип диаграммы Обозначение Vantage Team Builder for ORACLE
Сущность-связь ERD + + +
Потоков данных DFD + + +
Структур данных DSD + + +
Архитектуры системы SAD + + +
Потоков управления CSD + + +
Типов данных DTD + + +
Структуры меню MSD +
Последовательности блоков BSD +
Последовательности форм FSD
+ +
Содержимого форм FCD
+ +
Переходов состояний STD + + +
Структурных схем SCD + + +
Таратылатын шешімдер қарапйым және түсінікті болуы керек. Егер
Модулдің барлық айнымалыларның қызметі комментерилердің көмегімен анықталуы және
Объектілі-бағыттылған парадигма.
ОБП идеясы негізінен осы деректерді өңдейтін процедураларды бір
Басқа құрылымдармен байланыс
Silverrun көп таралған СУБД: Oracle, Informix, DB2, Ingres,
Ratіonal Rose өнімдерінің сериясы құрастырушыны нақты уақыт жүйелерінде
Келесі қолданылатын RR – мен берілген диаграммаларға, -
Атрибуттарды, әдістерді, қасиеттерді, уақиғаларды, класстарды анықтау. Класстар диаграммасы
Топтық жұмыс
Топтық жұмыс Silverrun жүйесінде екі тәсілмен сипатталады:
Қиын есептер кішірек бөліктерге бөлінеді, функциональды түрде негізінен
Есепте қолданылатын, басқарылатын құрылымның қарапайымдылығы және атомарлығы. Бұл,
Функционионалдау ортасы
Silverrun реализациясының үш платформасы бар - MS Windows,
Windows ортасында функционирлеу үшін в среде i486 кем
1.12-сурет Vantage Team Builder және Uniface сәйкестенуі
Vantage Team Builder негізгі барлық UNIX - платформада
Vantage Team Builder "клиент-сервер" кофигурациясын қолдануға болады, жоба
2. ТЕОРИЯЛЫҚ БӨЛІМ
2.1 COM-объектсі
COM-объектісін мынандай объектілермен салыстыруға болады С++, VB немесе
2.2 СОМ-интерфейсі
COM анықталған интерфейс және оның реализациясы арасында фундаментальды
СОМ интерфейс түсінігі бойынша– бұл контракт, ол функция
Интерфейс реализациясы (interface implementation) – бұл код, оны
«Интерфейс» сөзі COM-да С++-тағыдай мағынада емес, басқа
CORBA-да бүгінгі күнге дейін бір объектімен көптеген интерфейстер
COM-да интерфейсті бейнелеу үшін, CORBA-дағы сияқты, IDL тілі
COM объектісінде интерфейстің кілттік аспектісі мыналар болып есептеледі:
Ø болашақта баспаға шыққанда, интерфейс ешқандай жағдайларға байланысты
Ø келісім бойынша, интерфейстің аты дауысты дыбыс I
Ø интерфейс GUID идентификаторына ие (Globally Unique Identifier),
Ø интерфейстер тәуелсіз тілдерге ие болады. Интерфейсті реализациялау
Ø өзінен-өзі интерфейстер объект болып есептелмейді, тек қана
Ø кез келген интерфейс IUnknown базалық интерфейсінің мұрагері
Ø интерфейске жүгіну ағындар арасына бағыттауға, процессормен жүйелік
2.3 CoClass-класы
CoClass – бұл класс, тәсілдер жинағын және қасиеттерін
Әр бір CoClass екі идентификаторға ие – оның
CLSID дүние жүзілік идентификатор болып саналады (GUID). GUID
CLSID, IID немесе басқа кез келген GUID жолға
3. ПРАКТИКАЛЫҚ БӨЛІМ
3.1 Өз компонентті жасаудың алдында арғы атасын таңдау
Ереже сияқты, түрінде қолданылады, сонымен қатар барлық компоненттердің
TOpenDialog компонентін үлгі үшін аламыз, компоненттердің палитра Dialogs
Файл үшін, біз арқасында ашуға тырысамыз мынаның диалогтық
Тапсырма үшін өзінді біз таңдады, қалдық үшін компонент
Компонентті келешек біздің үлгі көрінді Ok және бізде
Конструкторды қайтадан анықтаймыз мына компонентті, public секциясында. жолды
Ctrl басу мына жолында + Shift + мына
Назарды ықылас білдіріңіздер: Ctrl пернелерінің қиыстырулары + Shift
Құру жасалғанды Component компоненттісі | Install Component ...
Сіздерге ұнамайды, не біздің компонентті сондай кішкене икон
Үшін мынаның бізге қажетті Tools деп атау |
Resource суретін оған саламыз | New | Bitmap.
Назарды ықылас білдіріңіздер: нүктелердің түсі, нүкте түсімен сәйкес
Сіздер өз суретіңіз жасады соң , Bitmap оның
Пакеттен компонентті қашықтатыңыздар және қайтадан оның орнатыңыздар (
3.2 Рrivate, protected, public және published секциялары
Барлық не private секциясында жариланған, модуль қолайлы тек
Барлық не protected секциясында жариланған, қалай және private
Қасиеттердің мағыналарына рұқсат әдістері жариялауға осында болады (
Осында жарияланады, ереже сияқты әдістер. Қасиеттің және оқиға
Олар қосымша жобалауы уақытына қолайлы ( жобалау кезең
Default спецификаторы түр файлында қасиет мағынасын сақтауға көрсетеді
Қасиет мағынасы үндемеумен берілген nodefault спецификаторы өзгереді .
Мысалы : property AutoSize nodefault ;
Қасиет мағынасы түр файлында сақтау қашан stored спецификаторы
Property OneProp : integer read FOneProp
Write
SetOneProp
Stored False ;
Property TwoProp : integer read FTwoProp
Write
SetTwoProp
Stored True ;
Property ThreeProp : integer read FThreeProp
Write SetThreeProp
Stored Fuct ;
Және соңғы :
Керек компоненттердің панелінде демострацияға арналған компонентке суретті қосу
3.3 Модуль компонентін құру
Жасау - компонентті начинается Delphi модулі жасауынан (
Компоненттердің құру эксперті қолмен істелетін немесе арқасында модуль
Біріншімен адындап , - қолданылатын әдістен , компонентті
Соңғы тәсілден бастаймыз , ең жиі қолданылатынды сияқты
3.1 - Сурет
Эксперт (3.1 -сурет) шақырылады. Component/New Component/IDE Delphi ішінде.
Ancestor type : жасалынушы әке-шешелік сынып компонентті .
Class Name : жасалынушы сынып аты компонентті .
Palette Page : сала бастау , қайсыда компонент
UnitFileName : модуль атысы , қайсыда негізгі мәтін
Search Path : жолдар , қайсыларды керек Delphi
Біздің компонент үшін ең таяу функционалдылықпен TLabel сыныбы
Ескерту:
Ереже сияқты , негізгі код модульдері , ,
Сала бастауда болады ол TmgCoolLabel . компоненттісі орналасып
Эксперт терезесінде ОК бүркеншектегі шегесін басып , біз
Эксперт компонентті ең аз қажетті каркасты синтаксистік дұрыс
Болады , ақырғы , қолмен істелетін барлық мынау
Назарды ықылас білдіріңіздер , не сынып декларациясы басқа
Өңдеуде келесі кезеңмен компонентті қасиеттердің жасау , әдістердің
Мен келтірілген өз жұмысымда қолданамын келісім төмен туралы
Сынып ат компонентті қажет бастау , дәл осылай
Префикспен сынып атысы өте қажет ескертіп қою .
Модуль атысы мен u префиксімен ескертіп қоямын (
Сіздер көз алдына келтіру тіпті жасай алмаcыздар ,
Компонентті конструктор шақыруынан кейін қосымша әрекеттер қандай болмасын
Объекті әдістерінің шақыру реті туралы жорамалдарды талаптануға істемеу
Қасиеттерді жариялауға қымсынбаңыздар . Қасиеттің – жылдам және
Қосымша иілгіштік OnChange оқиғалары , Before және After
Код компонентті
Сондықтан біздің компонентіміз алғы атадан тек - құйып
Негізгі жұмыс қасиеттердің жаңа бастапқы мағыналарының құруымен выполняется
Тәжірибеліде жобалау кезеңі және кодтаудың компонентті біреумен ғанамен
Компоненттердің күй-жағдай сақтауы
3.2 – Сурет – Компоненттердің күйін сақтау
Қасиеттердің күй-жағдай түрлері Delphi файлға сақтауды автоматты өндіреді
Мына мақалада түр файлына компоненттердің қасиеттердің мағыналардың сақтау
Суретте файлға түр қасиеттерінің сақтаулары 1 жүйелі процес
Бірінші параметр – файл атысы , қайсы түрді
Әдіс файлдық селді жасайды ( TFileStream ) және
Қандай көрінетін , TWriter объектісі жасалады және сайып
Объекті селіне жазылушы TWriter сыныбы қасиеттер туралы хабарды
Көбірек толық TFiler сыныбын қарап шығамыз . Қасиеттердің
Сынып декларациясы келесі бейнемен көрінеді : TFiler =
Root қасиеті компонентке көрсеткішті асырайды , қасиеттермен қайсыны
Ancestor қасиеті анықтауға рұқсат етеді , қандай қасиеттердің
IgnoreChildren қасиеті көрсетеді , керек , қасиеттер басқа
LookupRoot қасиеті көрсетеді жергілікті тамыр ( жазылушы |
Әдіс синхронизация FlushBuffer - абстракты әдісі селмен ,
DefineProperty – оқуға арналған әдіс | жазудың қасиет
DefineBinaryProperty – оқу әдісі | бинарлық тап осы
TFiler сыныбы TWriter екі мұрагерінің және TWriter TReader
Мұрагерлерді оқу әдістері және тап осы әртүрлі үлгілердің
Жазу процесіне ұқсас қасиеттердің мағыналардың тиеуі болады .
(6,7) үндемеумен мәтіндік формат файлдарында қасиеттерді сақтайды Delphi
Компоненттердің қасиет үндемеуімен , агрегируемые компонентпен , аман
Механизм бірдей жұмыс істейді және арналған , және
Қазір , жазу жалпы механизмы суреттеп айтып |
Run - time түр тиеуі.
Тиеу механизмы қолдануы қызықты әдістерінен біреумен ғанамен |
File менюі пункті арқасында жаңа жобаны жасаймыз |
3.3 – сурет – Форманың негізгі терезесі
Негізгі жұмысты түр тиеуімен ReadFormProperties әдісі орындайды ,
Қосымшаны жібереміз . LoadForm бүркеншектегі шегесіне басу жанында
Компоненттердің жарияланушысыз немесе - қасиеттердің сақтауы
Жарияланушысыз мағына сақтау үлгісін қарап шығамыз ( published
Компонент, өзгертулерді тарих сақтаушы Text қасиеттері.
Жарияланушысыз қасиеттердің сақтауы демонстрация жасайды.
Сонымен , өзгертулердің тарих сақтауына арналған жобалау кезеңінде
SetText әдісі , Text қасиеттері мағына құруының артынан
TextHistory қасиеттері Delphi ортасы сақтау қажеттілігі туралы білді
Көрсету үшін , қандай әдістер тиеу үшін қажетті
Компонентті ReadTextHistory әдісі қасиеттердің тиеу жүруінде шақырылады .
TextHistory . қасиеттері WriteTextHisory әдісі сақтаудың артынан жауап
Тек қана қалады скомпилировать және пакет тіркеп алу
Тестілеуге арналған қасиет сақтаулары жаңа қосымшаны жасаңыздар .
ҚОРЫТЫНДЫ
Borland Delphi бағдарламалау ортасында өз компоненттерін жасау
ХХІ ғасырдың басталуы жаппай ақпараттық қоғамға көшумен сипатталады.
Қорыта келген кезде бұл тақырыптан менің алған мәліметтерім
Бүгiнгi күнде елiмiздегi iрi мекемелердiң бәрi өзiнiң жұмысында
Деректер базасымен жұмыс жасау қазіргі заманда ең ыңғайлы
Бұл курстық жұмыстың студентке берген пайдасы көп. Студенттің
Қорыта келе, автоматтандырылған жүйелер адамзат өмірінің бөлшегіне айналғандығына
Пайдаланылған әдебиеттер
Горев А.И. и др. Эффективная работа с СУБД.
Четвериков В.Н. и др. Базы данных и знаний.
Тиори Т., Фрай Дж. Проектирование структур баз данных.
Саймон А. Стратегические технологии баз данных: менеджмент на
Когаловский М.Р. Энциклопедия технологий баз данных. –М.:Финансы и
Галицына О.Л. и др. Базы данных. Уч. Пособие
Атре Ш. Структурный подход к организации баз данных.
Дейт К. Введение в системы данных. М.: Наука,
Мартин Дж. Организация баз данных вычислительных системах. М.:
Ульман Д., Уидом Дж. Введение в системы баз
Неверова Е.Г. Исследование проблем создания баз данных для
Неверова Е.Г. Технология проектирования баз данных и знаний,
Мартин Дж. “Организация баз данных в вычислительных системах”,
Федоров А.Г. Создание Windows –приложений в среде
Орлик С.В. Секреты Delphi на примерах. -
Дарахвелидзе П.Г., Марков Е.П. Delphi – среда
Джон Матчо, Дэвид Р.Фолкнер. Delphi Пер. с
Орлик С.В. Секреты Delphi на примерах. -
Дейт, К. «Введение в системы баз данных».-М.:Наука, Диалектика.
Д.Л.Вескес, М.Гандерлоу,М.Чипмен «Access и SQL Server», Москва, «Лори»,
Р.Ахаян и др. «Эффективная работа с СУБД», Санкт-Петербург,
Кодд, Е.Ф. «Реляционная модель данных». Пер с англ.
Қосымша А
program Project1;
uses
Forms,
Unit1 in 'Unit1.pas' {Form1},
Unit2 in 'Unit2.pas' {Form2},
{$R *.res}
begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.CreateForm(TForm2, Form2);
end.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, DBCtrls, ExtCtrls;
Type
TOurOpenDialog = class ( TOpenDialog )
Private
{ Private declarations }
Protected
{ Protected declarations }
public
{ Public declarations }
constructor Create(AOwner: TComponent); override;
published
{ Published declarations }
end;
procedure register;
implementation
procedure register;
begin
RegisterComponents('Samples', [TOurOpenDialog]);
end;
{ TOurOpenDialog }
constructor TOurOpenDialog.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
Options := Options + [ofFileMustExist, ofPathMustExist];
end;
end.
Type
TOurComponent = class ( TComponent )
Private
{ Private declarations }
FArrayProp : array [0..9] of integer ;
Function GetArrayProp ( aIndex : integer ): integer
Procedure SetArrayProp ( aIndex : integer ; const
Value : integer );
Protected
{ Protected declarations }
Public
{ Public declarations }
Property ArrayProp [ aIndex : integer ]: integer
GetArrayProp
Write SetArrayProp ;
Published
{ Published declarations }
End ;
Type
TOurComponent = class ( TComponent )
Private
{ Private declarations }
FMyInteger : Integer ;
Protected
{ Protected declarations }
Public
{ Public declarations }
Constructor Create ( AOwner : TComponent ); override
Published
{ Published declarations }
Property MyInteger : Integer read FMyInteger
Write FMyInteger default 10;
End ;
Procedure Register ;
Begin
Interface
Uses
SysUtils , Classes , Controls , StdCtrls ;
Type
TmgCoolLabel = class ( TLabel )
Private
{ Private declarations }
Protected
{ Protected declarations }
Public
{ Public declarations }
Published
{ Published declarations }
End ;
Procedure Register ;
Implementation
End ;
End .
Implementation
Create constructor TOurComponent . ( AOwner : TComponent
Begin
Inherited Create ( AOwner );
FInteger :=10;
End ;
End .
Interface
Uses
SysUtils , Classes , Controls , StdCtrls ;
type
TmgCoolLabel = class(TLabel)
private
{ Private declarations }
protected
{ Protected declarations }
public
{ Public declarations }
constructor Create(AOwner:TComponent);override;
published
{ Published declarations }
property Height default 30;
property Width default 85;
end;
procedure Register;
implementation
uses Graphics;
procedure Register;
begin
RegisterComponents('Our components', [TmgCoolLabel]);
end;
{ TmgCoolLabel }
constructor TmgCoolLabel.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
AutoSize:=false;
Height:=30;
Width:=120;
Font.Color:=clBlue;
Font.Style:=[fsBold];
Font.Height:=16;
Font.Size:=12;
end;
end.
RegisterComponents (' Our components ',[ TmgCoolLabel ]);
Var
Stream : TStream ;
Begin
Stream := Create TFileStream . ( FileName ,
Try
WriteComponentRes Stream . ( ClassName Instance . ,
Finally
Free Stream . ;
End ;
End ;
Private
FStream : TStream ;
FBuffer : Pointer ;
FBufSize : Integer ;
FBufPos : Integer ;
FBufEnd : Integer ;
FRoot : TComponent ;
FLookupRoot : TComponent ;
FAncestor : TPersistent ;
FIgnoreChildren : Boolean ;
Protected
Procedure SetRoot ( Value : TComponent ); virtual
Public
Constructor Create ( Stream : TStream ; BufSize
Destructor Destroy ; override ;
Procedure DefineProperty ( const Name : string ;
ReadData : TReaderProc ; WriteData : TWriterProc ;
HasData : Boolean ); virtual ; abstract ;
Procedure DefineBinaryProperty ( const Name : string ;
ReadData , WriteData : TStreamProc ;
HasData : Boolean ); virtual ; abstract ;
Procedure FlushBuffer ; virtual ; abstract ;
Property Root : TComponent read FRoot write SetRoot
Property
LookupRoot : TComponent read FLookupRoot ;
Property Ancestor : TPersistent read FAncestor write FAncestor
Property IgnoreChildren : Boolean read FIgnoreChildren write FIgnoreChildren
End ;
Type
TForm 1= class ( TForm )
Button 1: TButton ;
OpenDialog 1: TOpenDialog ;
Button 2: TButton ;
Procedure Button 1 Click ( Sender : TObject
Procedure Button 2 Click ( Sender : TObject
Private
{ Private declarations }
Procedure ReadFormProperties ( DfmName : String ; Form
Procedure WriteFormProperties ( DfmName : String ; Form
Public
{ Public declarations }
End ;
Var
Form 1: TForm 1;
Implementation
{$ R dfm }
Procedure TForm 1. Button 1 Click ( Sender
Var
RunTimeForm : TForm ;
Begin
RunTimeForm := TForm 1. CreateNew ( Self );
With RunTimeForm do try
If OpenDialog 1. Execute then
Begin
ReadFormProperties ( OpenDialog 1. FileName , RunTimeForm );
ShowModal ;
End ;
Finally
Free RunTimeForm . ;
End ;
End ;
Procedure TForm 1. ReadFormProperties ( DfmName : String
Var
FileStream : TFileStream ;
BinStream : TMemoryStream ;
Begin
FileStream := Create TFileStream . ( DfmName ,
Try
BinStream := Create TMemoryStream . ;
Try
ObjectTextToBinary ( FileStream , BinStream );
Seek BinStream . (0, soFromBeginning );
ReadComponent BinStream . ( Form );
Finally
Free BinStream . ;
End ;
Finally
Free FileStream . ;
End ;
End ;
Procedure TForm 1. WriteFormProperties ( DfmName : String
Var
BinStream : TMemoryStream ;
FileStream : TFileStream ;
Begin
BinStream := Create TMemoryStream . ;
Try
FileStream := Create TFileStream . ( DfmName ,
Try
WriteComponent BinStream . ( Form );
Seek BinStream . (0, soFromBeginning );
ObjectBinaryToText ( BinStream , FileStream );
Finally
Free FileStream . ;
End ;
Finally
Free BinStream .
End ;
End ;
Procedure TForm 1. Button 2 Click ( Sender
Begin
If OpenDialog 1. Execute then
Begin
WriteFormProperties ( OpenDialog 1. FileName , Self );
ShowModal ;
End ;
End ;
Left =192
Top =114
Width =870
Height =640
Caption =' Form 1'
Color = clBtnFace
А
Color Font . = clWindowText
Height Font . =-11
Name Font . =' MS Sans Serif '
Style Font . =[]
OldCreateOrder = False
PixelsPerInch =96
TextHeight =13
Object TextLogger 1: TTextLogger
Text ='678'
Left =368
Top =160
TextHistory =(
End
End.
35