Справочник по компонентам Delphi. Часть 3 - Компонент TScreen
ОГЛАВЛЕНИЕ
Компонент 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. Два (доступных только для чтения) свойства дают информацию об этом списке:
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 ReadString(const Section, Ident, Default: string): string; | Возвращает строку из секции Section, являющуюся значением параметра Ident. При отсутствии секции или параметра возвращается строка Default. |
procedure WriteString(const Section, Ident, Default: string); | Записывает (или перезаписывает) в секцию Section строку Ident=Value. |
function Readlnteger(const Section, Ident: string; Default: Longint): Longint; | Возвращает значение параметра Ident из секции Section, преобразованное в целое число. В случае любых ошибок возвращается значение Default. |
function ReadBool(const Section, Ident: string; Default: Boolean): Boolean; | Работает как Readlnteger, но преобразует значение параметра в булеву переменную. |
procedure Writelnteger(const Section, Ident: string; Value: Longint); | Преобразует Value в строку и записывает его в качестве значения Ident в секции Section. |
procedure WriteBool(const Section, Ident: string; Value: Boolean); | Работает, как Writelnteger, но преобразует булево значение Value к виду '0'/"Г. |
procedure ReadSection(const Section: string; Strings: TStrings) ; | Считывает в набор строк Strings секцию с именем Section. Максимальная длина секции — 8191 байт. |
procedure ReadSectionValues(const Section: string; Strings: TStrings) ; | Считывает из секции Section в набор строк Strings только значения параметров. |
procedure EraseSection(const Section: string); | Удаляет всю секцию с именем Section. |