Компоненты ввода и отображения текстовой информации


Содержание

учимся
программировать

Программированию нельзя научить, можно только научится

Главная » Уроки по ООП » Урок 9. Компоненты ввода-вывода и редактирования.

Урок 9. Компоненты ввода-вывода и редактирования.

Font — шрифт отображения текста в компонентах

Во всех компонентах ввода и отображения текстовой и цифровой информации шрифт текста, его размер, стиль (жирный, курсив и т.п.) определяются свойством Font. Это свойство в свою очередь является объектом типа TFont, который имеет множество подсвойств, устанавливаемых в процессе проектирования или программно во время выполнения приложения.
Основные свойства шрифта следующие:

Определяет набор символов шрифта.
Каждый вид шрифта, определяемый его именем (свойство Name), поддерживает один или более наборов символов. Для шрифтов, поддерживающих несколько наборов символов, важно правильно задать Charset.
В Delphi предопределено много констант, соответствующих стандартным наборам символов. Отметим только одно значение — 204, обозначаемое также константой RUSSIAN_CHARSET, которое соответствует символам кириллицы. По умолчанию в объектах типа TFont задается значение Charset, равное 1 или DEFAULT_CHARSET.

Color

Определяет цвет текста.

Height

Характеризует высоту шрифта в пикселях.

Name

Pitch

Определяет способ установки ширины символов. Возможные значения:
fpDefault — ширина устанавливается равной по умолчанию, т.е. описанной в шрифте заданного вида Name.
fpFixed — установка одинаковой ширины всех символов
fpVariable — установка различной ширины символов.
Задание значения отличного от fpDefault заставляет Windows искать наилучший способ удовлетворить всем заданным характеристикам шрифта.

Size

Размер шрифта в кеглях (пунктах).

Style

Стиль шрифта: полужирный — fsBold, курсив — fsItalic, подчеркнутый — fsUnderline, перечеркнутый — fsStrikeout.

Значения свойств объекта Font можно задавать все сразу методом Assign, который записывает значения всех свойств одного объекта в другой.

Отображение текста в надписях компонентов Label, StaticText

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

Во всех компонентах цвет фона определяется свойством Color, а цвет надписи — подсвойством Color свойства Font. Например, можно задать цвет фона равным clWhite — белый.
Компонент StaticText имеет свойство BorderStyle, определяющее рамку текста — бордюр.
Размер определяется свойством AutoSize.
Если AutoSize=true, то вертикальный и горизонтальный размеры компонента определяются размером надписи. Если AutoSize=false, то выравнивание текста внутри компонента определяется свойством Alignment, которое позволяет выравнивать текст по левому краю, правому краю или центру клиентской области метки.

Перенос текста в Label по строкам
WordWrap=true допустимость переноса слов длинной надписи, превышающей длину компонента, на новую строчку.
При этом свойство AutoSize = false (чтобы размер компонента не определялся размером надписи) и сделать высоту компонента такой, чтобы в нем могло поместиться несколько строк.
В метке StaticText перенос длинного текста осуществляется автоматически, если AutoSize=false и размер компонента достаточен для размещения нескольких строк.

Задание 1. Рассмотреть свойства компонента Label, создав следующие две формы. Можно все выполнить на одной форме.

Окна редактирования Edit и MaskEdit

Внешнее оформление окон редактирования определяется свойством BorderStyle.
Вводимый и выводимый текст содержится в свойстве Text. Выравнивание текста невозможно. Перенос строк тоже невозможен. Текст, не помещающийся по длине в окно, просто сдвигается и пользователь может перемещаться по нему с помощью курсора.

Свойство AutoSelect определяет, будет ли автоматически выделяться весь текст при передаче фокуса в окно редактирования. Его имеет смысл задавать равным true в случаях, когда при переключении в данное окно пользователь будет скорее заменять текущий текст, чем исправлять его.

Имеются также свойства только времени выполнения SelLength, SelStart, SelText, определяющие соответственно длину выделенного текста, позицию перед первым символом выделенного текста и сам выделенный текст. Например, если в окне имеется текст «выделение текста» и в нем пользователь выделил слово «текста», то SelLength = 6, SelStart = 10 и SelText = ‘текста’. Если выделенного текста нет, то свойство SelStart просто определяет текущее положение курсора.

Окна редактирования можно использовать и просто как компоненты отображения текста. Для этого надо установить в true их свойство ReadOnly и целесообразно установить AutoSelect в false.

Свойство MaxLength определяет максимальную длину вводимого текста. Если MaxLength=0, то длина текста не ограничена. В противном случае значение MaxLength указывает максимальное число символов, которое может ввести пользователь.

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

Окно ввода пароля

Свойство PasswordChar позволяет превращать окно редактирования в окно ввода пароля. По умолчанию значение PasswordChar равно #0 — нулевому символу. В этом случае это обычное окно редактирования. Но если в свойстве указать иной символ (например, символ звездочки «*»), то при вводе пользователем текста в окне будут появляться именно эти символы, а не те, которые вводит пользователь. Тем самым обеспечивается секретность ввода пароля.

Компонент MaskEdit (на стр. Additional)

Он отличается от Edit тем, что в нем можно задать строку маски в свойстве EditMask. Маска состоит из трех разделов, между которыми ставится точка с запятой:

  1. записываются специальным образом символы (см. таблицу), которые можно вводить в каждой позиции, и символы, добавляемые самой маской;
  2. записывается 1 или 0 в зависимости от того, надо или нет, чтобы символы, добавляемые маской, включались в свойство Text компонента;
  3. указывается символ, используемый для обозначения позиций, в которых еще не осуществлен ввод.

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

Для по­строения маски используются специальные символы:
! Поле заполняется слева направо
0 Цифра (0-9) или знак (+/-) обязательны
__ Автоматически вставляет пробел в указанной позиции
> Все символы справа от указанной позиции переводятся в верхний регистр

  • Инструкционная карта
  • Лекция
  • Контроль

    Стандартные компоненты ввода и отображения текстовой информации

  • Charset 15.01.2015, 04:21

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

    Обработка текстовой информации
    Здравствуйте, форумчане. Злой препод дал прогу, не могу написать голову ломаю. ) Задание звучит.

    Из Паскаля в Си++. Шифрование текстовой информации
    Шифрование текстовой информации случайной заменой символов. Нужно из Паскаля перевести в С++.

    Стандартные библиотеки ввода/вывода
    Здорова господа! Есть задание: «Нужно реализовать стандартную библиотеку ввода/вывода языка Си.

    После ввода специальности программа пропускает все остальные этапы ввода информации
    Написал программу которая выводит учеников с меньше 60ти баллами, но после ввода специальности она.

    Перечень компонентов ввода и отображения текстовой информации

    Перечень компонентов ввода и отображения текстовой информации — раздел Информатика, Информатика В Библиотеке Визуальных Компонентов Delphi Существует Множест.

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

    Таблица 16.1 – Перечень визуальных компонентов

    Компоненты ввода и отображения текстовой информации

    Название работы: Компоненты ввода-вывода информации

    Предметная область: Информатика, кибернетика и программирование

    Описание: Свойство IsMasked: Boolean доступно только для чтения и содержит True, если строка шаблона задана. Свойство EditText: string содержит текст до наложения на него маски шаблона (т. е. то, что ввел пользователь), а свойство Text: String может (в зависимости от шаблона см. ниже) содержать либо исходный текст, либо результат наложения на него маски шаблона.

    Дата добавления: 2015-02-05

    Размер файла: 125 KB

    Работу скачали: 3 чел.

    Компоненты ввода-вывода информации

    Для ввода и вывода информации используются следующие компоненты: Label, Edit, Memo (на странице Standard , рис 11), MaskEdit , LabelEdit (на странице Additional , рис 12).

    Рис 11 — Страница Standard

    Рис 12 — Страница Additional

    Компоненты класса TLabel (метка) — предназначены для размещения на форме различного рода текстовых надписей.

    Свойства представлены в таблице 5:

    Таблица 5 — Свойства компоненты Label

    Наименование компоненты (по умолчанию Label 1)

    Определяет текст внутри компоненты

    Определяет цвет фона (прилож 1)

    Font: вложен енный

    Определяет цвет, стиль, размер шрифта (прилож 1)

    Определяет выравнивание текста по горизонтали относительно границ компонента (для AutoSize = False ):

    Указывает, будет ли метка изменять свои размеры в зависимости от помещенного в ее свойство Caption текста: True — будет

    Определяет прозрачность фона метки. Если False , фон закрашивается собственным цветом Color , в противном случае используется фон родительского компонента

    Разрешает/запрещает разрыв строки на границе слова. Для вывода многострочных надписей задайте AuroSize = False , wordwrap = True и установите подходящие размеры метки

    Определяет видимость компоненты

    Компоненты класса TEdit — предназначены для ввода и отображения строковой информации (однострочный редактор текста). С его помощью можно вводить и/или отображать достаточно длинные текстовые строки.

    Свойства, методы и события представлены в таблице 6:

    Таблица 6 — Свойства, методы и события компоненты Edit

    Наименование компоненты (по умолчанию Edit1)

    Содержит весь текст


    Определяет цвет фона (прилож 1)

    Определяет цвет, стиль, размер шрифта (прилож 1)

    Если содержит True и BorderStyle=bsSingle, высота компонента автоматически меняется при изменении свойства Font. Size

    Определяет стиль обрамления компонента:

    bsNone — нет обрамления; bsSingle — компонент

    обрамляется одной линией

    Определяет автоматическое преобразование высоты букв:

    ecNormal — нет преобразования;

    ecUpper Case — все буквы заглавные;

    ecLowerCase — все буквы строчные.

    Определяет максимальную длину текстовой строки. Если имеет значение 0, длина строки не ограничена

    Если символ PasswordChar определен, он заменяет собой любой символ текста при отображении в окне. Используется для ввода паролей

    Read O nly: Boolean

    Если содержит True, текст не может изменяться

    Удаляет весь текст

    Передача фокуса компоненте

    Выделяет весь текст

    Возникает при изменении значения в компоненте

    Возникает при нажатии кнопки мыши

    Возникает при нажатии (опускании) клавиши

    Возникает при нажатии клавиши

    Возникает при нажатии (опускании) кнопки мыши

    Компоненты класса T Memo — предназначены для ввода, редактирования и отображения информации более одной строки (многострочный редактор текста). С его помощью можно вводить и/или отображать достаточно длинный текст.

    Свойства BorderStyle, HideSelection, MaxLentgh, , OnChange, ReadОnly, и аналогичны соответствующим свойствам класса TEdit. Свойство WordWrap аналогично свойству TLabel. WordWrap.

    Свойства, методы и события представлены в таблице 7:

    Таблица 7 — Свойства, методы и события компоненты Memo

    Наименование компоненты (по умолчанию Memo1)

    Представляет собой пронумерованный набор строк (нумерация начинается с нуля). Содержит строки текста

    Определяет наличие в окне редактора полос прокрутки: ssNone — нет полос;

    ssHorizontal -есть горизонтальная полоса;

    ssVertical — есть вертикальная полоса;

    ssBoth — есть обе полосы

    Определяет количество строк в тексте

    Удаляет весь текст

    Добавляет новую строку в текст

    Удаляет определённую строку из текста

    Для загрузки в компонент текста из файла

    Для сохранения текста в файле

    TMaskEdit — специальный редактор

    Специализированный редактор TMaskEdit предназначен для ввода текста, соответствующего некоторому шаблону, задаваемому свойством EditMask: String. Если это свойство не задано, TMaskEdit работает как обычный редактор TEdit.

    Свойство IsMasked: Boolean доступно только для чтения и содержит True, если строка шаблона задана. Свойство EditText: string содержит текст до наложения на него маски шаблона (т. е. то, что ввел пользователь), а свойство Text: String может (в зависимости от шаблона см. ниже) содержать либо исходный текст, либо результат наложения на него маски шаблона.

    Шаблон состоит из трех частей, отделенных друг от друга символами “;”. Первая часть задает маску ввода, вторая — это символ “О” или “I”, определяющий, записывается ли в Text результат наложения маски или исходный текст (“О” — исходный текст). В третьей части указывается символ, который в окне редактора будет стоять в полях, предназначенных для ввода символов (текст в редакторе может содержать символы маски; например, для ввода семизначного номера телефона текст в начале ввода может выглядеть так: (095)ХХХ-ХХ-ХХ где доступные для ввода пользователя поля указаны символом “X” -последним символом в шаблоне).

    Маска состоит из описателей полей ввода, специальных символов и литералов. Описатель указывает, какой именно символ может ввести пользователь в данное поле (описатель всегда описывает поле единичной длины, т. е. рассчитанное на ввод одного символа). Литерал вставляется в текст, показываемый в окне редактора, но при вводе курсор перескакивает через литерал и не дает пользователю возможности изменить его. Литералами считаются любые символы, кроме описателей полей и специальных символов, а также любой символ, которому предшествует символ “\”. Специальные символы формируют дополнительные указания редактору.

    Описатели полей ввода представлены в следующей таблице 8:

    Отображение текста в надписях компонентов Label и Panel

    Это объявляется переменная Form1 класса TForm1, т.е. объявляется ваша форма как объекта класса TForm1.

    Затем следует раздел реализации implementation, который начинается с директивы компилятора, смысл которой, вообще говоря, знать не обязательно. Надо только следить, чтобы случайно не стереть эту директиву. Далее в разделе implementation вы можете видеть реализацию объявленной в классе процедуры Button1Click с единственным оператором, который вы ввели в программу сами.

    В раздел implementation вы можете сами включать помимо обработчиков событий любые объявления глобальных переменных, констант, типов, и описания функций и процедур. Если вы хотите из данного модуля получить доступ к другому разработанному вами модулю (другой форме), то в раздел implementation вам надо включить оператор uses, в котором указать файл модуля, доступ к которому вы хотите получить. Например, предложение

    uses Unit2, Unit3;

    обеспечит вам доступ ко всем элементам, объявленным в интерфейсе модулей Unit2 и Unit3.

    Компоненты ввода и отображения текстовой информации

    Краткое описание компонентов

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

    Таблица 1. Компоненты ввода и отображения текстовой информации

    Пикто-грамма Компонент Страница палитры Описание
    Label (метка) Standard Отображение текста, который не изменяется пользователем. Можно изменить оформление текста: цвет метки и текста. Отображаемый текст можно получить(изменить) через свойство Caption.
    Panel (панель) Standard Компонент является контейнером для группирования элементов управления, но может использоваться и для отображения текста с возможностями объемного оформления. Основное свойство — Caption(как правило, оставляют пустым).
    Edit (окно редактирования) Standard Отображение, ввод и редактирование однострочных текстов. Имеется возможность оформления объемного бордюра. Содержимое (текст) можно получить(изменить) через свойство Text.
    MaskEdit (окно маскированного редактирования) Additional Используется для форматирования данных или для ввода символов в соответствии с шаблоном. Основные свойства — Text и EditText.
    Memo (многострочное окно редактирования) Standard Отображение, ввод и редактирование многострочных текстов. Имеется возможность оформления объемного бордюра. Строки текста доступны через свойство Lines.
    ListBox (окно списка) Standard Отображение стандартного окна списка Windows, позволяющего пользователю выбирать из него пункты. Элементы списка доступны через свойство Items.
    ComboBox (редактируемый список) Standard Объединяет функции ListBox и Edit. Пользователь может либо ввести текст, либо выбрать его из списка. Элементы списка доступны через свойство Items.
    StringGrid (таблица строк) Additional Отображение текстовой информации в таблице из строк и столбцов с возможностью перемещаться по строкам и столбцам и осуществлять выбор. Строки, записанные в ячейках таблицы можно получить через свойство Cells.

    Отображение текста в надписях компонентов Label и Panel

    Для отображения различных надписей на форме используются в основном компоненты Label и Panel.

    Label — этометка, специально предназначенная для отображения текстов.

    Panel – это панель, основное назначение которого компоновка компонентов в окне формы. Однако, панель можно использовать и для вывода текстов.

    Примеры вывода текста в компонентах приведены на рис. 1-2.

    Рис. 1 Примеры вывода текста в компоненте Label

    Рис. 2 Примеры вывода текста в компоненте Panel

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

    Label1.Caption := ‘Новый текст’;

    Если требуется отобразить числовую информацию, можно воспользоваться функциями FloatToStr и IntToStr, переводящими соответственно числа с плавающей запятой и целые в строку. Для формирования текста, состоящего из нескольких фрагментов, можно использовать операцию «+», которая для строк означает их склеивание (конкатенацию).

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

    Label1.Caption := ‘Число сотрудников: ‘+IntToStr(I);

    Свойство Color во всех компонентах определяет цвет фона, а подсвойство Color свойства Font (записывается Font.Color)- цвет шрифта. Например, в большинстве меток (кроме верхней) на рис. 1 задан цвет фона равным clWhite — белый. Если цвет специально не задавать, то цвет фона обычно сливается с цветом контейнера, содержащего метку, так что фон просто не заметен.

    Для метки Label цвет и шрифт — единственно доступные элементы оформления надписи. Компонент Panel имеют свойства

    BorderStyle, определяющее рамку текста — бордюр.

    BevelInner, BevelOuter, BevelWidth, BorderWidth, которые предоставляют богатые возможности оформления надписи, как вы можете видеть на рис. 2.

    Таким образом, с точки зрения оформления выводимого текста максимальные возможности дает Panel и минимальные — Label.

    Размещение всех рассматриваемых компонентов на форме определяется, в частности, свойствами:

    Тор — координата верхнего края (отступ в пикселях от верхней границы родительского компонента),

    Left — координата левого края,

    Heightвысота,

    Widthширина.

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

    Alignвыравнивание компонента по всей верхней, левой, правой, нижней частям контейнера или по всей его клиентской области,

    Anchorsпривязка сторон компонента к сторонам контейнера,

    Constraintsограничения допустимых изменений размеров.

    Учтите, что использование в свойстве Anchors одновременной привязки компонента к противоположным сторонам контейнера приведет к растягиванию или сжатию компонента при изменении пользователем размеров окна. При этом в метках в ряде случаев наблюдаются неприятности, связанные с перемещением надписей (если они, например, выровнены по центру). Чтобы избежать этих неприятностей, надо в обработку события формы OnResize вставить операторы, перерисовывающие компоненты методом Repaint, например:


    Размер меток Label определяется также свойством AutoSize. Если это свойство установлено в true, то вертикальный и горизонтальный размеры компонента определяются размером надписи. Если же AutoSize= false, то выравнивание текста внутри компонента определяется свойством Alignment, которое позволяет выравнивать текст по левому краю, правому краю или центру клиентской области метки.

    В панели Panel также имеется свойство AutoSize, но оно не относится к размерам надписи Caption. Однако, свойство выравнивания Alignment работает и для панели.

    В метке Label имеется свойство Wordwrap — допустимость переноса слов длинной надписи, превышающей длину компонента, на новую строчку. Чтобы такой перенос мог осуществляться, надо установить свойство WordWrap= true, свойство AutoSize= false (чтобы размер компонента не определялся размером надписи) и сделать высоту компонента такой, чтобы в нем могло поместиться несколько строк (см. пример правой нижней метки на рис. 1. Если WordWrap=false, AutoSize=false, то длинный текст, не помещающийся в рамке метки, просто обрезается (см. пример левой нижней метки на рис. 1.

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

    Для отображения текстовой информации с дополнительной возможностью прокрутки длинных текстов можно использовать также окна редактирования Edit и MaskEdit в режиме Readonly(не изменяемый).

    Дата добавления: 2015-08-27 ; просмотров: 543 . Нарушение авторских прав

    Основные общие свойства компонентов.

    Компонентами в Delphi являются потомки класса TComponent, в котором инкапсулированы самые общие свойства и методы компонентов. Предком TComponent является класс TPersistent, который произошел непосредственно от базового класса TObject. Класс TComponent включает в себя свойства и методы, общие для всех компонентов.

    Свойства позволяют управлять внешним видом и поведением компонентов при создании и при выполнении и при выполнении приложения. Установка значений большинства свойств компонентов обычно выполняется при создании приложения с помощью Инспектора объектов, а в тексте программы с помощью оператора присваивания.

    Свойство Name типа String определяет имя компонента. Имя компонента строится по тем же правилам, что и имена любых других объектов программирования – констант, переменных, подпрограмм и т.д. Т.к. компоненты помещаются на форму, Delphi автоматически получает создаваемое средой имя, совпадающее с именем своего класса и дополненное числовым суффиксом: Form1, Label21, Edit5 и т.д. Впоследствии программист может переименовать компонент. Имя компонента должно быть коротким, легким для запоминания и обязательно записанным латинскими буквами.

    Положение и размеры компонента определяются четырьмя свойствами (в пикселях): Left, Top, Height, Width.

    Свойство Height типа Integer определяет высоту компонента.

    Свойство Width типа Integer определяет ширину компонента.

    Свойство Left типа Integer определяет координаты левой границы компонента относительно содержащего его контейнера. В качестве контейнера чаще всего выступает форма или панель.

    Свойство Top типа Integer определяет координаты верхней границы компонента относительно содержащего его контейнера.

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

    — alNone – выравнивание не используется.

    — alTop – компонент перемещается в верхнюю часть контейнера, высота компонента не меняется, а ширина становится равной ширине контейнера.

    — alBottom – аналогично действию alTop, но компонент перемещается в нижнюю часть контейнера.

    — alLeft – компонент перемещается в левую часть контейнера, ширина компонента не меняется, а его высота становится равной высоте контейнера.

    — alRight – аналогичен действию alLeft, но компонент перемещается в правую часть контейнера.

    — alClient – компонент занимает весь контейнер.

    Свойство Visible типа Boolean позволяет спрятать или показать компонент. Если свойство имеет значение True, то компонент виден, если значение False, то спрятан. Спрятанный компонент не реагирует на события от мыши или клавиатуры, ему нельзя передать фокус ввода.

    Свойство Enabled типа Boolean определяет активность компонента, т.е. способность реагировать на события. Если свойство имеет значение True, то компонент активен, false – не активен.

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

    — Name – определяет название шрифта из списка шрифтов, доступных операционной системе.

    — Size – задает размер шрифта в пунктах.

    — Style – определяет стиль шрифта (жирный, курсив, подчеркнутый).

    — Color – цвет текста.

    Свойство Color типа TColor определяет цвет фона компонента. Значение свойства Color представляет собой четырехбайтовое шестнадцатеричное число. Старший байт обычно содержит код $00, а младших три байта задают интенсивность цветов – красного, зеленого и синего. Нужный цвет получается при смешивании этих цветов в разных пропорциях. Так черному соответствует код $000000, белому — $FFFFFF, красному — $0000FF, зленному — $00FF00, синему — $FF0000.

    Но обычно значение этого свойства выбирается из таблицы стандартных цветов Windows в виде константы (белый – clWhite, красный – clRed, зеленый – clGreen, синий – clBlue, желтый – clYellow, и т.д.).

    Свойство Caption типа TCaption содержит строку для надписи заголовка компонента. Тип TCaption аналогичен типу String.

    Свойство Hint типа String задает текст подсказки, отображаемый в том случае, когда курсор находится в области компонента и некоторое время неподвижен. Для того, чтобы подсказка отображалась необходимо установить значение True свойству ShowHint.

    Свойство Text типа TCaption содержит строку, связанную с компонентом, но значение этого свойства появляется не как заголовок, а как содержимое компонента.

    Свойство ReadOnly типа Boolean определяет, разрешено ли управляющему элементу, связанного с вводом и редактированием информации, изменять находящийся в нем текст. Если свойство имеет значение True, то текст в компоненте доступен только для чтения, а если False, то его можно изменять.

    Поскольку клавиатура – одна, а элементов, могущих ее использовать, может быть много, необходимо каким-то способом выделять элемент, которому в данный момент передается клавиатурный ввод. Это достигается передачей элементу фокуса ввода. Фокус ввода передается элементу после щелчка на нем мышью или в порядке выбора его клавишей Tab. Если компонент имеет фокус ввода, то его свойство Focused типа Boolean имеет значение True. А если элемент запрещен к выбору или невидим, то его свойство CanFocused типа Boolean имеет значение False.

    Основные общие методы компонентов.

    DisableAlign – временное отключение эффекта от свойства Align.

    EnableAlign– включение эффекта от свойства Align.

    Hide – скрывает компонент.

    Show – отображает компонент.

    SetFocus – передача компоненту фокуса ввода. Компонент не может получить фокус ввода, когда свойство Enabled равно false.

    Clear – служит для очистки содержимого компонентов (текстовой информации).

    Refresh – используется для обновления элемента и его перерисовке.

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

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

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

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

    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) позволяет вводить с клавиатуры и редактировать различ­ные символы, при этом поддерживаются операции, такие как, перемещение по строке с использованием клавиш управления курсором, удаление симво­лов с помощью клавиш и , выделение части текста и др. Однако, однострочный редактор не реагирует на управляющие клавиши и .

    Свойство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);

    if (Key ‘9’) then Key:=#0;

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

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

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

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

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

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

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

    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 в текстовый файл.

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

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

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

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

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

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

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

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

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

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

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

    Аналогичное назначение имеет свойство 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);

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

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

    В редактор 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);

    Вверху в списке 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);

    procedure TForm5.btnSpisokCloseClick(Sender: TObject);

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

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

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

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

    Свойство Сount типа integer задает число элементов в списке. Так как пер­вый элемент списка имеет нулевой номер, то номер последнего элемента равен count-1.

    Пример: Присваивание элементам списка ListBox1 новых значений.

    for n:=0 to ListBoxi.Items.Count — 1 do

    ListBox1.Items[n]:=’Строка номер ‘+IntToStr(n);

    Методы Add и Insert обеспечивают добавление строк в список.

    Функция Add (const S: string): Integer добавляет в конец списка строку, заданную параметром s, а в качестве результата возвращает положение нового элемента в списке.

    Процедура Insert (Index: Integer; const S: String) вставляет строку S на позицию с номером, определяемым параметром Index. При этом элемен­ты списка, находившиеся до операции вставки в указанной позиции и ни­же, смещаются вниз.

    Пример.Добавление к комбинированному списку ComboBoxl строки «Нажата кнопка Buttonl».

    procedure TForml.ButtonlClicklSender: TObject);

    ComboBoxl.Items.Add(‘Нажата кнопка Buttonl’);

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

    Процедура AddStrings (strings: Tstrings) добавляет в конец списка группу строк, описываемую параметром strings.

    Компоненты VCL Delphi. Отображение и ввод чисел, дат и времени. Отображение иерархических данных. Системные диалоги

    Страницы работы

    Содержание работы

    2.2.2 Отображение и ввод чисел, дат и времени

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

    Ввод и отображение целых чисел


    Компонент UpDown (страница Win32) превращает окно редактирования Edit в компонент, в котором можно выбирать целое число, изменяя его кнопками со стрелками. Если установить свойство ReadOnly компонента Edit в True, то пользователь не сможет ввести какое-либо значение, не используя UpDown.

    Основное свойство компонента – Associate, связывающее кнопки со стрелками с одним из оконных компонентов, обычно Edit.

    Свойство AlignButton определяет, слева (udLeft) или справа (udRight) относительно компонента будут размещаться кнопки. Свойство Orientation определяет, расположатся кнопки по вертикали (udVertical) или по горизонтали (udHorizontal). Свойство ArrowKeys определяет, будут ли управлять компонентом клавиши клавиатуры со стрелками.

    Свойство Min и Max задают минимальное и максимальное значение чисел, свойство Increment задает приращение (по умолчанию 0, 100, 1).

    1. Начните новый проект InputInt;

    2. На форме расположите компоненты, как на рис. 2.11;

    3. Задайте для имеющихся компонентов свойства, представленные в табл. 2.8;

    Компоненты ввода и отображения текстовой информации

    10. Функции ввода и вывода данных.

    Функция ввода данных InputBox () . Эта функция по­зволяет вводить данные с помощью диалогового окна ввода. Аргументами этой функции являются две строки, а значе­нием функции — строка, введенная пользователем в тексто­вое поле.

    Например, можно с помощью функции InputBox () за­просить имя и фамилию и присвоить это значение строковой переменной Family :

    Family = InputBox («Введите имя и фамилию:», «Регистрация»)

    В процессе выполнения этой функции появляется диало­говое окно с текстовым полем. В само окно выводится значе­ние первого аргумента «Введите имя и фамилию:» . В стро­ке заголовка окна выводится значение второго аргумента «Регистрация» (рис. 2.15).

    Если пользователь введет имя и фамилию в текстовое поле и щелкнет по кнопке ОК, то значением функции станет строка, введенная пользователем в текстовом поле. Если пользователь щелкнет по кнопке Cancel , то значением функ­ции станет пустая строка » «.

    Рис. 2.15. Диалоговое окно ввода функции InputBox ()

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

    MsgBox («Сообщение» [,ЧисКод1+ЧисКод2] [,»Заголовок»])

    Аргумент «Сообщение» выводится в окно сообщений, ар­гумент

    ЧисКод1+ЧисКод2 определяет внешний вид окна, а строка «Заголовок» выводится в строку заголовка окна. Последние два аргумента не являются обязательными.

    Необязательные части программного кода заключают­ся в квадратные скобки.

    Например, для функции

    MsgBox («Сообщение», 48+3, «Заголовок»)

    будет выведено окно сообщений, показанное на рис. 2.16.

    Рис. 2.16. Диалоговое окно сообщений функции MsgBox ()

    Внешний вид окна сообщений можно менять, используя различные значения ЧисКод1 и ЧисКод2 . Значение ЧисКод1 определяет вид пиктограммы, которая помещается в окно сообщений, а значение ЧисКод2 определяет набор кнопок размещаемых в окне (табл. 2.6).

    Таблица 2.6. Значения ЧисКод1 и ЧисКод2 , определяющие вид окна сообщений

    4.3. Представление в компьютере текстовой информации

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

    Для перевода информации из машинного представления в человеческий необходимы таблицы кодировки символов — таблицы соответствия между символами определенного языка и кодами символов. Их еще называют кодовыми страницами (code page или сокр. cp), известен также английский термин character set (который иногда сокращают до charset).

    Самой известной таблицей кодировки является код ASCII — американский стандартный код для обмена информацией. Первоначально он был разработан для передачи текстов по телеграфу, причем в то время он был 7-битовым, то есть для кодирования символов английского языка, служебных и управляющих символов использовались только 128 семибитовых комбинаций. При разработке первых компьютеров фирмы IBM этот код был использован для представления символов в компьютере. Поскольку в исходном коде ASCII было всего 128 символов, для их кодирования хватило значений байта (8-ой бит равен 0). Список этих символов и соответствующие им восьмиразрядные (то есть состоящие из восьми двоичных разрядов) двоичные коды образуют ос­новную (базовую) кодовую таблицу ASCII.

    Когда стали приспосабливать компьютеры для других стран и языков, места для новых символов уже не стало хватать. Для того, чтобы полноценно поддерживать помимо английского и другие языки, фирма IBM ввела в употребление несколько кодовых таблиц, ориентированных на конкретные страны. Так для скандинавских стран была предложена таблица 865 (Nordic), для арабских стран — таблица 864 (Arabic), для Израиля — таблица 862 (Israel) и так далее. В этих таблицах часть кодов из второй половины кодовой таблицы (т.е. те, для которых 8-й бит равен 1) использовалась для представления символов национальных алфавитов (за счет исключения некоторых символов псевдографики). Вариант кодовой страницы, используемый в Соединенных Штатах Америки и большинстве европейских стран, называется Code Page 437 (CP437).

    Очевидно, что замену символов во второй половине кодовой таблицы можно произвести разными способами. В России исторически так сложилось, что для русского языка существует несколько разных альтернативных таблиц кодировки символов кириллицы: KOI8-R, IBM CP-866, CP-1251, ISO-8551-5. Все они одинаково изображают символы первой половины таблицы (от 0 до 127) и различаются представлением символов русского алфавита и псевдографики.

    Альтернативная кодировка — основанная на CP437кодовая страница, где все специфические европейские символы вовторой половинезаменены накириллицу, оставляяпсевдографические символынетронутыми. Следовательно, это не портит видпрограмм, использующих для работытекстовыеокна, а также обеспечивает использование в них символов кириллицы.Альтернативной кодовой таблицей называют кодировку IBM CP-866, поддержка которой была добавлена в MS-DOS версии 6.22. Эта кодировка используется в консоли русифицированных систем семейства Windows NT.

    Вне среды MS-DOS в Microsoft Windows кодировка IBM CP-866 заменена стандартной кодировкой CP-1251, а в операционных системах Windows NT и следующих за ней (Windows 2000, Windows XP, Windows Server 2003, Windows Vista, Windows Server 2008) — кодировкой Юникод.

    В таблицах под каждым символом указан его десятичный код, номер строки и столбца дает шестнадцатеричный код. Пример: символ «Я» имеет код 15910 и 9F16

    Таблица 4.4. Альтернативная кодовая таблица (CP-866)

    Таблица 4.5. Кодовая таблица Windows (CP-1251)

    Пример 4.6. Так будет выглядеть слово «Информатика» в различных кодировках в 16-чной системе счисления:

    Лабораторная работа Тема: Компоненты ввода и отображения текстовой информации. Базовые компоненты. Цель лабораторной работы

    Тема: Компоненты ввода и отображения текстовой информации. Базовые компоненты.

    Цель лабораторной работы – Познакомиться с базовыми компонентами среды программирования, с компонентами ввода и отображения текстовой информации. Получить знания в области программирования.

    Студенты должны научиться:

    • Разрабатывать программы с использованием базовых компонентов
    • Использовать базовые компоненты
    • Применять характеристики компонентов в программах

    Компетенции, которые получат:

    • БК 1 – соблюдать технику безопасности и правила пожарной безопасности
    • БК 4 – организовать работу с различными источниками информации – находить, обрабатывать, хранить и воспроизводить
    • БК 7 – определять наиболее актуальные подходы алгоритмизации и способы решения поставленной задачи
    • ПК 1 – проводить трансляцию и отладку программы, управлять данными при решении задач
    • ПК 2 – осуществлять решение задач из различных областей науки, техники, экономики и производства с применением математических методов и вычислительной техники на всех этапах от постановки до получения результата на ЭВМ
    • ПК 3 – составлять тесты и производить тестирование программ
    • ПК 4 – построить автоматизированные системыобработки информации

    Приступая к решению задач, необходимо вспомнить:

    • Процесс создания программы в Delphi состоит из двух шагов: сначала нужно создать форму программы (диалоговое окно), затем — написать процедуры обработки событий. Форма приложения (так принято называть прикладные программы, работающие в Windows) создается путем добавления в форму компонентов и последующей их настройки.

    • На форме практически любого приложения есть компоненты, которые обеспечивают интерфейс (взаимодействие) между программой и пользователем. Такие компоненты называют базовыми. К базовым компонентам можно отнести: Label — поле вывода текста; Edit — поле ввода/редактирования текста; Button — командную кнопку; CheckBox — независимую кнопку выбора; RadioButton — зависимую кнопку выбора; ListBox — список выбора; ComboBox — комбинированный список выбора. 10 Часть 1

    • Вид компонента, его размер и поведение определяются зна­ чениями свойств (характеристик) компонента (описание свойств базовых компонентов можно найти в справочнике, во второй части книги).

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

    • Исходную информацию программа может получить из полей ввода/редактирования (компонент Edit), списка выбора (компонент ListBox) или комбинированного списка (компо­ нент ComboBox). Для ввода значений логического типа можно использовать компоненты CheckBox и RadioButton.

    • Результат программа может вывести в поле вывода текста (компонент Label) или в окно сообщения (функция MessageDlg).

    • Для преобразования текста, например, находящегося в поле ввода/редактирования, в целое число нужно использовать функцию StrToInt, a в дробное — функцию StrToFloat. Для преобразования целого, например, значения переменной, в строку нужно использовать функцию IntTostr, а для преобразования дробного — функцию FloatToStr или FloatToStrF.

    Написать программу, которая пересчитывает скорость ветра из «метров в секунду» в «километров в час».

    Разместите 3 Label, Edit, Button. Подпишите соответствующе.

    На событие OnClick кнопки пропишите код:

    ms: integer; // скорость м/с

    kmh: real; // скорость км/час

    ms:= StrToInt(Edit1.Text); // ввести исходные данные

    kmh := ms * 3.6; // пересчитать

    IntToStr(ms) + ‘ м/с — это ‘ + FloatToStr(kmh) + ‘ км/час’

    Написать программу, которая пересчитывает скорость ветра из «метров в секунду» в «километров в час». Программа должна быть спроектирована таким образом, чтобы пользователь мог ввести в поле Скорость только целое положительное число.

    Разместите 3 Label, Edit, Button. Подпишите соответствующе.

    На событие OnClick кнопки пропишите код:

    ms: integer; // скорость м/с

    kmh: real; // скорость км/час

    // если поле Edit1 пустое, то при выполнении функции

    // StrToInt возникает ошибка.

    // Проверим, ввел ли пользователь скорость в поле Edit1

    if Length(Edit1.Text) = 0 then

    ShowMessage(‘Надо ввести скорость’);

    exit; // завершить обработку события

    ms:= StrToInt(Edit1.Text); // ввести исходные данные

    kmh := ms * 3.6; // пересчитать

    IntToStr(ms) + ‘ м/с — это ‘ + FloatToStr(kmh) + ‘ км/час’

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

    // Key — символ, соответствующий нажатой клавише

    if not ((Key >= ‘0’) and (Key

    #13: WindSpeed; // пересчитать скорость

    else Key := Chr(0); // остальные символы не отображать

    Илон Маск рекомендует:  Matherr обработка ошибки математической функции
    Понравилась статья? Поделиться с друзьями:
    Кодинг, CSS и SQL