Бази компоненти създаване на околната среда в Delphi

Делфи. Компоненти и класове. Създаване на компонент

Бази компоненти създаване на околната среда в Delphi

Класът дума показва, че ние сме създаването на нов клас TMyClass, тя генерира от родител - TCustomControl.

Като цяло, на полето - това е нормално променливи, капсулирани в рамките на обекта. Те са обявени по същия начин, както при конвенционалните Pascal (виж примера по-долу, FStr - Тип поле String). Полетата може да бъде и обекти.

Това е един от най-важните части на обекта. Методите осигуряват един вид посредник между вътрешния (капсулирани) част на обекта и извън (достъпен извън него). Декларирани, както и функциите и процедурите по обичайния Паскал. Ето един прост пример:

Този пример илюстрира също добре същността на капсулиране. TMyClass клас капсулира FStr поле и прилагане на методи за запис - SetStr и четене - GetStr тази област.

За да се покрият методи предшественик клас в потомък клас, специална директива на регулиране. Когато се припокриват метод, трябва да се вземе предвид следното: метод, декларирани в класа на предшественик в частни клубове, вие не може да блокира в детето; Вие не може да обхваща и методите, които те са обявени, че е в детето по-малко видими, отколкото в клас предшественик; поради застъпването на методи за обработка на съобщения замени директивата не се използва. За да може тялото метод припокриващи се прилага по отношение на метода на предшественик, като се използва наследената директива. например:

Виртуални и динамични методи

Методите могат да бъдат виртуални или динамични. Те се различават по начина, по който решението на класическата проблема с "време - ресурс, ресурс - времето" (в този случай, на ресурса - е размерът на RAM).

Разликата между тях е в структурата на съответните маси методи VMT - Virtual Metod таблица (виртуален метод маса) и ДМТ - Dynamic Metod таблица (Таблица динамични методи). Диспечерски виртуален метод е по-бърз от динамичен, но, от друга страна, метод таблицата с виртуални (ВМТ) заема повече място в паметта, отколкото динамичното масата (DMT). Изборът е до програмиста.

Съобщението Работа Методи

Постоянният съобщението след директивата уточнява съобщението да бъдат обработени по този метод (в този случай, методът ще се нарича всеки път, когато движението на курсора на мишката се появява на този обект). Вид единствен параметър определя процедури, съобщения с данни (например, в този случай Msg.XPos и ​​Msg.YPos - текущите координати на курсора на мишката в компонента) ще бъдат предавани по никакъв начин формат. Описание константи и съответните видове поставени в устройството съобщения.

методи клас (или методи клас)

Pereregruzhaemye (претоварване) Методи

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

В този пример, когато потребител нарича метод SetX, в зависимост от премина параметър се нарича подходящ метод (за параметър тип String - първото цяло число - секунда).

Пример повикване на първия вариант на метода:

Пример повикване на второ изпълнение на метода:

Удобствата, предлагани от тази възможност, очевидно, например, в този случай потребителят не трябва да конвертирате Integer да String.

Конструктори и деструктори

Конструктори и деструктори се използват за създаване на класа и премахване на инстанция. Конструкторът заделя необходимата памет, инициализира полета, произвежда оригинално устройство за учебни цели за последваща употреба. Конструкторът е обявен с производителя и директиви трябва да се нарича - Създаване. В тялото на конструктора е първата стъпка е да се обадите на строителя родител. Destructor освобождава памет, заделена дизайнер, обхваща използваните файлове, потоци, и така нататък. Г. Деструкторът е обявен с директивата деструктор, тя трябва да се нарича Destroy. В тялото на деструктор деструктор се нарича предшественик в последния завой. например:

Имоти - е вторият най-важен (след практики) средства за осигуряването на взаимодействието на обекта с външния свят. След имот осигурява достъп до полетата на свойствата на обекти могат да се видят само в инспектор обекти (Object Inspector) Делфи.

имот StrCount: Integer прочетете GetStrCount; - само за четене имот (само за четене)
имот StrCount: Integer запис SetStrCount; - имот само за запис (само за запис).

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

Сега ще разгледаме как да се организира собственост, осигуряване на пряк достъп до елементите на масив - линии за предишния пример. За да направите това, не забравяйте да четат и пишат, чрез най-подходящия метод за производство, като добави в своето описание на един параметър - индекса, и определя вида на индекс за самия имот. На практика, това изглежда така:

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

Тези свойства трябва да бъдат третирани като масиви, например например тест TMyClass клас - Test.Str [5].

Както се вижда от примера, ако индексът е определен имот, не е необходимо да се използва метод, който поддържа индексиране за четене или писане. четене и писане метод като индекс (параметър Index, ако имат такива) за всеки имот ще бъде прехвърлена към стойността, която е посочена в директивата за индексиране. Но в тялото на метода, съгласно получената стойност на индекса можем да разберете кои от свойствата на лечението е било извършено, и да предприеме съответните действия.

Сенките на имота е много проста, ние приемаме нашите реплика от масив от низове:

Тази директива се използва за определяне стойностите по подразбиране за свойствата. На практика, както следва:

Тип на имота трябва да съответства на вида на стойност, която уточнява кога default'a.

С тази директива, свързана с едно често срещано погрешно схващане - мнозина вярват, че тя може да помогне за откриване на стойността на имотите. Това не е вярно. Фактът, че всички стойности на имотите, определени от програмист за определен обект в инспектора на обекта се съхраняват във форма файл (.dfm), който след това се прави с кода. Когато стартирате приложението автоматично създава обектите, определени в фазата на проектиране, и те са заредени и определят стойността на имотите. Това не е печеливша, на първо място, тъй като увеличава размера на събраните Търсейки файл, и второ, че всичко, прекарано на справедлив дял от времето, когато приложението се стартира.

Определете стойностите по подразбиране, можете да се отървете от тези неудобства. Например, ако стойността, определена като стойността по подразбиране съвпада със стойността, определена от програмист във фазата на проектиране, тази стойност няма да бъде записана във форма файл и след това съответно при стартиране няма да се заредят на заявлението. Но подразбиране задачи не ни освобождават от подготовката за работа на съответното поле. Това трябва да стане в конструктора, и така, че стойността на полето, за да съвпадне с стойност по подразбиране, определена за съответните имоти.

За отмяна на приетите стойности, определени в класа на предшественик, трябва да redeclare имота използване nodefaul директиви, като например:

За да ги промените стойности трябва да preobyavit собственост и използване на директивата по подразбиране, за да определите нова стойност по подразбиране, като например:

На такава характеристика може да бъде посочен, без да се посочва името му, като модел на MyClass клас TMyClass - MyClass [10] еквивалент MyClass.Str [10].

Тази директива е предназначена за определяне на твърд - да се запази стойността на имота под формата на файл или не. Той се добавя към края на определяне на собственост, а след това трябва да дойде или Булева (булев - фалшиви или TRUE) стойност или функция, която връща булева стойност, или булева област. Ако Булева вярно (TRUE), запазването на стойността на имотите се случва, ако FALSE (FALSE) - не. Този механизъм може да бъде полезно, ако има някакви съкращения полета и съответните им свойства. Възможна съвместно използване на директивите и по подразбиране се съхраняват. Пример (взета от модула за контрол)

Събития - това е единственият начин да се противопостави на всеки външен провокира действия в отговор на промяна в състоянието му.

Събитието като имот

В Делфи, всички събития са реализирани като имоти от определен тип. Този тип трябва да бъде предварително определена. Ето определението най-често в Delphi свойства:

Както може да се види, че е обща процедура (може да се използва и функция) с добавянето на директивите на обект.

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

Преди да се обадите на събитието не забравяйте да проверите дали има манипулатор за това събитие - това се прави с помощта на целеви функция. Ако не го направите, в отсъствието на водача получите грешка по време на работа, достъпа памет. Self - вътре в сградата - указател към себе си, което се минава, като параметър към подателя.

Конвенционалните правила за именуване

Накрая си струва да се каже за общоприетите правила за именуване на класовете и техните компоненти:

  • Името трябва да е ясно, какво е клас, метод, поле, или имущество;
  • името на класа се нарича Т, от тип;
  • до името понякога се добавя към инициалите на компонент разработчик или част от името на фирмата. Вася Иванов, той може да бъде - TviComponent;
  • имена поле е прието да се започне с F, от областта (област област);
  • свойства, наречени точно същата, както на полето (ако имотът е поставен в съответствие поле), като се пропуска F. Невярно FStr - ул собственост;
  • Имената на четене и запис методи приета форма чрез добавяне на името на имот Get и Set, съответно. Ул имота - четете метод GetStr, метод SetStr запис;
  • именуване на полета и събития за методи за четене и писане са предмет на същите правила като за имотите;
  • Имената на събитието прието да започват с On: OnClick, OnMouseMove.

За да инсталирате създаден класа в палитрата на компоненти, «Компонент» меню, изберете елемента «Install Компонент ...». В прозореца, който се показва, въведете следните стойности: Unit името на файла (име на модула, който съдържа инсталиран описанието клас), Търсене път (пътя през ";", на която Delphi ще търси определения модул), Име на пакета файл (път и партида файл име, които ще бъдат добавени към модула описанието за съответния клас, който сте инсталирали).

В описанието на претоварени методи вместо претоварване писмено навсякъде регулиране.