Повторно използване на форми в Делфи

Повторно използване на форми в Делфи

Задачата на повторно използване на форми в Delphi може да бъде разделена на две части, а именно:

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

В първата част от проблема е от значение при създаването на различни диалози и форми за решаване на типични проблеми (например, за влизане-диалог). Появата на тези диалози почти стандартизирани, но по някаква причина, тези диалози, не се изпълняват (или не изпълнява точно както бихме искали) като част от Delphi библиотеки. Също толкова важно е този под-задача, когато създавате форми, което предполага възможност за последващо обаждане от други програмни езици и среди.

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

От версия на версия на Delphi форма файлов формат може да се промени. Това води до необходимостта от промени на файлове по време на прехода към нови версии на Delphi.

Най-често тя създава един вид споделена папка с формулярите, използвани в различни проекти. Въпреки това, в Делфи включен инструмент действа като хранилище на форми - хранилище обекти.

Използване на DLL като форма за съхранение

Ако е необходимо, използвайте формите и в други среди за разработка или в различни версии на Delphi в същото време, може да бъде "опакован" под формата на динамична връзка библиотека (DLL). Този метод позволява да разпространявате форма, без да предоставя изходния код, което понякога може да е полезно за търговски цели. При използване на този метод в DLL е обявен за износ на редица функции. Минималният набор - функция показва модален форма.

Като пример, един прост DLL да се създаде форма. За да направите това в IDE, изберете File / New / Други, и в диалога - меню "DLL Wizard". Запазване на модула под FormDLL за името. Библиотеката ще добави празната форма, която след това ще бъде показана в различни приложения (File / New / Form). Във формуляра подредите списъка с файлове, изпълвайки я с три стойности, както и два бутона - "ОК" и "Отказ". BorderStyle собственост на формата, за да зададете bsDialog и бутони ModalResult разполагат - в mrOk и mrCancel, съответно. Външен вид по-долу.

Остава да се напише функция код за показване на формата и се връща на избор на потребителя. По-долу е пълен изходен код на модула FormDLL

Това е всичко. Използвайте този DLL е много прост - трябва да го постави в директорията, в които се нуждаят от прилагането й. Можете да организирате като статично натоварване на DLL (при стартиране) и динамична (натоварване и разтоварване, когато е необходимо).

За организирането на статичното натоварване трябва да декларира функция от DLL, както следва:

след което функцията могат да бъдат използвани по обичайния начин за Delphi.

Организация на динамично натоварване е малко трудно. Първо, трябва да декларират правилно процесуално тип:

След това можете да заредите DLL и се обадете на функцията:

Този код се изключително опростена, например, няма грешки при проверката, когато зареждат библиотеки.

ActiveX форми

В Windows често се използва ActiveX компонент-ориентираното програмиране технология. На свой ред, Delphi позволява да се възползват от тази технология за самите дизайн ActiveX компоненти, както и за тяхното използване в приложения. Аз няма да отида в тук тънкостите на ActiveX технология, просто Предлагаме на вашето внимание един прост пример за създаване на ActiveX форми и използването му.

Е, нека да започнем - File / New / Други. В диалоговия прозорец, за да се премести в раздела ActiveX и изберете ActiveXForm. На появилата се диалогова кутия се появява на екрана

Параметър VCL клас Име - родителския клас за изпълнението на ActiveX-форми в Делфи

Параметър New ActiveX Име - името на класа на форма.

Звено за изпълнение на - име на модула, съдържащ описание на формата

Наименование на проекта - наименование на проекта

Threading Модел - резби модел. Той описва поведението при използването образува множество потоци.

Дръжте непокътнати всички опции в диалоговия прозорец и щракнете върху OK. В същото време ние се празен проект с празен формуляр. ListBox проведе на формата и я напълнете по същия начин, както когато се използва DLL. След това трябва да се създаде метод за получаване на избор на потребителя. За да направите това, изберете от менюто IDE View / тип библиотека.

Res добавят изход параметър от тип ВАРИАНТ *. Резултатът е показан на фиг. При натискане на бутона Refresh в същия диалогов прозорец, ние ще актуализираме формата на модула за изпълнение интерфейс (ActiveFormImpl1 в нашия проект). Няма да има празно за писане на код метод. Кодът на метод е много проста:

Остава да компилирате проекта (Ctrl + F9) и да се регистрирате ActiveX-форма в системата (Run / Регистрация ActiveX сървър). Може да се използва.

За да се възползвате от подготовката на компоненти в Делфи, казано, трябва да го инсталирате в Компонент палитра. Защото това е елемент от менюто Компонент / внос ActiveX Control. В диалоговия прозорец за импортиране, изберете от списъка ни ActiveFormProj1 библиотека и да го настроите върху бутона Install. По подразбиране, то се инсталира в раздела ActiveX. Създаване на нов проект за прилагане на файла / New | кандидатстване и основната му форма сложи ActiveFormX компонент. За да получите данни от потребителя, да се използва интерфейс, създаден от Get_Result ActiveX-форма:

Гореописаният метод две позволява да се произвеждат форми, които могат да бъдат използвани. Въпреки това, използването на тези методи за проектиране на форми с гъвкави възможности за конфигурация, а трудоемки. От началото на петата версия на Delphi, възможност за изграждане на форма на заготовки рамки. И след като поставите рамка във формата, че е възможно да се напише обработват събитие под формата на рамкови елементи. В една форма може да побере няколко кадъра и да организира тяхното взаимодействие един с друг.

Използвайте рамки е много проста. Първа стъпка - създаване на рамка (File / New / Frame). В този случай, една нова рамка ще бъде добавен към проекта. Втора стъпка - както и конструкцията на форми, поставени в рамка визуални и не-визуални компоненти. Може да напишете обработват събитие за компоненти за осъществяване на желаното поведение на компонентите на кадрите. Третият етап - да се сложи рамка във формуляра. За да направите това, Стандарт раздела компонент палитра, изберете иконата Рамки и щракнете с мишката върху формата. Списък на рамки, включени в проекта. Изберете желания кадър. All. В комбинация с хранилището обекти рамки сведе до минимум необходимостта от повторно проектиране елементите на потребителския интерфейс.

Хранилище - хранилища обекти

Последният начин за повторно използване на формата (както и рамки) - Използване Delphi хранилища обекти. Обект Хранилище - централизирано хранилище на форми, рамки и проекти заготовки, предназначени за повторна употреба в Делфи. Формата, която можем да видим, когато изберете елемент Файл меню / Нова / Други, показва съдържанието на хранилището. Добавете форма или рамка в хранилището не представлява трудност. Просто кликнете с десния бутон на мишката и изберете "Добави в хранилище". Системата показва диалоговия прозорец за добавяне.

Елементите на този диалог са достатъчно ясни:

Форми Списък - списък на форми и рамки са на разположение за добавяне.

Title - наименованието, под което стоката ще бъде видимо в хранилището

Описание - описание на артикула

Page - страницата, на която ще бъде показана на елемента.

Page Setup диалоговия хранилище и да се добавят обекти се извиква чрез IDE Инструменти / Хранилище меню. Ако сте привърженик, да се копае в червата на Делфи, вие казвате, че описанието на хранилището се съхранява във файл delphi32.dro. Файлът описание е файлов формат INI Windows.

заключение