КАТЕГОРИИ:


Астрономия- (809) Биология- (7483) Биотехнологии- (1457) Военное дело- (14632) Высокие технологии- (1363) География- (913) Геология- (1438) Государство- (451) Демография- (1065) Дом- (47672) Журналистика и СМИ- (912) Изобретательство- (14524) Иностранные языки- (4268) Информатика- (17799) Искусство- (1338) История- (13644) Компьютеры- (11121) Косметика- (55) Кулинария- (373) Культура- (8427) Лингвистика- (374) Литература- (1642) Маркетинг- (23702) Математика- (16968) Машиностроение- (1700) Медицина- (12668) Менеджмент- (24684) Механика- (15423) Науковедение- (506) Образование- (11852) Охрана труда- (3308) Педагогика- (5571) П Arhitektura- (3434) Astronomiya- (809) Biologiya- (7483) Biotehnologii- (1457) Военно дело (14632) Висока технологиите (1363) Geografiya- (913) Geologiya- (1438) на държавата (451) Demografiya- ( 1065) Къщи- (47672) журналистика и SMI- (912) Izobretatelstvo- (14524) на външните >(4268) Informatika- (17799) Iskusstvo- (1338) История- (13644) Компютри- (11121) Kosmetika- (55) Kulinariya- (373) култура (8427) Lingvistika- (374) Literatura- (1642) маркетинг-(23,702) Matematika- (16,968) инженерно (1700) медицина-(12,668) Management- (24,684) Mehanika- (15423) Naukovedenie- (506) образование-(11,852) защита truda- (3308) Pedagogika- (5571) п Политика- (7869) Право- (5454) Приборостроение- (1369) Программирование- (2801) Производство- (97182) Промышленность- (8706) Психология- (18388) Религия- (3217) Связь- (10668) Сельское хозяйство- (299) Социология- (6455) Спорт- (42831) Строительство- (4793) Торговля- (5050) Транспорт- (2929) Туризм- (1568) Физика- (3942) Философия- (17015) Финансы- (26596) Химия- (22929) Экология- (12095) Экономика- (9961) Электроника- (8441) Электротехника- (4623) Энергетика- (12629) Юриспруденция- (1492) Ядерная техника- (1748) oligrafiya- (1312) Politika- (7869) Лево- (5454) Priborostroenie- (1369) Programmirovanie- (2801) производствено (97182) от промишлеността (8706) Psihologiya- (18,388) Religiya- (3217) с комуникацията (10668) Agriculture- (299) Sotsiologiya- (6455) спортно-(42,831) Изграждане, (4793) Torgovlya- (5050) превозът (2929) Turizm- (1568) физик (3942) Filosofiya- (17015) Finansy- (26596 ) химия (22929) Ekologiya- (12095) Ekonomika- (9961) Telephones- (8441) Elektrotehnika- (4623) Мощност инженерно (12629) Yurisprudentsiya- (1492) ядрена technics- (1748)

Създайте свои собствени компоненти




упражнения

1. За да организират превоза на текстови съобщения между клиент и сървър в двете посоки с постоянна информация за проследяване.

2. Прилагане на мишката координира прехвърлянето между клиент и сървър в двете посоки с постоянен координати за проследяване.

3. Изпълнение на прост "чат".

4. Прилагане на игра на "думи", като един по един да се обади на имената на градовете.

5. Прилагане на игра на "тик / так-палеца" в мрежата.

6. Прилагане на играта "Battleship" в мрежата.

Процесът на разработване на собствен компонент (наречен TMyComp) се състои от следните етапи:

1. Създаване на модул за новия компонент.

2. Наследяването извлечен клас за новия компонент съществуващите VCL базов клас библиотеката.

3. Добавете желаните свойства, събития и методи.

4. Регистрация на компонент в C ++ Builder среда.

5. Отстраняване на грешки.

6. Инсталация компоненти компонент палитра.

7. Запазване на съставните файлове.

Компоненти Wizard е в състояние автоматично да се създаде модул файлове, наследство coclass обявяването на нов дизайнер и компонент регистрация. компонент разработчик "ръчно" или чрез налични средства добавя имоти, събития, методите и създава компонент компоненти палитра. Нека разгледаме действията, които се извършват на всяка от тези стъпки.

7.1. Създаване на компонент модул

Модулът за софтуерен компонент се състои от два файла и MuSomr.srr MyComp.h, които се събират в обект MyComp.obj файл. Когато pazrabotke компонент, или да създадете нов модул, или да променя съществуващ. За да създадете модул, трябва да извършите komanduFile | Ново в диалоговия New диалоговия прозорец артикули, изберете иконата на единица. За да добавите елемент към съществуваща единица, трябва да извършите komanduFile | Отвори и изберете файл за imya_modulya.cpp модул, в който ще бъде добавен компонент в диалоговия прозорец. На следващо място, на заготовката се формира MuSomr.h файл:

#ifndef MyCompH

#define MyCompH

# включват <SysUtils.hpp>

# включват <Classes.hpp>

# включват <Controls.hpp>

# включват <ExtCtrls.hpp>

// клас TMyComponent: обществени <база клас компонент>

клас ПАКЕТ TMyComponent: обществен <базов клас>

{

публичния:

__fastcall TMyComponent (TSomponent * собственика);

};

# endif

Нова декларация клас трябва да включва компонент ПАКЕТ макро. Функционално подобни компоненти са групирани в пакети - динамични библиотечни файлове с .bpl разширението. Както обикновено с DLL библиотеки, пакети съдържат код, който се споделя от много приложения. Партида организация ускорява компилации и монтажни приложения, предлага по-ефективно изпълним код от факта, че VCL за работеща програма не е напълно зареден.



Създаване на компонент, докато тя се различава от неговата майка.

7.2. наследяване компонент

Всеки компонент се получава от TComponent база клас и следващите (като TControl или TGraphicControl) или от съществуващ клас компонент.

Най-лесният начин да се изгради нов компонент - е да промените свойствата на съществуващ компонент. Можете да използвате всеки абстрактен клас VCL, в чието име включва думата избор. Например, можете да създадете нов списък компонент със специални функции, които не са налични в стандартната клас TListBox. Защото не можеш да променят директно TListBox, можете да започнете с непосредствените предшествениците си в йерархията на класа. За тази цел, подходящ TCustomListBox клас, който реализира всички възможни свойства на списъка с производни на компоненти, но не ги поставя в условия _published секция. Наследяването на компонента трябва да бъдат декларирани в раздел _ публикувани имотите, които искате да включите в генерирания компонент.

Всички компоненти прозорците са получени от базов клас TWinControl а. Стандартен прозорец контрол характеризира така наречената "прозорец Характеристиката" (дръжка на прозореца), която е затворена в Дръжка собственост. Благодарение на дескриптора, Windows идентифицира компонента, по-специално, може да отнеме на фокуса на клавиатурата. Въпреки че можете да създадете оригинално прозоречен интерфейс елемент (който все още няма съществуващи аналози и няма нищо общо с тях), като се използва като TWinControl базовия клас, C ++ Builder предоставя TCustomControl клас - специализирана прозорец управление, което опростява теглене на сложни визуални образи. Всички стандартни компоненти прозорец за контрол, като например бутони, списъци, текстови полета (с изключение на TLabel компонент, който никога не се получава във фокуса) - непряко получени от TWinControl.

За разлика от прозорците компоненти, получени от TCustomControl клас графични компоненти лишени от прозорците описания и не могат да получават на входа фокуса. Графичните елементи позволяват изобразяването на обекти без използването на системните ресурси.

Нови графични елементи трябва да наследи от абстрактно база клас TGraphicControl (потомък TControl). Клас TGraphicControl осигурява на платното за рисуване и дръжки WM_PAINT съобщения. Всичко, което трябва да направите е да замени метода на Paint на изготвяне, в съответствие с посочените изисквания.

Всички компоненти имат общ абстрактен базов клас TSomponent, обаче, само невидими компоненти могат да наследяват директно от TComponent клас. Невидимите компоненти, използвани като интерфейсни елементи с други компоненти (достъп до база данни или диалози).

7.3. Добавянето свойства, събития и методи

Имоти, за разлика от данните на потребителя, не се съхраняват данни, но при четене и писане методи за организиране на достъп до тях. Това трябва да се забравя, при създаване или модифициране на свойствата на компонента.

Събитие - връзка между излагането на някои компоненти и код за манипулатор събитие, което отговаря на този ефект. манипулатор събитие е написан от програмист за кандидатстване. Използването на събития, програмистът може да коригира поведението на компонента, към техните изисквания, без да се налага да сменяте сами обектите. Събития в резултат от типичните потребителски действия (като движения с мишката) са интегрирани във всички стандартни компоненти VCL, но можете да дефинирате нови събития. C ++ Builder изпълнява събития като свойства.

7.4. Регистрирайте компонента

Регистрирайте компоненти - процес, който информира, C ++ Builder, на която се добавя към компонент VCL и таб палитри компоненти трябва да се показва. Следните действия се извършват за регистрация на компонента:

1) добавя функции регистър () в MuSomr.srr файл. Когато тази функция е в пространството от имена със същото име като име на модул на компонента (първата буква трябва да се капитализира, а останалата част - с малки букви).

2) тялото на функцията на Регистъра е обявена тип масив TComponentClass, в който класа на регистрираното наименование на компонента.

3) Тялото на функцията функция се нарича Регистрация RegisterComponents с три параметъра: името на компонентите на раздела палитри масив от съставните класове, а индексът на последния клас в масива.

Например:

именно пространство Mycomp {

анулира __fastcall ПАКЕТ регистър ()

{

TComponentClass класове [1] = {_classid (TMyComponent)};

RegisterComponents ( "проби", класове, 0);}

}

Обява е включване MuSomr.srr файл с код за регистрация komponentf TMyComponent в раздела Проби от компонентите на палитра.

Когато компонентът е регистрирано, че е възможно да се провери и да инсталирате Компонент палитра.

7.5. Отстраняване на грешки neinstallirovannogo компонент

поведение компонент трябва да се проверява преди инсталирането на компонента палетата. По същество необходимо да се симулира действието, което генерира C ++ Builder, когато потребителят се движи компонента от компонентите да образуват палитри. Процесът изисква следните стъпки:

1) Активиране MyComp.h компонент модул файл в заглавката на някаква форма: # включват "MyComp.h"

2) Добавяне на член обект на данни, представляваща компонент тест в раздела за декларации на обществеността на формуляра клас: TMyComponent * MyComponent1.

3) Свържете събитие манипулатор OnCreate форма.

4) Дизайнер Call Object компонент на това събитие манипулатор, минавайки го параметър показателно за притежателя на компонент. Обикновено това е указател към обект, който съдържа компонент (например, форма).

5) Веднага след извикването на конструктора, задаване на майка имота - компонента родител. Обикновено стойността на този имот е указател към това. Ако компонент не е контролен елемент, т.е. не наследи от TControl, а след това тази стъпка се пропуска.

6) Иницииране стойности на други свойства на компонента.

По-долу е списък на форма модул се използва за отстраняване на грешки компонента:

// Header файл TestForm.h

#ifndef TestFormH

#define TestFormH

# включват <Classes.hpp>

# включват <Controls.hpp>

# включват <StdCtrls.hpp>

# включват <Forms.hpp>

# включват "MyComp.h" // 1

клас TForm1: обществен TForm {

__published:

лично:

публичния:

TMyComponent * MyComponent1; // 2

__fastcall TForm1 (TComponent * собственика); // 3

};

екстернант ПАКЕТ TForm1 * Forml;