Структура на Delphi-приложение



страница2/6
Дата18.09.2016
Размер401.28 Kb.
#10237
1   2   3   4   5   6

Компоненти


Дефиниране на свойства /характеристики/

Свойството най-общо представлява име, за което са дефинирани методи за четене /read/ и писане /write/ или чрез което се осъществява директен достъп до данни. Всеки път, когато прочитате или записвате стойността на свойството, можете да осъществите досъп до поле на класа или да извикате метод. Например дефиницията на свойството Month на обекта, представляващ дата, има вида:


property Month: Integer

read FMonth write SetMonth;
За да получите стойността на свойството Month, този код ще прочете стойността на полето FMonth, докато при смяна на стойността ще се извика методът SetMonth. Директивата write на свойството може да бъде пропусната. Така се създава свойство само за четене /read-only/. Технически можете да пропуснете и read на свойството, при което дефинирате свойство само за запис /write-only/. Свойствата предназначени за достъп по време на създаване на формата /design-time/ се декларират в частта published на декларацията на класа. Всички други, декларирани в частта public, не са достъпни по време на създаване на формата, а само по време на изпълнение на програмата /run-time/. Read-only свойствата се дефинират в частта public /protected или private/. Published свойствата трябва да са разрешени както за четене, така и за запис. За да видите стойността на published свойство по време на създаване на формата или да го промените, можете да използвате Object Inspector.

Пример:


Type

TForm1=class (TForm)



private

FClicks: Integer;



procedure SetClicks(const Value: Integer);

public

property Clicks: Integer

read FClicks write SetClicks;

end;

implementation



procedure TForm1.SetClicks(const Value: Integer);

begin

FClicks:=Value;



end;

Въпреки че всеки компонент има свой набор от свойства, съществуват и такива, които са общи за всички компоненти:



Свойство

Описание

Align

Определя подравняването на контрола в областт на родителския контрол

AutoSize

Показва дали контролът трябва да определя размера си спрямо съдържанието си

Caption

Заглавие на контрола

Color

Задава фоновия цвят на контрола

Ctl3D

Задава дали контрола ще има триизмерен изглед

Cursor

Определя показалеца на мишката при преминаване над контрола

DragCursor

Определя показалеца на мишката при влачене

DragMode

Определя дали контролът поддържа drag-and-drop функционалност

Enabled

Определя дали контролът е активен или не

Font

Определя шрифта, с който ще се извежда текста в контрола

Height

Определя вертикалния размер на контрола

HelpContext

Задава контекстно число, което ще се използва за автоматично извикване на помощна инф.

Hint

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

Left

Хоризонтална координата на горния ляв ъгъл на компонента

Name

Уникално име на инстанцията на компонента, което се използва в програмата

Parent

Задава родителския контрол на текущия

ParentColor

Задава дали компонента ще използва свойството Color от родителя

ParentCtl3D

Задава дали компонента ще използва свойството Ctl3D от родителя

ParentFont

Задава дали компонента ще използва свойството Font от родителя

PopupMenu

Задава контекстно неню на контрола

ShowHint

Задава дали ще се показва подсказка

TabOrder

Задава номера на контрола при обхождане на контролите с клавиша Tab в родителя

Tag

4-байтово числово поле редназначено за съхраняване на допълнителна информация

Top

Вертикалната координата на горния ляв ъгъл на контрола

Visible

Задава дали контролата е видима

Width

Хоризонтален размер на контрола

Стойността на свойството Name се използва, за да се дефинира име на обекта в декларацията на класа на формата. С това име по нататък се обръщате към обекта. Ето защо стойността на това свойство трябва да се подчинява на правилата за идентификатор в езика Pascal. Свойството Tag е допълнителен адрес в паметта, където можете да запишете собствени данни без да се налага да създавате собствен клас. Това свойство съдържа 4-байтово число, в което можете да съхраните указател, обект или нещо друго.

Някои от общите за компонентите методи са следните:

BeginDrag

Стартира операция ръчно влачене

ClientToScreen

Преобразува клиентските координати в екранни

Create

Създава нова инстанция /конструктор/

Destroy

Унищожава инстанция /деструктор/

EndDrag

Ръчно прекратяване на операцията влачене

Free

Изтрива обекта от паметта /за формите се използва Release/

GetTextBuf

Връща текста или заглавието на контрола

GetTextLen

Връща дължината на текста или заглавието на контрола

ScreenToClient

Преобразува екранните координати в клиентски

SetBounds

Променя позицията и размера на контролите

SetTextBuf

Задава текста или заглавието на контролите

Update

Веднага пречертава контрола, ако преди това е имало други заявки за пречертаване

Стандартни компоненти



  • Label

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

  • Edit

Edit контролът позволява въвеждането на един ред текст от потребителя. Той може да се използва и за визуализация на текст, подобно на контрола Label. Този контрол е необходим, когато искате да позволите на потребителя да избере текст и да го копира в Clipboard. Edit контролът използва свойството Text, за да представи текста. Ако желаете да се въвеждат само специфични символи, трябва да обработите събитието OnKeyPress.

  • MaskEdit

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

  • Memo

Memo контролът позволява въвеждането на текст от потребителя на повече от един ред. Той е подходящ за представянето на по-голямо количество информация. Обемът на текста обаче не може да надхвърли 32KB. Можете да работите с текста ред по ред, използвайки свойството Lines от тип TStrings, или с целия текст, използвайки свойството Text от тип TCaption.

  • CheckBox и RadioButton

Съществуват два стандартни контрола на Windows, които позволяват на потребителя да избере между няколко възможности. Контролът CheckBox представлява поле за отметка, което означава, че съответната възможност може да бъде избрана без значение от състоянието на други полета за отметки. Задаването на стойност True на свойството AllowGrayed ви позволява да показвате три състояния на полето – избрано, неизбрано и деактивирано, които могат да се променят, когато потребителят избира полето.

Контролът RadioButton позволява само един възможен избор от множество възможности. Два такива контрола в една форма или в една група не могат да бъдат избрани едновременно и единият от тях трябва винаги да е избран. За да създадете група от RadioButton контроли, използвайте контролът GroupBox, който позволява както визуално, така и функционално отделяне на групи. Подобно действие има и RadioGroup контролът, който може да се използва специално за радио бутони. Всеки радио бутон в рамките на групата е елемент на списък. Заглавието на избран елемент се получава по следния начин:

Text:=RadioGroup1.Items [RadioGroup1.ItemIndex];

Контролът RadioGroup може автоматично да подравнява радио бутоните си в една или повече колони в зависимост от свойството Columns. Той ви позволява да добавите нови елементи по време на изпълнение на програмата, като просто добавите нови низове към списъка от низове Items.



  • Button

Бутоните най-често се използват в диалоговите прозорци. С помощта на контролът Button ножете да инициирате действия. За идентификация на бутона от потребителя използвайте свойството Caption, което е от тип String.

  • BitBtn

Контролът BitBtn ви позволява да поставите върху него не само текст, но и картинка /bitmap/, като използвате свойството Glyph. Свойството Kind ви позволява лесно да създадете стандартни бутони от вида на Ok, Cancel, Help и др., при което бутона се асоциира с предварително дефинирани картинка и текст. Свойството ModalResult определя начина, по който бутонът затваря родителската си форма. Когато бутонът е натиснат, свойството ModalResult на формата приема стойността на свойството ModalResult на бутона. В случай, че една форма е визуализирана модално, потребителят трябва да я затвори, ако иска да продължи работата си с други форми. Повечето диалогови прозорци са модални. Ако формата не модална, тя може да стои на екрана, докато потребителя работи с други форми. За да извикате формата модално използвайте метода ShowModal, в противен случай- метода Show. Методът ShowModal е функция, която връща като стойност свойството ModalResult.

  • SpeedButton

Контролът SpeedButton притежава свойства, които ви позволяват да поставите върху него графични изображения, представящи различните му състоянията. Възможно е няколко такива контрола да работят заедно като група. Групирайки подходящо контроли от този тип в панели, можете да създавате палитри с инструменти. Бутоните от една и съща група трябва да имат една и съща стойност на свойството GroupIndex. Когато GroupIndex има стойност 0 съотвения бутон е независим от останалите на формата. При натискане той може да възвърне своето ненатиснато състояние. Когато GroupIndex има стойност по-голяма от 0, бутонът остава в натиснато състояние, дори и след като потребителя отпусне бутона на мишката. В случай, че свойството AllowAllUp има стойност True, при повторно натискане бутонът ще възвърне нормалното си състояние. Ао това свойство има стойност False само един от бутоните в групата може да бъде избран в даден момент.

  • ListBox

Съществуват класове, кото не представят компоненти. Това са класовете на списъците. Всъщност това са динамични масиви, а не стандартни свързани списъци. С тях можете да работите, използвайки нотацията за масиви, както за получаване, така и за промяна стойностите на елементите им. Използвани методи за достъп са Add, Insert, Delete. Метод за търсена е IndexOf.

function Add(const S:String): Integer; /добавя нов елемент в края на списъка/

procedure Insert(Index: Integer; const S:String); /добавя нов елемент на позиция, указана от параметъра Index/

procedure Delete(Index: Integer); /изтрива елемент от позиция, указана от параметъра Index/

function IndexOf(const S:String): Integer; /дава позицията на елемента в списъка/

Най-общо има три различни класа списъци:

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

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

Класът TCollection дефинира хомогенен списък от обекти, които са притежание на класа на колекциите.

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

При избирането на елемент от компонента ListBox се използват свойствата Items и ItemIndex. Свойството Items е от тип TStrings. Обектите от този тип имат както списъци с низове, така и списъци с обекти, асоциирани с низове.

property Items: TStrings;

property ItemIndex: Integer; /дава позицията на избрания в момента елемент от списъка/

Компонентът ListBox позволява множествен избор. Това се постига чрез свойството MultiSelect. Броя на избраните елементи можете да получите, използвайки свойството SelCount. Избраните елементи се определят от масива Selected, който има същия брой елементи както списъка и е от тип Boolean.



property Selected: Boolean;

Компонентът ListBox предлага фиксиран избор, т.е. позволява на потребителя да избере само измежду елементите от списъка, но не и да нова зададе възможност. Възможно е да записвате и зареждате съдържанието на списъците от текстови файлове като използвате методите SaveToFile и LoadFromFile.



procedure SaveToFile(const FileName: string);

procedure LoadFromFile(const FileName: string);

  • ComboBox

Компонентът ComboBox комбинира текстово поле с падащ списък. Неговото поведение се променя в зависимост от стойността на свойството Style. Стилът csDropDown позволява директно редактиране на елементите от списъка и позволява показване на този списък при заявка. Стилът csDownList не позволява редактиране, а стилът csSimple определя, че падащият списък ще се показва винаги. Достъпът до избрания елемент се осъществява посредством свойството Text.

  • StringGrid

Компонентът StringGrid може да съхранява стойности, низове и да визуализира избрани по някакъв критерий стойности. Основната структура на компонента включва фиксиран брой колони и редове, които задават регион, т.е. той може да се разглежда като таблица:

property Cells[ACol, ARow: Integer]: string;

Използвайте свойството Cols, за да си осигурите достъп до клетките на една колона. Броят на всички колони в таблицата можете да получите от свойството ColCount.



property Cols[Index: Integer]: TStrings;

property ColCount: Longint;

Достъп до клетките на един ред получавате от свойството Rows. Свойството RowCount ви дава броя на всички редове в таблицата.



property Rows[Index: Integer]: TStrings;

property RowCount: Longint;

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



property ColWidths[Index: Longint]: Integer;

property RowHeights[Index: Longint]: Integer;

Можете да позволите на потребителя да променя размерите на колоните и редовете /goColSizing и goRowSizing/, да премества цяла колона или ред на нова позиция /goRowMoving и goColMoving/, да позволява избирането на региони от таблицата. За целта използвайте свойството Options:



property Options: TGridOptions;


Каталог: project -> staf
project -> Г бнр безработицата в Ловешко бележи спад за пореден месец
project -> И радиационна защита
project -> Програма на С, която генерира и извежда на екрана редица от числа на Фибоначи: от 1 до зададено от потребителя число оценка: 4
project -> Нсорб до есента ще има единен регистър за хора с психични заболявания
staf -> Бази данни
staf -> Най-популярният език за създаване на интерактивни и динамични web сайтове е php
staf -> Управление на съобщенията за грешка


Сподели с приятели:
1   2   3   4   5   6




©obuch.info 2024
отнасят до администрацията

    Начална страница