Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Визуальное программирование / Визуальное программирование_лекция_19.pps
Скачиваний:
36
Добавлен:
07.06.2015
Размер:
201.73 Кб
Скачать

Создание перечислимого свойства и

свойства-множества

Свойства, принадлежащие к множественному типу, позволяют задать любую комбинацию из предлагаемого набора. Например, BorderStyle или Anchors.

11

Пример создания перечислимого

свойства и свойства-множества

type TWeekDay=(wdMonday, wdTuesday, wdWednesday, wdThursday, wdFriday, wdSaturday, wdSunday);

TArrow=Set of (arTop, arBottom, arLeft, arRight);

TMyButton = class(TButton)

 

private

 

{ Private declarations }

 

FMyInteger: integer;

 

FMyChar: Char;

 

FMyString: string;

 

FWeekday: TWeekDay;

 

FArrow: TArrow;

 

FMyCursor: TCursor;

 

FMyAnchors: TAnchors;

 

protected { Protected declarations }

12

Пример создания перечислимого

свойства и свойства-множества

public

{ Public declarations }

property MyInteger: integer read FMyInteger write FMyInteger; property MyChar: char read FMyChar write FMyChar; property MyString: char read FMyString write FMyString; property MyAnchors: char read FMyAnchors write FMyAnchors;

published

 

{ Published declarations }

 

property Weekday: TWeekday read FWeekday write FWeekday;

 

property MyCursor: TCursor read FMyCursor write FMyCursor;

 

property Arrow: TArrow read FArrow write FArrow;

 

end;

13

Пример создания перечислимого

свойства и свойства-множества

Все свойства доступны для чтения и записи. Программно доступны только свойства Weekday и MyCursor, описанные в разделе общедоступных описаний (Published).

Множественное свойство Anchor (якорь)

Перечислимое

свойство

Weekday

Пример создания перечислимого

свойства и свойства-множества

Все свойства доступны для чтения и записи. Программно доступны только свойства Weekday и MyCursor, описанные в разделе общедоступных описаний (Published).

Перечислимое

свойство

MyCursor

15

Создание свойства-массив

Свойства-массивы содержат индексированную совокупность однотипных значений. Например, свойство Lines. Значения этих свойств можно изменять только с помощью специального редактора.

16

Создание свойства-массив

unit Week; interface uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs; type

TWeek = class(TComponent) private

{ Private declarations }

function GetMonthName (const AIndex: Integer): String; function GetMonthNumber (const AMonthName: String): Integer; protected

{Protected declarations } public

{Public declarations }

property MonthName[const AIndex: Integer]: String read GetMonthName; default; property MonthNumber[const AMonthName: String]: Integer read GetMonthNumber; published

{ Published declarations } 17 end;

Создание свойства-массив

procedure Register;

 

implementation

 

const

 

MonthNames: array[1..12] of String[8]= ('Январь','Февраль','Март','Апрель','Май',

 

'Июнь','Июль','Август','Сентябрь', 'Октябрь', 'Ноябрь','Декабрь');

 

function TWeek.GetMonthName(const AIndex: Integer): String;

 

begin

 

if (AIndex<=0) or (AIndex>12) then

 

raise Exception.Create('Номер месяца должен быть от 1 до 12')

 

else Result:= MonthNames[AIndex];

 

end;

 

function TWeek.GetMonthNumber(const AMonthName: String): Integer;

 

var i:integer;

 

begin

 

Result:=0;

 

for i:=1 to 12 do begin

 

if Uppercase(AMonthName)=UpperCase(MonthNames[i]) then

 

Result:=1;

 

end;end;

18

Создание свойства-массив

procedure Register; begin

RegisterComponents('Samples', [TWeek]); end;

end.

19

Создание свойства-массив

Пример использования

procedure TForm1.Button1Click(Sender: TObject); begin

Label1.Caption:=Week1.MonthName[MonthOf(Date)]

end;

20