ВІКІСТОРІНКА
Навигация:
Інформатика
Історія
Автоматизація
Адміністрування
Антропологія
Архітектура
Біологія
Будівництво
Бухгалтерія
Військова наука
Виробництво
Географія
Геологія
Господарство
Демографія
Екологія
Економіка
Електроніка
Енергетика
Журналістика
Кінематографія
Комп'ютеризація
Креслення
Кулінарія
Культура
Культура
Лінгвістика
Література
Лексикологія
Логіка
Маркетинг
Математика
Медицина
Менеджмент
Металургія
Метрологія
Мистецтво
Музика
Наукознавство
Освіта
Охорона Праці
Підприємництво
Педагогіка
Поліграфія
Право
Приладобудування
Програмування
Психологія
Радіозв'язок
Релігія
Риторика
Соціологія
Спорт
Стандартизація
Статистика
Технології
Торгівля
Транспорт
Фізіологія
Фізика
Філософія
Фінанси
Фармакологія


ГОБУ СПО ВО «Борисоглебский техникум информатики и вычислительной техники»

ГОБУ СПО ВО «Борисоглебский техникум информатики и вычислительной техники»

 

 

КУРС ЛЕКЦИЙ

По разделу ПМ 02.4. Программирование информационного контента на языках высокого уровня

ПМ.02 Разработка, внедрение и адаптация программного обеспечения отраслевой направленности

Учебно-методическое пособие

для преподавателей и студентов

Составитель: Рысцова Е.Н.

Рецензент: Маликова З.П.

Г.

Лекция № 1. Интегральная среда Delphi. Окна Delphi.

Среда Delphi. Главное окно.

Среда Delphi – это сложный механизм, обеспечивающий высокоэффективную работу программиста. Часто ее называют интегрированной средой разработки. Она включает ряд окон, содержащих различные управляющие элементы.

После загрузки интерфейс Delphi 5 первоначально имеет 4 окна:

- главное окно (имеет заголовок Delphi 5 – Project1);

- окно Инспектора объектов (Object Inspector);

- окно Конструктора формы (Form1);

- окно Редактора кода (Unit1.pas);

Не смотря на наличие многих окон, Delphi является однодокументной средой, то есть позволяет работать одновременно только с одним проектом. Название проекта выводится в заголовке главного окна. Все окна Delphi можно перемещать, убирать с экрана и изменять их размеры.

Главное окно занимает самую верхнюю часть экрана. Если свернуть главное окно, то происходит минимизация всего интерфейса Delphi и всех открытых окон, а при закрытии главного окна работа с Delphi прекращается. В главном окне Delphi отображается:

- главное меню;

- панели инструментов;

- палитра компонентов.

Главное меню содержит обширный набор команд для доступа к функциям Delphi и содержит следующие Разделы:

· File - работа с файлами.

· Edit - работа с областью обмена, размещение компонентов на форме.

· Search - поиск, замена заданного символа или строки в тексте.

· View - отображение различной информации.

· Project - управление проектом: добавление и удаление файлов, сборка проекта, установка параметров проекта.

· Run - запуск и отладка программы.

· Component - разработка новых компонентов, установка готовых компонентов.

· Database - запуск программ, облегчающих построение приложений баз данных.

· Tools - настройка параметров интегрированной среды разработки, запуск вспомогательных программ.

· Window - активизация нужного окна интегрированной среды разработки.

· Help - получение справочной информации.

Панели инструментов находятся под главным меню в левой части главного окна и содержит пиктографические кнопки для вызова часто используемых команд главного меню. Всего имеется 5 панелей инструментов:

- Standard (стандартная); - View (просмотр); - Debug (отладка);

- Custom (пользовательская); - Desktop (рабочий стол).

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

Компонент – это заранее приготовленный фрагмент программы, который можно вставлять, если в этом есть необходимость, в разрабатываемое приложение.

Первоначально палитра компонентов имеет следующие вкладки:

- Standard (стандартная)

- Additional (дополнительная)

- Win32 – 32-разрядный интерфейс Windows

- System – доступ к системным функциям

- Data Access – доступ к БД с помощью BDE

- Data Controls – создание элементов управления данными

- ADO – связь с БД с использованием объектов данных ActiveX

- InterBase – обеспечение непосредственного доступа к одноименной БД

- Midas – разработка приложений для распределенных БД

- Internet Express – создание одноименных приложений, которые являются одновременно приложением, Web-сервером и приложением-клиентом распределенной БД.

- Internet – создание приложений Web-сервера для сети Internet

- FastNet – обеспечение протоколов доступа к сети Internet

- Decision Cube – многомерный анализ

- QReport – составление отчетов

- Dialogs – создание стандартных диалоговых окон

- Win3.1 – интерфейс Windows 3.x

- Samples - поставляемые в качестве примера

- ActiveX – ActiveX-компоненты

- Servers – оболочка VCL для общих серверов СОМ.

Поля

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

При создании новых классов объект-потомок наследует все поля родителя, при этом удаление или переопределение этих полей невозможно. Допуска­ется добавление новых полей, таким образом, чем дальше по иерархии ка­кой-либо класс находится от класса TObject, тем больше полей он имеет.

Свойства

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

Пример.Описание свойств.

type TNewClass = class(TObject)

private

FCode: integer;

FSign: char;

FNote: string;

Published

property Code: integer read FCode write FCode;

property Sign: char read FSign write FSign;

property Note: string read FNote write FNote;

end;

Для доступа к полям Fcode, FSign и Fnote, которые описаны в защищен­ном разделе и не доступны программисту, используются свойства code, sign и Note, соответственно.

Методы

Методпредставляет собой подпрограмму (процедуру или функцию), яв­ляющуюся элементом класса. Описание метода похоже на описание обыч­ной подпрограммы модуля. Заголовок метода располагается в описании класса, а сам код метода находится в разделе реализации, где имеет состав­ное имя, включающее указание типа класса.

Метод, объявленный в классе, может вызываться различными способами, что зависит от вида этого метода. Вид метода определяется модификатором, который указывается в описании класса после заголовка метода и отделяет­ся от заголовка точкой с запятой.

По умолчанию все методы, объявленные в классе, являются статическими и вызываются как обычные подпрограммы.

Методы, которые предназначены для создания или удаления объектов, на­зываются соответственно конструкторами и деструкторами.

События

Событиепредставляет собой свойство процедурного типа, предназначенное для обеспечения реакции на те или иные события. Присваивание значения этому свойству (событию) означает указание метода, вызываемого при наступлении события. Соответ­ствующие методы называются обработчиками событий.

События Delphi бывают различных типов, зависящих от вида этого события. Самым простым является тип TNotifyEvent, который характерен для нотификационных (уведомляющих) событий. Этот тип описан следующим образом.

type TNotifyEvent = procedure (Sender: TObject) of object;

Описание содержит один параметр sender, указывающий объект-источник события.

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

 

Лекция № 4. Общие свойства визуальных компонентов. События, методы. Обращение к объектам.

 

Обращение к объектам.

Для изменения значения свойства программным путем используется следующий формат:

Имя компонента . Имя свойства := значение;

Например:

Form1.Caption:=’Программа № 1’;

Button1.Caption:=’Вычислить’;

Label1.Color:=clBlue;

Label1.Font.Color:=clWhite;

Методы вызываются. Например:

Form1.Show;

Edit1.Clear;

Edit2.SetFocus.

 

4. Основные события.

К общим группам событий можно отнести:

- выбор управляющего элемента;

- перемещение указателя мыши;

- нажатие клавиш клавиатуры;

- получение и потеря элементом фокуса ввода;

- перемещение объектов методом Drag – and – Drop.

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

При щелчке любой кнопкой мыши генерируются еще два события: OnMouseDown, возникающее при нажатии кнопки мыши, и OnMouseUp, возникающее при отпускании кнопки мыши.

При двойном щелчке левой кнопкой мыши в области компонента генерируется событие OnDblClick.

При перемещении указателя мыши над компонентом генерируется событие OnMouseMove.

При работе с клавиатурой генерируются события OnKeyPress и OnKeyDown, возникающие при нажатии клавиши, а также событие OnKeyUp, возникающее при отпускании клавиши. Событие OnKeyPress генерируется при каждом нажатии алфавитно-цифровых клавиш и обрабатывается тогда, когда требуется реакция на нажатие одной клавиши, имеющей ASCII-код. Для обработки других клавиш можно использовать события OnKeyDown и OnKeyUp, возникающие при нажатии любой клавиши. В обработчике данных событий используется переменная Key, передающая код клавиши и программист может изменить фактический код клавиши на нужный. Это полезно при фильтрации нажатия каких-либо клавиш.

Технология Drag – and – Drop позволяет перемещать различные объекты, например, элементы из одного списка в другой. При этом используются два элемента управления: источник и приемник. С этой технологией связаны следующие события:

- OnStartDrag – генерируется источником в начале выполнения операции перемещения.

- OnDragOver – вызывается приемником, когда перемещаемый объект находится над ним.

- OnDragDrop – вызывается приемником, когда объект перемещается на него.

- OnEndDrag – генерируется источником, когда операция перемещения завершается.

 

Лекция № 5. Визуальные компоненты для отображения текстовой информации. Основные свойства компонентов.

 

1. Отображение текста

Текстпредставляет собой надпись (ярлык) и чаще всего используется в ка­честве заголовков для других управляющих элементов, которые не имеют собственного свойства Caption. Для отображения надписей, в первую оче­редь, используется компонент Label (метка) (вкладка Standard).Он пред­ставляет собой простой текст, который не может быть отредактирован пользователем при выполнении программы.

Для управления автоматической коррекцией размеров компонента Label в зависимости от текста надписи служит свойство AutoSize типа Boolean. Ес­ли значение свойства равно True (по умолчанию), то компонент Label из­меняет свои размеры соответственно содержащемуся в нем тексту, заданно­му в свойстве Caption.

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

Способ выравнивания текста внутри компонента Label задает свойство Alignment типа TAlignment, которое может принимать одно из следующих значений:

- taLeftJustify — выравнивание по левому краю

- taCenter — центрирование текста

- taRightJustify — выравнивание по правому краю

Если свойствоAutoSize имеет значениеTrue, то свойствоAlignment не действует.

Управлять автоматическим переносом слов, не умещающихся по ширине, на другую строку можно с помощью свойства WordWrap типа Boolean. При установке значения True этого свойства лишние слова по ширине компонента Label переносятся на следующую строку.

 

Компонент StaticText.Компонент Delphi StaticText(вкладка Additional) предназначен для вывода небольшой текстовой строки на форме. Главное отличие его от компонента Label состоит в том, что он имеет рамку.

Свойство BorderStyle определяет

внешний вид рамки и оно может принимать одно из трех значений:

§ sbsNone - рамка отсутствует,

§ sbsSingle - рамка представляет из себя обычную линию,

§ sbsSunken - рамка представляет из себя вдавленную область.

 

2.Однострочные редакторы

Однострочный редактор, или строка редактирования, представляет собой поле ввода информации, в котором возможно отображение и изменение текста. В Delphi имеется несколько однострочных редакторов, из них наи­более часто используемым является компонент Edit.

Компонент Edit (вкладка Standard) позволяет вводить с клавиатуры и редактировать различ­ные символы, при этом поддерживаются операции, такие как, перемещение по строке с использованием клавиш управления курсором, удаление симво­лов с помощью клавиш <Backspace> и <Delete>, выделение части текста и др. Однако, однострочный редактор не реагирует на управляющие клавиши <Enter> и <Esc>.

СвойствоTextпредназначено для доступа к тексту компонента.

Для ограничения ввода символов в поле Textсвойство MaxLengthдолжно быть равно допустимому количеству символов. При MaxLength равным нулю нет ограничений на длину текста.

Очистить поле можно командой: Edit1.Clear;

или присвоить значение пустой строки: Edit1.Text := '';

Для изменения регистра символов в строке редактирования служит свойство CharCase, которое может принимать одно из трех значений:

- ecLowerCase - символы текста преобразуются в символы нижнего регистра

- ecNormal - регистр символов не изменяется (по умолчанию)

- ecUpperCase - символы текста преобразуются в символы верхнего регистра

При использовании компонента Edit для ввода пароля можно воспользоваться свойством PasswordСhar типа char, которое задает символ для отображения в поле ввода. Этот символ при вводе текста появляется вместо фактически вве­денной информации.

Компонент LabeledEdit (вкладка Additional) совмещает возможности двух компонентов Label и Edit.

Расположение надписи по отношению к полю ввода задается свойством LabelPosition:

  • lpLeft - надпись слева,
  • lpRight -надпись справа,
  • lpBelow - надпись снизу,
  • lpAbove - надпись сверху.

Расстояние между надписью и полем ввода свойством LabelSpacing.

По своим свойствам LabeledEdit почти полностью совпадает со свойствами компонента Edit. За свойства надписи отвечает свойство EditLabel, которое является вложенным компонентом Label. Надпись задается и редактируется в этом вложенном объекте - в свойстве Caption.

 

Компонент MaskEdit (вкладка Additional) также представляет собой однострочный редактор, но по сравнению с компонентом Edit он дополнительно предоставляет воз­можность ограничения вводимой информации по шаблону. С помощью шаблона (маски) можно ограничить число вводимых пользователем симво­лов, тип вводимых символов (алфавитный, цифровой и т. д.). Кроме того, во вводимую информацию можно вставить дополнительные символы (разделители при вводе даты, времени ит. п.). С помощью редактирования по маске удобно вводить телефонные номера, даты, почтовые индексы и другую информацию заранее определенного формата.

Маска задается в свойстве EditMask типа string. Она представляет собой последовательность специальных кодов, определяющих для строки редакти­рования формат содержащегося в ней текста. Для составления маски можно использовать редактор шаблонов. Редактор шаблонов вызывается двойным щелчком в поле значения свойства EditMask.

Маска состоит из трех полей, разделенных символом ";". Первое поле явля­ется собственно маской. Второе поле - это символ, определяющий, счита­ются ли литеральные символы частью данных. По умолчанию используется символ "1", и литеральные символы маски являются частью введенного в редактор текста (свойство Text). Если вместо "1" установить символ "0", то литеральные символы маски по-прежнему будут отображаться в поле редак­тора при вводе в него текста, однако в свойстве Text литеральные символы отсутствуют. Литеральные символы удобно использовать в качестве раздели­телей, например, при вводе телефонных номеров.

Третье поле содержит символ, используемый для представления знака про­бела в маске, по умолчанию это символ подчеркивания. Если ни второе, ни третье поля не определены, то для них используются значения по умолча­нию.

В маске можно применять следующие специальные символы:

! - в тексте подавляются начальные пробелы. Если символ ! отсутствует, то подавляются конечные пробелы.

> - символы, которые следуют за этим символом, до появления символа < переводятся в верхний регистр

< - символы, которые следуют за этим символом, до появления символа > переводятся в нижний регистр

<> - проверка регистра символов не производится

\ - символ, следующий за этим символом, является литерным

L - в позиции должен быть введен алфавитный символ

l (строчная латинская буква L) - в позиции может быть введен алфавит­ный символ

А - в позиции должен быть введен алфавитно-цифровой символ

а - в позиции может быть введен алфавитно-цифровой символ

С - в позиции должен быть введен символ

с - в позиции может быть введен символ

0 - в позиции должен быть введен цифровой символ

9 - в позиции может быть введен цифровой символ

# - в позиции может быть введен цифровой символ или знаки + и -

: - используется для разделения часов, минут и секунд в показаниях вре­мени

/ - используется для разделения дней, месяцев и лет в датах

; - разделяет поля маски

_ - оставляет в окне редактирования пустое пространство, являющееся автоматически пропускаемым разделителем и в которое нельзя ввести информацию.

Примеры масок:

!99/99/00;1;_ - для ввода даты

!000-00-00;1;_ - для ввода семизначного телефонного номера

!90:00;1;_ - для указания времени

1_1_1_1_1_1_;1;_ - для ввода слова длиной не более шести букв (между бу­квами отображаются пробелы)/

Маску можно выбрать из образцов в поле Sample Masks или ввести вручную в поле Input Mask. Легче выбрать из образцов наиболее близкую маску и отредактировать ее. Поле Character for Blanks задает вид незаполненной позиции во входной строке. Значок Save Literal Characters отвечает за включение в маску литеральных символов. В поле Test Input проверяется функциональность маски и какой будет вид пустого поля в приложении.

Для проверки вводимой информации можно использовать обработчики собы­тий нажатия клавиш, например, обработчик события OnKеуРгеss.

Пример.Ограничение набора символов, вводимых в редактор.

procedure TForml.EditlKeyPress(Sender : TObject; var Key : Char);

begin

if (Key<’0’ or (Key>'9') then Key:=#0;

end;

Здесь для редактора Editl установлено разрешение ввода только цифр.

 

 

Лекция № 6. Визуальные компоненты для редактирования многострочных данных. Основные свойства компонентов.

 

1. Многострочный редактор

Для работы с многострочным текстом Delphi предоставляет компонент Memo (вкладка Standard). Многострочный редактор имеет практически те же возможности редакти­рования текста, что и однострочные элементы редактирования. Главное от­личие этих управляющих элементов заключается в том, что многострочный редактор содержит несколько строк.

Для доступа ко всему содержимому многострочного редактора используется свойство Text типа String. В этом случае все содержимое компонента Memo представляется одной строкой, причем символ конца строки, вводимый при нажатии клавиши <Enter>, представляется двумя кодами #13#10, и видимых пользователем символов будет меньше, чем их содержится в строке Text. Эту особенность нужно учитывать, например, при определении позиции заданного символа в какой-либо строке компонента Memo.

Для работы с отдельными строками используется свойство Lines типа Tstrings. Класс Tstring специально создан для выполнения операций со строками. Компонент Memo может использовать возможности этого класса через свойство Lines.

Пример.Операции с многострочным редактором.

Memol.Lines[3]:= 'asd’;

Memo2.Lines.Clear;

МетоЗ.Lines.Add('Новая строка’);

Memo1.Lines.Count; //Количество строк в компоненте.

Здесь четвертой строке редактора Memol присваивается новое значение asd. Отметим, что в классе Tstring нумерация строк начинается с нуля. Содер­жимое редактора Memo2 полностью очищается. В конец текста редактора Меmо3 добавляется новая строка.

Содержимое компонента Memo можно загружать из текстового файла и со­хранять в текстовом файле. Для этого удобно использовать методы:

LoadFromFile (const FileName: String) и SaveToFile (const FileName: String) класса TStrings. Параметр FileName методов определяет текстовый файл для операций чтения и записи.

Пример.Чтение информации из текстового файла в компонент Memol.

Memol.Lines.LoadFromFile ( 'С: \TEXT\examplel.txt' );

Пример.Запись информации из компонента Мето2 в текстовый файл.

Memo2.Lines.SaveToFile('C:\TEXT\example2.txt');

Для того чтобы информацию было просматривать удобно, можно задать в поле редактирования полосы прокрутки с помощью свойства ScrollBars, принимающего следующие значения:

- ssNone - полосы прокрутки отсутствуют (по умолчанию)

- ssHorizontai - снизу имеется горизонтальная полоса прокрутки

- ssvertical — справа имеется вертикальная полоса прокрутки

- ssBoth - есть обе полосы прокрутки

Текст в поле компонента Memo может быть выровнен различными способа­ми. Способ выравнивания определяет свойство Alignment.

СвойствоReadOnlyразрешает редактирование текста (програмно текст можно добавлять).

Свойство MaxLength задает количество символов, которое можно ввести. Значение равное нулю не ограничивает ввода.

Для работы с выделенным текстом используются функции: SelStat - позиция первого выделенного символа, SelLength - число сколько выделено символов, SelectAll - выделение всего текста,ClearSelection - очистить выделенный текст. Для работы выделенного текста с буфером обмена используются методы:

  • CutToClipboard - вырезать выделенный текст;
  • CopyToClipboard - скопировать выделенный текст;
  • PasteFromClipboard - вставить выделенный текст;

В отличие от однострочного редактора, компонент Memo обладает возможно­стью реакции на нажатие клавиши <Enter>. Чтобы при этом происходил ввод новой строки, свойству WantReturns типа Boolean должно быть установлено значение True (по умолч.). В противном случае редактор не реагирует на нажатие клавиши <Enter>.

Аналогичное назначение имеет свойство WantTabs типа Boolean, опреде­ляющее реакцию компонента на нажатие клавиши <ТаЬ>. Если свойству установлено значение True, то при нажатии клавиши <ТаЬ> в текст встав­ляются символы табуляции. По умолчанию свойство WantTabs имеет значе­ние False, и при нажатии клавиши <ТаЬ> редактор передает фокус ввода следующему элементу управления.

У компонентаMemoесть возможность использовать, как в других текстовых редакторах, общепринятые горячие клавиши, такие как: Ctrl-X — выделенный текст вырезается и помещается в буфер обмена, Ctrl-C — копируем выделенный текст в буфер обмена, Ctrl-V — вставляем текстовое содержимое из буфера обмена в место нахождения курсора, для отмены последней команды используем Ctrl-Z.

Компонент RichEdit представляет собой элемент управления редактирова­нием текста и в дополнение к Memo поддерживает такие операции формати­рования текста, как выравнивание текста и табуляция, применение отсту­пов, изменение гарнитуры и др. Текст, содержащийся в этом элементе редактирования, совместим с форматом RTF (Rich Text Format), поддержи­ваемым всеми текстовыми процессорами в среде Windows.

 

2.Общие элементы компонентов редактирования

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

При любых изменениях в содержимом редактора возникает событие onChange типа TNotifyEvent, которое можно использовать для проверки информации, содержащейся в поле ввода, например, для оперативного контроля правиль­ности набора данных. Кроме того, при модификации данных редактора свойство Modiefidтипа Boolean принимает значение True. Это свойство можно использовать, например, при проверке того, сохранена ли редакти­руемая информация на диске:

if Memol.Modiefid then <выдача предупреждения и сохранение информации>;

Для указания максимального количества символов, которые допускается вво­дить в элемент редактирования, можно использовать свойство MaxLengthтипа integer. При этом ограничение на длину текста относится к вводу со стороны пользователя, программно можно ввести большее количество сим­волов, чем это задано в свойстве MaxLength. По умолчанию длина текста, вводимого пользователем, не ограничена (MaxLength = 0).

Свойства AutoSelect, SelStart, SelLength и SelTextпозволяют работать с выделенным (селектированным) фрагментом текста. Эти свойства доступны не только для чтения, но и для записи, когда фрагмент выделяется программным способом (например, в процессе поиска или замены информации).

Свойство AutoSelectтипа Boolean определяет, будет ли автоматически вы­делен текст в элементе редактирования, когда последний получает фокус ввода (по умолчанию имеет значение True).

Значение свойстваSelText типа string определяет выделенный фрагмент. При отсутствии выделенного текста значением свойства является пустая строка.

Свойства SelStart и SelLength типа Integer задают соответственно начальную позицию в строке (отсчет символов в строке начинается с нуля) и длину выделенного фрагмента.

Кроме свойств, для операций с выделенным фрагментом текста служат такие методы, как SelectAll, CopyToClipBoard И CutToClipBoard.

Метод SelectAll выделяет весь текст в элементе редактирования.

Методы CopyToClipBoard и CutToClipBoard соответственно копируют и вы­резают в буфер обмена выделенный фрагмент текста.

Для работы с буфером обмена имеется также метод PasteFromClipBoard, предназначенный для вставки текста из буфера обмена в место текущего расположения курсора в элементе редактирования. Если имеется выделен­ный фрагмент, то вставляемый текст заменяет его.

Для проверки данных, введенных в элемент редактирования, можно исполь­зовать событие onExit, возникающее при окончании ввода, т. е. при потере фокуса этим элементом.

Пример.Проверка данных, введенных в редактор.

procedure TForml.EditlExit(Sender: TObject);

begin

if (Editl.Text='123') or (Editl.Text='456') then begin

MessageDlg(‘Артикул’+Editl.Text+'неправильный!'+

#13#10+'Повторите ввод.', mtError, [mbOK], 0);

Editl.SetFocus;

Editl.SelectAll;

end; end;

В редактор Editl вводится артикул нового товара, который не должен быть равен "123" или "45б". При окончании ввода в обработчике события onExit выполняется проверка артикула. Если он набран неверно, выдается предупреждение, а фокус снова получает ре­дактор Editl.

Основным назначением элементов редактирования является ввод и измене­ние текста, но их можно использовать и для отображения нередактируемого текста, например, при выводе справочной информации. С этой целью нужно установить соответствующие значения свойств ReadOnly или Enabled. Оба способа обеспечивают отображение нередактируемого текста, однако имеют свои недостатки. В первом случае компонент Memo при выполнении программы может получать фокус. В поле ввода отображается курсор, что создает у пользователя иллю­зию доступности текста для редактирования. Подобного не происходит при использовании свойства Enabled, однако в этом случае поле редактирования становится неактивным, и нахо­дящийся в нем текст отображается бледным цветом, что не слишком удобно для чтения. Кроме того, происходит отключение полос прокрутки (при их наличии).

 

Лекция № 7. Визуальные компоненты: работа со списками: простой, комбинированный. Основные свойства компонентов.

Работа со списками.

Списокпредставляет собой упорядоченную совокупность взаимосвязанных элементов, являющихся текстовыми строками. Как и другие объекты, представ­ляющие собой совокупность данных, списки предоставляют возможности по добавлению, удалению и выбору отдельных его элементов (строк).

Простой список

Простой список представляет собой прямоугольную область, в которой располагаются его элементы. Для работы с простым списком служит компонент ListBox.

Если количество строк больше, чем может их поместиться в видимой области списка, то рядом с областью отображения появляется полоса прокрутки. Ориентация полосы прокрутки, а также число колонок, которые одновременно видны в области списка, зависят от свойства Columns типа integer. По умолчанию свойство имеет значение 0. Это означает, что все элементы списка расположены в один столбец, и при необходимости автоматически появляется и исчезает вертикальная полоса прокрутки.

Если свойство Columns имеет значение, большее или равное 1, то в области списка всегда присутствует горизонтальная полоса прокрутки, а элементы разбиваются на такое число колонок (столбцов), чтобы можно было путем прокрутки списка по горизонтали просмотреть все его элементы. При этом в видимой области списка отображается число колонок, определяемое свойством columns.

СвойствоItems –массив строк, определяющий количество элементов и их содержимое (нумерация с 0).

Пример. ListBox1.Items[0] – обращение к первому элементу списка.

СвойствоItemIndex - возвращает номер выделенной строки (текущего элемента).

Пример.ListBox1.Items[ListBox1.ItemIndex] – обращение к выделенному элементу.

При работе со списком программист может управлять номером элемента, который отображается вверху видимой области списка. Эта возможность обеспечивается свойством времени выполнения TopIndexтипа integer.

Пример.Процедура управления отображением элементов списка.

procedure TForml.UpDownlClick(Sender: TObject; Button: TUDBtnType);

begin

ListBoxl.Toplndex:=UpDownl.Position;

end;

Вверху в списке ListBoxl отображается элемент, номер которого задает ре­версивный счетчик UpDown1. В данном случае счетчик upDown1 является сво­его рода скроллером для прокрутки содержимого списка.

Стиль простого списка задает свойство Style типа TListBoxStyle, прини­мающее следующие значения:

- ibStandard - стандартный стиль (по умолчанию)

- ibOwnerDrawFixed - список с элементами фиксированной высоты, опре­деляемой свойством ItemHeight

- IbOwnerDrawVariable - список с элементами, которые могут иметь разную высоту

Если стиль списка отличен от значения ibStandard, то программист сам отвечает за прорисовку элементов списка. Для этих целей используются графические возможности Delphi.

Список может иметь обычную рамку или не иметь рамки вообще. Наличие рамки определяет свойство BorderStyleтипа TBorderstyle, принимающее два возможных значения:

- bsNone - рамки нет

- bsSingle - рамка есть (по умолчанию)

2.Комбинированный список

Комбинированный список объединяет поле редактирования и список. Пользо­ватель может выбирать значение из списка или вводить его непосредственно в поле. Для работы с комбинированным списком Delphi служит компонент ComboBox.

Список, находящийся в компоненте ComboBox, может быть простым и раскрывающимся. Раскрывающийся список в свернутом виде занимает на экране меньше места.

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

Свойство Items- предоставляет доступ к строкам этого компонента.

Свойство ItemIndex - возвращает номер выделенной строки.

Пример.ComboBox1.ItemIndex:= 3 - выбор четвертой строки списка.

Свойство Text определяет содержимое выбранной строки списка.

Пример.ListBox1.Items[3]:= ComboBox1.Text-содержимое выбранной строки комбинированного списка записывается в 4-ую строку простого списка.

Свойство Style типа TComboBoxstyle определяет внешний вид и поведение комбинированного списка. Свойство style может принимать следующие значения:

- csDropDown - раскрывающийся список с полем редактирования (по умолчанию). Пользователь может выбирать элементы из списка, при этом выбранный элемент появляется в поле ввода, или вводить (редактировать) информацию непосредственно в поле ввода.

- csSimple - поле редактирования с постоянно раскрытым списком. Для того чтобы список был виден, необходимо увеличить высоту (свойство Height) компонента ComboBox.

- csDropDownList - раскрывающийся список, допускающий выбор эле­ментов из списка.

- csOwnerDrawFixed - список с элементами фиксированной высоты.

- csOwnerDrawVariable - список с элементами, которые могут иметь разную высоту.

Если стиль списка имеет значениеcsOwnerDrawFixed или csOwnerDrawVariable, то программист сам отвечает за прорисовку элементов списка.

Свойство DropDownCount типа integer определяет количество строк, которые одновременно отображаются в раскрывающемся списке. Если значение свой­ства превышает число строк списка, определяемое значением подсвойства count свойства items, то на раскрывающемся списке автоматически появляет­ся вертикальная полоса прокрутки. Если размер списка меньше, чем задано в свойстве DropDownCount, то отображаемая область списка автоматически уменьшается. Свойство DropDownCount по умолчанию имеет значение 8.

Свойство DroppedDown типа Boolean позволяет определить, раскрыт ли список. Если свойство имеет значение True, то список отображается в раскры­том виде, в противном случае список свернут. При отображении раскрывающегося списка возникает событие onDropDown типа TNotifyEvent. Программист может самостоятельно управлять раскрытием и свертыванием списка в процессе выполнения приложения, устанавливая свойству DroppedDown соответствующее значение.

Пример.Управление раскрытием и свертыванием списка.

procedure TForm5.btnSpisokOpenClicklSender: TObject);

begin

ComboBox1.DroppedDown:=true;

end;

procedure TForm5.btnSpisokCloseClick(Sender: TObject);

begin

ComboBox1.DroppedDown:=false;

end;

3.Общая характеристика списков

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

Свойство Items типа Tstrings представляет собой массив строк и определя­ет количество элементов списка и их содержимое. Класс Tstrings является базовым типом и разработан специально для операций со строками.

Каждый элемент списка является строкой, к которой можно получить дос­туп по ее номеру в массиве строк items. Отсчет элементов списка начинает­ся с нуля. Для обращения к первому элементу нужно указать items[0], ко второму — items[1], к третьему — items [2] и т. д. При операциях с отдельными строками программист должен контролиро

© 2013 wikipage.com.ua - Дякуємо за посилання на wikipage.com.ua | Контакти