Справочник по компонентам Дельфи

Автор: Пользователь скрыл имя, 06 Февраля 2013 в 01:52, аттестационная работа

Описание работы

Класс TList -- универсальный список. Он представляет собой массив нетипированных указателей и поэтому годится для хранения набора любых, в том числе разнотипных, данных и объектов. При добавлении/удалении в список данные не создаются и не уничтожаются -- эта обязанность лежит на программисте. Приведем доступные ему методы и свойства класса.

Работа содержит 1 файл

componens.doc

— 980.33 Кб (Скачать)

 

function StrToDatefconst S: string): TDateTime;

Преобразует текстовую строку в дату типа TDateTime. Строка должна содержать два или три числа, разделенных символом, содержащимся в DateSeparator. Формат даты в строке определяется в соответствии со значением переменной ShortDateFormat.

function StrToTime(const S: string): TDateTime;

Преобразует текстовую строку S в значение времени. Должен использоваться формат HH:NN:SS, где SS -- может принимать значения 'AM' или ТМ', иначе означает секунды. Если необходимо получать время в 24-х часовой шкале, то элемент SS формата опускается. Если преобразование невозможно, возникает ИС EConvertError.

function

StrToDateTime(const S: string): TDateTime;

Преобразует текстовую строку S в дату и время в формате MM/DD/YY HH:NN:SS (элемент SS см. выше).

function FormatDateTime(const Format: string; DateTime: TdateTime): string;

Преобразует дату и время из типа TDateTime в текстовую строку, используя формат, задаваемый параметром Format (см. примеч. 1).

procedure DateTimeToStringfvar Result: string; const Format: string; DateTime: TDateTime);

Преобразует дату и время типа TDateTime в строку Result, используя формат, передаваемый параметром Format (см. примеч. 1).


 

Примечания:

1. Правила задания спецификатора формата для даты и времени отличаются от рассмотренных выше. В первую очередь надо иметь в виду то, что функции вроде FormatDateTime оперируют над одним значением TDateTime, а спецификаторы формата извлекают из него те или иные составные части. При этом могут использоваться:

с

Отображает дату, используя формат ShortDateFormat, затем отображается время в формате LongTimeFormat. Время не отображается, если дробная часть переменной DateTime нулевая.

d

Отображает число месяца без нуля в левом разряде (1-31).

dd

Отображает число месяца с нулем в левом разряде (01-31).

ddd

Отображает день недели в соответствии с сокращенными именами из переменной ShortDayNames.

dddd

Отображает день недели в соответствии с полными именами из переменной LongDayNames.

ddddd

Отображает дату в соответствии с форматом ShortDateFormat.

dddddd

Отображает дату в соответствии с форматом LongDateFormat.

m

Отображает месяц как число без нуля в левом разряде (1-12).

mm

Отображает месяц как число с нулем в левом разряде (01-12).


 

irirnm

Отображает месяц в соответствии с сокращенными именами из переменной ShortMonthNames.

П1ГПГПП1

Отображает месяц в соответствии с полными именами из переменной Long MonthN am es.

УУ

Отображает год двумя цифрами.

УУУУ

Отображает год четырьмя цифрами.

h

Отображает час как число без нуля в левом разряде (0-23).

hh

Отображает час как число с нулем в левом разряде (00-23).

n

Отображает минуты как число без нуля в левом разряде (0-59).

nn

Отображает минуты как число с нулем в левом разряде (00-59).

s

Отображает секунды как число без нуля в левом разряде (0-59).

ss

Отображает секунды как число с нулем в левом разряде (00-59).

t

Отображает время в соответствии с форматом ShortTimeFormat.

tt

Отображает время в соответствии с форматом LongTimeFormat.

am/pin

Отображает время в 12-часовой шкале. 'AM' означает часы до полудня, 'РМ' -- часы после полудня.

arnpm

Отображает время в 12-часовой шкале. При этом для времени до полудня отображается содержимое переменной TimeAMString, а после полудня -- TimePMString.

a/p

Отображает время в 12-часовой шкале, 'а' означает часы до полудня, 'р' -- часы после полудня.

/

Отображает символ -- разделитель даты, содержащийся в переменной DataSeparator.

 

 

Отображает символ -- разделитель времени, содержащийся в переменной TimeSeparator.

'XX'/'XX'

Символы, заключаемые в простые или двойные кавычки, отображаются как есть и не подвергаются форматированию.


 

Например, результатом вызова функции с параметрами

FormatDateTime (' "Совещание состоится в" dddd, dirrmim, yyyy, ' + ' "в" hh:nn', StrToDateTime('12/31/95 23:55')) ;

будет строка 'Совещание состоится в среду, 31 декабря 1995 в 23:55' (естественно, если вы переопределили значения элементов массива LongMonth-Names).

2. Спецификаторы am/pm, ampm, a/p используются вместе со спецификаторами h и hh.

3. Спецификаторы могут быть указаны как в верхнем, так и в нижнем регистрах символов -- это не играет роли.

4. Начальные значения всех используемых при форматировании даты и времени переменных берутся из секции [inti] файла WIN.INI.

2Л4.6. Функции для работы с памятью

Для работы с памятью Delphi предоставляет следующие функции:

function AllocMemfSize: Cardinal): Pointer;

SYSUTILS

Выделяет блок памяти размером Size и возвращает указатель на него. Выделенная память обнуляется.

function ReAllocMem(P: Pointer; CurSize, NewSize: Cardinal): Pointer;

SYSUTILS

Изменяет размер блока памяти размером CurSize, на который указывает Р. Если удается выделить блок размером NewSize, функция возвращает указатель на него. Содержимое старого блока переносится в новый. При этом, если CurSize>NewSize, часть содержимого отбрасывается, а если CurSize<NewSize, то остаток свободного места заполняется нулями.

function MemAlloc(Size: Longint): Pointer;

GRAPHICS

Выделяет блок размером Size. Если он меньше 64К, память выделяется в куче памяти Delphi, в противном случае -- глобальная.


 

Память, выделенная при помощи этих функций, может быть освобождена при помощи функции FreeMem.

У компонента же определение конструктора на удивление лаконично, но в нем присутствует указатель на Owner:

constructor Create(AOwner: TComponent);

Ответ прост: Owner -- тот объект, который при создании вызывает конструкторы всех объектов, владельцем которых он является, а при уничтожении -- их деструкторы. Таким образом, поместив при разработке компонент на форму, вы можете не заботиться о его создании и уничтожении в программе. Все свойства таких компонентов и все связи между ними запоминаются в файле формы .DFM и при запуске приложения создаются вновь автоматически.

Деструктор компонента

destructor Destroy;

уничтожает все дочерние компоненты (вызывая их деструкторы) и вычеркивает себя из списка компонента-владельца.

Конструкторы нужно вызывать только для тех компонентов, которые создаются вами во время исполнения. При этом они получат владельца и явный вызов деструктора не понадобится. Практически все конструкторы и деструкторы описанных ниже компонентов имеют тот же вид, что приводится здесь. Поэтому в дальнейшем их описания опущены, где это возможно.

Принадлежащие компоненты оформлены в виде списка, доступного через свойство Components. В классе TComponent предусмотрен набор методов и свойств для управления этим списком:

property Components[Index: Integer]: TComponent;

Возвращает указатель на компонент с индексом в списке Index.

property ComponentCount: Integer;

function FindComponent(const AName: string): TComponent;

Возвращает число компонентов в списке.

Возвращает ссылку на компонент-потомок с заданным именем.

procedure InsertComponent(AComponent: TComponent) ;

procedure Rerr.oveCornponent (AComponent: TComponent) ;

Вставляет компонент в конец списка.

Удаляет компонент из списка.

procedure DestroyComponents;

Удаляет все компоненты из списка.


 

Изменять владельца компонента во время исполнения можно, но без особой необходимости не нужно. Дело в том, что используемый для этого метод RemoveComponent не только вычеркивает компонент из списка, но и обнуляет указатель на него в соответствующем поле владельца. Например, если во время визуального проектирования вы поместили на форму кнопку Buttoni, а затем во время выполнения изменили ее владельца, то все обращения к ней в программе как к Buttoni стали недействительны.

Рассмотрим другие свойства компонента. Он может находиться в одном из множества следующих состояний:

property ComponentState: TCornponentState;

TComponentState = set of (csLoading, csReading, csWriting, csDestroying, csDesigning) ;

Эти состояния используются средой во время визуального проектирования, при загрузке/выгрузке компонентов из файлов ресурсов. Во время исполнения приложения множество состояний пусто. Лишь метод

procedure Destroying;

устанавливает в состоянии компонента флаг csDestroying и вызывает аналогичный метод у всех потомков из списка. Он также используется в деструкторе компонента.

Свойство Designlnfo относится к стадии разработки (конструирования) приложения:

property Designlnfo: Longint;

В нем хранятся координаты верхнего левого угла компонента во время разработки.

Элементы управления

Потомком TComponent является класс TControl -- элемент управления Windows. Все то, что видит (или может увидеть) пользователь в клиентской области вашей формы во время выполнения, порождено от класса TControl (клиентская область -- вся рабочая поверхность окна Windows, исключая заголовок, полосу меню и обрамление). Таким образом, потомки TControl являются визуалъньши компонентами. Далее будем называть их, как принято в Windows, элементами управления, или, где это уместно, просто элементами.

Отметим также подвох, связанный с названием "Библиотека визуальных компонентов" (Visual Components Library, VCL). Называя так свою библиотеку, разработчики из фирмы Borland были абсолютно правы, так как речь идет в первую очередь о новой -- визуальной -- технологии программирования. Но нужно помнить, что в VCL входит множество полноправных невизуальных компонентов. Например, меню -- оно, конечно, видимо на экране, но не в клиентской области; поэтому формально меню не является визуальным компонентом.

Большинство из свойств, которые вы будете видеть и изменять в визуальных компонентах, помещенных в Инспектор объектов, впервые описаны в классе TControl. Этот класс уже обладает "поведением" -- в нем предусматривается реакция на основные события.

Объект класса TControl не является окном Windows и в силу этого не может получить фокус ввода. Однако у него обязательно имеется родительский элемент (см. главу 2, раздел "Наследование. Методы"), обладающий этим свойством и отвечающий за показ дочернего элемента и обработку некоторых поступающих ему сообщений. (Раз TControl не является окном, то он не имеет контекста устройства для рисования. Этот контекст обеспечивает ему родитель. Тип родительского элемента -- TWinControl -- будет рассмотрен ниже).

Обратите внимание на терминологию: Owner -- это владелец компонента, а Parent -- его родитель, определяемый свойством

property Parent: TWinControl;

Элемент управления может обрабатывать сообщения Windows. Чтобы послать собственной функции обработки элемента сообщение Windows вида Msg с параметрами WParam и LParam, можно воспользоваться методом:

function Perform(Msg, WParam: Word; LParam: Longint): Longint;

С каждым элементом управления связан некий текст, который может играть роль заголовка или редактироваться. В зависимости от роли текст может содержаться в свойствах Caption:

(РЬ) property Caption: TCaption;

TCaption = string[255];

либо Text:

property Text: TCaption;

Не задумываясь о том, в каком именно свойстве содержится текст, получить доступ к нему можно посредством методов:

function GetTextBuf(Buffer: PChar; BufSize: Integer): Integer;

procedure SetTextBuftBuffer: PChar);

function GetTextLen: Integer;

Все три метода работают, посылая в собственную функцию-обработчик сообщений объекта (через вызов метода Perform) сообщения Windows вида WM_GETTEXT, WM_SETTEXT и WM_GETTEXTLENGTH.

Курсор, который будет устанавливаться на компоненте, определен свойством:

property Cursor: TCursor;

TCursor = -32768..32767;

В Delphi предопределены стандартные типы курсоров. Их имена:

crDefault,   crNone,  crArrow,   crCross,   crIBeam,  crSize, crSizeNESW,   crSizeNS,   crSizeNWSE,   crSizeWE, crUpArrow, crHourGlass, crDrag, crNoDrop, crHSplit, crVSplit, crMultiDrag, crSQLWait.

Этим именам соответствуют константы со значениями от 0 до -17; под этими идентификаторами все курсоры доступны в свойстве Cursors глобального объекта Screen. Можно добавить к ним собственные курсоры, загрузив их из ресурсов и присвоив положительные идентификаторы:

{$R cursors.RES} const

Curl = 1;

Cur2 = 2;

procedure TFormI. For-mCreate (Sender: TObject);

begin

Screen.Cursors[Curl] := LoadCursor(hinstance, 'CUR_1');

Screen.Cursors[Cur2] := LoadCursor(hinstance, 'CUR_2<);

end;

Познакомиться с имеющимися видами курсоров можно, скомпилировав прилагаемый на дискете пример CURSORS.

У каждого элемента есть два свойства, отражающие его стиль и состояние. Они могут сослужить программисту хорошую службу.

Первый из них -- набор флагов, управляющих поведением компонента:

property ControlStyle: TControlStyle;

TControlStyle = set of (csAcceptsControls, csCaptureMouse, csDesignInteractive, csClickEvents, csFramed, csSetCaption, csOpaque, csDoubleClicks, csFixedWidth, csFixedHeight);

Эти флаги означают, что данный компонент имеет следующие особенности:

с sAccept sControls

Может содержать другие (дочерние) элементы управления. Таким свойством обладают не все элементы: обладающие им называются группирующими и рассмотрены в отдельном

разделе.

csCaptureMouse

Может получать сообщения от мыши.

csDesignInteractive

Транслирует нажатия правой кнопки мыши в нажатия левой во время разработки.

csFramed

Имеет обрамление (черным прямоугольником единичной толщины).

csSetCaption

Позволяет при изменении имени менять синхронно и свойство Text (если Text не был явно переустановлен).

csOpaque

Фон элемента непрозрачен. Это означает, что при пересечении нескольких компонентов на экране располо„.:мный под ним виден не будет.

csClickEvents

Воспринимает щелчки мышью.

с sDoubleC1i cks

Воспринимает двойные щелчки мышью. Если этот флаг отсутствует, двойные щелчки воспринимаются как простые.

csFixedWidth, csFixedHeight

Имеет фиксированную ширину или высоту соответственно. Она не изменяется при масштабировании компонента.


 

Набор флагов, отражающих состояние элемента, описывается свойством:

property ControlState: TControlState;

TControlState = set of (csLButtonDown, csClicked, csPalette, csReadingState, csAlignmentNeeded, csFocusing, csCreating);

Они означают следующее:

csLButtonDown

Над элементом в данный момент нажата левая кнопка мыши.

csClicked

Если элемент может воспринимать щелчки мышью, этот флаг устанавливается, пока кнопка мыши находится в нажатом состоянии.

csPalette

Элемент поддерживает собственную палитру и должен получать извещения о перерисовке в необходимых случаях.

csReadingState

Элемент в данный момент читается из потока.


 

сsAlignmentNeeded

Элемент требует выравнивания относительно родительского (см. раздел "Положение, размеры и выравнивание элементов управления").

csFocusing

В данный момент происходит получение элементом фокуса ввода.

csCreating

Элемент создается (этот флаг в настоящий момент не задействован).

Информация о работе Справочник по компонентам Дельфи