Страница 16 из 42
Компонент TScreen TScreen = class(TComponent); Этот компонент представляет свойства дисплея, на котором выполняется приложение. Поскольку экземпляр данного класса только один (он создается системой при запуске приложения), то большинство методов и свойств имеют информационный характер и недоступны для записи. Курсор приложения, общий для всех форм, доступен через свойство: property Cursor: TCursor; Часто приходится включать "песочные часы" на время выполнения длительной операции. Лучше всего это сделать следующим образом: Screen.Cursor := crHourglass; try (Calculations...} finally Screen.Cursor := crDefault; end; Возвращает дескриптор курсора с индексом Indexсвойство: property Cursors[Index: Integer]: HCURSOR; Няпомшм, что шщексы зарегистрированных курсоров лежат в диапазоне от -17 (crSQLWait) до 0 (crDefault). Рассмотренный ниже фрагмент кода при инициализации формы заносит имена всех зарегистрированных в системе курсоров в список ListBoxl. Затем, при выборе элемента списка, устанавливается соответствующий ему курсор. procedure TFormI.FormCreate(Sender: TObject); type TGetStrPunc = function(const Value: string): Integer of object; var CursorNames: TStringList; AddValue: TGetStrPunc; begin CursorNames := TStringList.Create; AddValue := CursorNames.Add; GetCursorValues(TGetStrProc(AddValue)); ListBoxl.Items.Assign(CursorNames) ; end; procedure TFormI-ListBoxlClick(Sender: TObject); begin Screen.Cursor := StringToCursor(ListBoxl.Items[ListBoxl.Itemlndex]); end; Имена всех установленных в системе шрифтов помещаются в список, опреде-ленньш в свойстве: (Ro\ property Fonts: TStrings; Компонент сообщает неизменяемые свойства экрана (в данном видеорежиме). Его размеры в пикселах определены в свойствах: (ro)property Height: Integer; (Ro) property Width: Integer; Число точек на дюйм дисплея содержится в свойстве: (Ro) property PixelsPerInch: Integer; При появлении каждая форма заносит себя в список форм глобального объекта Screen. Два (доступных только для чтения) свойства дают информацию об этом списке: J property Forms[Index: Integer]: TForm; property FormCount: Integer; Нужно иметь в виду, что в списке указаны только формы, открытые приложением, а не все окна системы. Следующие два свойства указывают на активную в данный момент форму и ее активный элемент управления: (Ro) property ActiveControl: TWinControl; (ro)property ActiveForm: TForm; При их изменении генерируются соответственно события: property OnActiveControlChange: TNotifyEvent; property OnActiveFormChange: TNotifyEvent; Файлы инициализации TIniFile = class(TObject) Этот класс — надстройка над файлом инициализации (его расширение .INI) и процедурами чтения и записи в него значений разных типов. Обратите внимание, что все читаемые и записываемые строки имеют тип string (а не pChar, как в стандартном API Windows). Конструктор класса constructor Create(const FileName: string); создает объект, соответствующий файлу инициализации с именем FileName. В дальнейшем оно доступно через свойство: (Ro) property FileName: string; Файл инициализации состоит из строк вида "параметр=значение". Такие строки сведены в секции; имена секций заключаются в квадратные скобки. Методы класса, посредством которых осуществляется работа с файлом, приведены в таблице: function ReadStringfconst Section, Ident, Default: string): string; procedure WriteString(const | Возвращает строку из секции Section, являющуюся значением параметра Ident. При отсутствии секции или параметра возвращается строка Default. | | Записывает (или перезаписывает) в секцию Section строку Ident=Value. | | function Readlnteger(const Section, Ident: string; Default: Longint): Longint; | | | Возвращает значение параметра Ident из секции Section, преобразованное в целое число. В случае любых ошибок возвращается значение Default. Преобразует Value в строку и записывает его в качестве значения Ident в секции Section. Работает как Readlnteger, но преобразует значение параметра в булеву переменную. | | procedure Writelnteger(const Section, Ident: string; Value: Longint); function ReadBool(const Section, Ident: string; Default: Boolean): Boolean; | | procedure WriteBool(const Section, Ident: string; Value: Boolean); procedure ReadSection(const Section: string; Strings: TStrings) ; procedure ReadSectionValues(const Section: string; Strings: TSCrings) ; | Работает, как Writelnteger, но преобразует булево значение Value к виду '0'/"Г. | | Считывает в набор строк Strings секцию с именем Section. Максимальная длина секции — 8191 байт. | | Считывает из секции Section в набор строк Strings только значения параметров. | | procedure EraseSection(const Section: string); | | Удаляет всю секцию с именем Section. | | |