Автор: Пользователь скрыл имя, 06 Февраля 2013 в 01:52, аттестационная работа
Класс TList -- универсальный список. Он представляет собой массив нетипированных указателей и поэтому годится для хранения набора любых, в том числе разнотипных, данных и объектов. При добавлении/удалении в список данные не создаются и не уничтожаются -- эта обязанность лежит на программисте. Приведем доступные ему методы и свойства класса.
procedure SelectAll;
выделяет весь текст в редакторе. Доступны также рабочие методы по чтению/записи выделенного текста, которые используются свойством SelText:
function GetSelTextBuf(Buffer: PChar; BufSize: Integer): Integer-procedure SetSelTextBuf(Buffer: PChar);
Они могут быть полезны для получения текста типа pChar, который применяется в функциях API Windows.
Текст можно передавать и принимать из буфера обмена Windows -- для этого предназначены три следующих метода. Если в окне редактора выделен текст, то передается (заменяется) именно он. В противном случае в операции участвует весь текст:
procedure CopyToClipboard;
procedure CutToClipboard;
procedure PasteFromClipboard;
Очистить весь текст в редакторе можно при помощи метода:
procedure Clear;
Наконец, свойство
property Modified: Boolean;
устанавливает, изменялся ли текст в процессе редактирования.
Компонент TEdit
TObject-^TPersistent^
Модуль STDCTRLS
Страница Палитры компонентов Standard
Этот компонент не содержит собственного кода, в нем только опубликованы свойства его предка TCustomEdit. Он представляет собой редактируемую строку (далее -- просто редактор).
Стиль обрамления этого компонента
(Pb) property BorderStyle: TBorderStyle;
по умолчанию равен bsSingle.
Если свойство
(Pb) property AutoSize: Boolean;
равно True, компонент изменяет свою высоту в зависимости от размера шрифта (свойство Font). Для того чтобы изменения имели место, должен еще быть установлен стиль обрамления bsSingle.
Вводимый в редактор текст может автоматически подвергаться некоторым преобразованиям.
Преобразование, задаваемое свойством CharCase, позволяет автоматически преобразовывать все символы только в верхний или только в нижний регистр:
(Pb) property CharCase: TEditCharCase;
TEditCharCase = (ecNormal, ecUpperCase, ecLowerCase) ;
По умолчанию установлен стиль ecNormal и преобразования не происходит. Аналогично, свойство
(Pb) property OEMConvert: Boolean;
определяет необходимость автоматического преобразования вводимых символов из кодировки OEM в ANSI и обратно. Такое свойство часто бывает нужно при обработке текста в кодировке MS-DOS.
Два следующих свойства описывают поведение выделенного текста при переходе фокуса. Первое из них
(Pb) property AutoSelect: Boolean;
описывает реакцию редактирующего элемента при получении фокуса. Если оно установлено в True (по умолчанию это так), то при получении фокуса ввода весь текст в нем выделяется независимо от состояния свойства SelText. Если AutoSelect установлено в False, то при получении фокуса выделяется лишь то, что было выделено до его утери.
После утери фокуса редактором выделенный в нем текст обычно теряет цветовое выделение. Чтобы оно оставалось, установите в False второе свойство:
(Pb) property HideSelection: Boolean;
На длину текста может быть наложено ограничение. Свойство
(Pb) property MaxLength: Integer;
определяет максимальную длину текста редактора в символах. Если значение этого свойства равно 0, то ограничений на длину текста нет.
Свойство PasswordChar предназначено для ввода пароля с использованием редактора:
(Pb) property PasswordChar: Char;
Его значение -- это символ, используемый для отображения вместо любых вводимых символов.
Можно запретить возможность редактирования текста. Если значение свойства:
(Pb) property Readonly: Boolean;
равно True, текст изменить нельзя.
Вы можете отследить изменения текста в редакторе, обрабатывая поступающие события:
(Pb) property OnChange: TNotifyEvent;
Компонент ТМеmo
TObject->TPersistent->
--"TCu s t omMerno-"TMemo
Модуль STDCTRLS
Страница Палитры компонентов Standard
Компонент представляет собой многострочный редактор текста. Содержимое редактора представлено как объект, содержащий текст в виде набора строк:
(Pb) property Lines: TStrings;
Текст в редакторе может выравниваться по левому, правому краям и по центру:
(Р1э) property Alignment: TAlignment;
TAlignment = (taLeftJustify, taRightJustify, taCenter) ;
При наборе текста пользователь может ввести различные управляющие символы, в частности, клавишами <Enter> и <ТаЬ>. Эти символы могут быть обработаны редактором, а могут быть сразу переданы форме. В случае, если свойства
§ property WantReturns: Boolean;
property WantTabs: Boolean;
обращены в True, символы передаются редактору. Обратим внимание на то, что если установлено WantTabs, то с помощью клавиатуры передать фокус такому редактору можно, а после этого отдать другому компоненту -- нельзя. Если свойства равны False, символы передаются форме. В этом случае для ввода этих символов в редактор можно воспользоваться комбинациями <Ctrl>+<Enter> и <Ctrl>+<Tab> соответственно.
Два свойства отвечают за организацию прокрутки текста в окне редактора:
(Pb) property Wordwrap: Boolean ;
-- отвечает за поведение редактора при достижении правой границы во время набора текста. Если свойство равно True, то при этом происходит переход на новую строку. В случае False при достижении правой границы происходит горизонтальная прокрутка текста и пользователь может продолжать набор; на новую строку можно перейти, нажав <Enter>;
(Pb) property ScrollBars: TScrollStyle;
TScrollStyle = (ssNone, ssHorizontal, ssVertical, ssBoth) ;
-- устанавливает наличие полос прокрутки в вертикальном и горизонтальном направлениях. Если есть горизонтальная полоса, то свойство Wordwrap теряет смысл: вместо переноса происходит прокрутка.
Следующие свойства аналогичны определенным в TEdit -- BorderStyle, HideSelection, MaxLength, OEMConvert и ReadOnly.
Для получения полноценного приложения -- текстового редактора, в него нужно включить компонент TMemo и снабдить средствами чтения, записи и печати файлов, поиска и замены текста и т. п. Такой редактор вы найдете в примере DEMOEDIT на дискете, прилагаемой к книге.
Компонент TMaskEdit
TObject->TPersistent->
Этот специальный редактор допускает лишь ввод текста, соответствующего заданному программистом шаблону, например, паролей, регистрационных номеров, дат и других данных, которые имеют определенный формат представления.
Шаблон ввода в виде строки содержится в свойстве:
(РЬ) property EditMask: string;
Если он не определен, TMaskEdit работает как обычный редактор. Свойство
(Ro) property IsMasked: Boolean;
показывает, определен ли шаблон редактирования (значение EditMask не равно пустой строке).
"Черновой" текст, содержащий введенные пользователем символы, соответствует свойству:
property EditText: string;
В то же время отформатированный (наложенный на шаблон) текст содержится в свойстве Text.
Опишем правила, применяемые при составлении шаблона. Шаблон состоит из трех частей, разделяемых символом ';' или другим, заменяющим его. Первая часть является обязательной -- она определяет собственно маску ввода. Каждому символу в поле ввода редактора соответствует специальный символ в маске, определяющий, что можно ввести на этом месте.
Описатели маски ввода представлены в таблице:
Символ маски |
Означает, что на этом месте во вводимом тексте... |
L |
должна быть буква (A-Z, a-z, А-Я, а-я). |
I |
может быть буква. |
А |
должен быть буквенно-цнфровой символ. |
а |
может быть буквенно-цифровой символ. |
С |
должен быть любой символ ASCII. |
с |
может быть любой символ ASCII. |
0 |
должна быть любая цифра. |
9 |
может быть любая цифра. |
# |
может быть любая цифра или знаки '+', *-'. |
"Должен" означает, что пользователь обязан ввести в поле соответствующий символ, "может" -- что не обязан. Например, шаблон "LLOO" обязывает пользователя ввести пароль из двух букв и двух цифр, a "LL99" -- из двух букв и не более двух цифр.
Кроме описателей полей ввода, в шаблоне могут быть литералы и другие форматирующие символы.
Литералами будем называть символы, которые появляются при отображении строки ввода, но не могут изменяться пользователем и предназначены только для ее оформления. Перед литералом должен стоять символ 'V. Типичный пример -- ввод телефонных номеров. Для семизначного номера с возможностью ввода междугороднего кода нужен шаблон "!\(999\)000-0000;1;_". Тогда код города (если он есть) в отформатированном тексте будет заключен в скобки.
Специальные символы приведены в следующей таблице:
Символ |
Значение |
\ |
Символ, непосредственно предшествующий литералу. |
|
Разделитель для часов, минут и секунд при вводе времени. |
/ |
Разделитель для дней, месяцев и лет при вводе даты. |
\ |
Разделитель полей в маске. |
' |
Символ определяет подавление пробелов: если он есть в маске (в любом месте), в выходном тексте подавляются пробелы перед текстом; в противном случае -- идущие после текста. |
> |
Символ, после которого все вводимые буквы преобразуются к верхнему регистру. |
< |
Символ, после которого все вводимые буквы преобразуются к нижнему регистру. |
о |
После этой пары символов преобразование регистров отменяется. |
- |
Пустое поле при вводе (отображается как пробел). Курсор не будет останавливаться в этой позиции. |
Вторая часть шаблона -- это символ '0' или '!', определяющий, записываются ли литералы в обработанный текст (свойство Text). При 0 символы опускаются. Использование такого компонента при работе с базами данных дает возможность экономии места.
Например, пользователь ввел цифры 1234567. Тогда при действующем шаблоне "999\-99\-00;1;_" свойство Text будет равно "123-45-67", а для шаблона "999\-99\-00;0;_" - "1234567".
Третья часть содержит символ, который будет показываться в полях, предназначенных для ввода. Например, шаблон для ввода номеров машин "L 00\-00 LL;1;X" будет выглядеть как "X ХХ-ХХ XX". По умолчанию этот символ определяется значением константы DefaultBlank(cM. ниже).
Вторая и третья части шаблона могут отсутствовать.
Синтаксис шаблона может быть изменен за счет переопределения программистом специальных символов '_'> ';' и '0'. Для этого нужно изменить определенные в модуле Mask константы:
const
DefaultBlank: Char = '_';
MaskFieldSeparator: Char = ';';
MaskNoSave: Char = '0';
Для ввода шаблонов в Delphi есть довольно удобный специальный редактор, содержащий некоторые полезные образцы. К сожалению, в этой версии в нем есть ошибка -- при вводе маски он не всегда сразу воспринимает введенные изменения. В этом случае еще раз компилируйте создаваемое приложение.
Непосредственную проверку введенного текста осуществляет метод:
procedure ValidateEdit;
Он обычно вызывается при нажатии кнопки Default в модальной форме и при каждой утере фокуса редактором. При отсутствии введенных символов в тех местах, где они необходимы, возникает исключительная ситуация EDBEditError.
Метод
function GetTextLen: Integer;
возвращает длину текста Text.
Функции для форматирования текста
Форматирование текста можно осуществить и без объекта класса TMaskEdit, при помощи описанных в модуле MASK функций:
function FormatMaskText(const EditMask: string;
const Value: string): string;
-- осуществляет форматирование строки Value по шаблону EditMask;
function MaskGetMaskSave(const EditMask: string): Boolean;
-- возвращает значение True, если в обработанном тексте должны сохраняться литералы (соответствует значению второй части шаблона);
function MaskGetMaskBlank(const EditMask: string): Char;
-- возвращает символ, который будет использоваться в шаблоне для заполнения (третья часть шаблона);
function MaskGetFldSeparator(const EditMask: string): Integer;
-- возвращает положение разделителя, отделяющего первую часть шаблона от последующих. Если он отсутствует, функция возвращает значение -1.
Оформление приложения
Основное предназначение собранных в этой группе компонентов -- обеспечить придание форме нужного вида. При этом они могут так или иначе отобразить предназначенную для пользователя информацию -- рисунок, битовую картинку, текст. Все они (кроме THeader) являются потомками класса TGraphicControl.
Компонент TPaintBox
TObject->TPersistent-"
Модуль EXTCTRLS
Страница Палитры компонентов System
Самой простой надстройкой над канвой служит компонент TPaintBox, предназначенный для рисования. Можно даже рассматривать его как канву, снабженную атрибутами компонента. Она представлена свойством:
(Ro) property Canvas: TCanvas;
Помимо канвы, компонент имеет свой цвет (фона)
(Pb) property Color: TColor;
и шрифт:
(Pb) property Font: TFont;
Изобразить на канве компонента что-либо можно, предусмотрев обработчик события:
(Р1э) property OnPaint: TNotifyEvent;
Компонент TShape
TObject->TPersistent-"
Модуль EXTCTRLS
Страница Палитры компонентов Additional
Этот компонент предназначен только для того, чтобы нарисовать и показать на своей поверхности простейшую геометрическую фигуру:
(Pb) property Shape: TShapeType;
Рисуемая фигура -- одна из предопределенных в множестве:
TShapeType = (stRectangle, stSquare, stRoundRect, stRoundSquare, stEllipse, stCircle) ;
Размеры фигуры соответствуют размерам компонента. Если задан квадрат или круг, а ширина и высота компонента не равны между собой, то сторона или диаметр фигуры будут равны длине меньшей стороны компонента.
Кисть и перо, которыми рисуется и закрашивается фигура, представлены свойствами:
(Pk) property Brush: TBrush;
(Р1э) property Pen: TPen;
Метод, исполняемый при изменении фигуры, кисти или пера
procedure StyleChangedfSender: TObject);
выполняет перерисовку компонента.
Компонент TBevel
TObject-"TPersistent-"