procedure TForm1.FormCreate(Sender: TObject);

begin

Memol. Lines. LoadFromFile(ChangeFileExt(Application. ExeName,'.dpr'))

end;

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

Для всех редактируемых компонентов определено событие OnChange, которое генерируется при изменении содержимого компонента. Для примера приведем обработчик события OnChange, в котором изменяется надпись при наборе текста в строке редактирования.


procedure TForm1.Edit1Change(Sender: TObject);

begin

Label1.Caption:='Идет ввод текста';

end;

5.4  Списки выбора

Списки выбора являются удобными интерфейсными элементами Windows, с помощью которых пользователь может выбрать один или несколько элементов выбора. На закладке Standart имеются два компонента, которые служат примерами списков выбора: TListBox (обычный список выбора) и TComboBox (раскрывающийся список выбора). Оба эти компонента имеют общего предка TWinControl.

Рассмотрим свойства компонента TListBox.

Таблица 18 Свойства компонента TListBox

НЕ нашли? Не то? Что вы ищете?

AutoComplete

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

BorderStyle

Перечислимое свойство определяет стиль рамки: bsNone – нет рамки; bsSingle – рамка толщиной в один пиксел.

Canvas

Канва для программной прорисовки элементов.

Columns

Определяет количество колонок элементов в списке.

ItemIndex

Содержит индекс сфокусированного элемента. Если свойство MultiSelect равно False, то Itemlndex совпадает с индексом выделенного элемента

Items

Содержит набор строк, показываемых в компоненте

MultiSelect

Логическое свойство, разрешающее (отменяющее) возможность выбора нескольких элементов

SelCount

Содержит количество выбранных элементов

Selected[X: Integer]

Индексированное свойство, которое содержит признак выбора (True/False) для элемента с индексом Х (первый элемент имеет индекс 0)

Sorted

Логическое свойство, которое разрешает/отменяет сортировку строк в алфавитном порядке

Style

Перечислимое свойство, которое определяет способ прорисовки элементов в компоненте: lbStandard – элементы рисует Windows; lbOwnerDrawFixed, lbOwnerDrawVariable – прорисовка элементов осуществляется программно.

TopIndex: Integer

Индекс первого видимого в окне элемента

Создание элементов (опций) списка компонента реализуется с помощью методов свойства Items (типа TStrings) – Add, Append, Insert или LoadFromFile.

Для примера рассмотрим процедуру переноса выбранных строк из одного списка в другой.

procedure TForm1.BitBtn1Click(Sender: TObject);

var i: integer;

begin

for i:=0 to ListBox1.Items. Count-1 do

If ListBox1.Selected[i] then

ListBox2.Items. Add(ListBox1.Items[i]);

end;

Комбинированный список TComboBox представляет собой комбинацию списка TListBox и редактора TEdit, и поэтому большинство его свойств и методов заимствованы у этих компонентов. Существуют пять модификаций компонента, определяемые его свойством Style: csSimple, csDropDown, csDropDownList, csOwnerDrawFixed и csOwnerDrawVariabie. В первом случае список всегда раскрыт, в остальных он раскрывается после нажатия кнопки справа от редактора. В модификации csDropDownList редактор работает в режиме отображения выбора и его нельзя использовать для ввода новой строки (в других модификациях это возможно). Модификации csOwnerDrawFixed и csOwnerDrawVariable используются для программной прорисовки элементов списка.

Собственными у компонента являются лишь свойства и события, связанные с раскрытием списка.

Таблица 19 Свойства и события TComboBox, связанные с раскрытием списка

DropDownCount

Определяет количество элементов списка, появление которых еще не приводит к необходимости прокрутки списка По умолчанию это свойство имеет значение 8: если в списке указано 9 и более элементов (т. е. больше, чем содержит DropDownCount), при его раскрытии к окну будет добавлена полоса прокрутки.

DroppedDown

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

Событие OnDropDown происходит при изменении состояния списка.

5.5  Меню

Визуальный компонент класса TMainMenu определяет главное меню формы, которое может быть только у формы. На форму можно поместить сколько угодно объектов этого класса, но отображаться в полосе меню в верхней части формы будет только тот из них, который указан в свойстве Menu формы. После установки компонента на форму необходимо создать его опции. Для этого следует дважды щелкнуть по компоненту левой кнопкой мыши, либо нажать на нем правую кнопку и выбрать команду Menu Designer в появившемся вспомогательном меню. Процесс создание опций меню имеет интуитивно понятный интерфейс. Перейдите в окно Инспектора объектов и введите текст опции в строке caption, после чего нажмите Enter – опция готова, и можно переходить к следующей. Каждая опция главного меню может раскрываться в список подопций или содержать конечную команду. Для создания подопций щелкните мышью по строке ниже опции и введите первую подопцию. Продолжайте ввод, пока не будет создан весь список подопций, после чего щелкните по пустому прямоугольнику справа от первой опции и введите вторую опцию. В названиях опций можно указать символ “&” перед тем символом, который определит клавишу быстрого выбора опции (в терминологии Windows такие клавиши называются акселераторами). Например, на рисунке показана опция Файл, которую можно выбрать сочетанием клавиш Alt+Ф. При создании меню эта опция в строке Сaption в Инспекторе объектов содержала текст &Файл. При желании можно вставить разделительную черту, отделяющую группы подопций. Для этого необходимо назвать очередной элемент меню именем “–”.

Для создания разветвленных меню, т. е. таких, у которых подопций вызывают новые списки подопций, щелкните по подопций и нажмите Ctrl+вправо, где вправо – клавиша смещения курсора вправо. Такого же эффекта можно добиться после щелчка правой кнопкой мыши на подопций и выборе продолжения Сreate Submenu. На рисунке показан пример разветвленной структуры меню.

Таблица 20Свойства компонента TMainMenu

AutoHotkeys

Перечислимое свойство, определяющее будет ли следить программа за уникальностью клавиш быстрого выбора для всех опций меню: maAutomatic – автоматически при создании опции; maManual – с помощью вызова специального метода; maРarent – по правилу, установленному для опции верхнего уровня

Images

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

Items

Открывает индексированный доступ к опциям меню

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

Таблица 21 Свойства TMenuItem

AutoCheck

Логическое свойство, которое определяет, будет или нет автоматически изменяться свойство Сhecked при выборе опции меню

AutoHotkeys

Определяет, будет ли следить программа за уникальностью клавиш быстрого выбора для подопций: maAutomatic – автоматически при создании подопции; maManual – с помощью вызова специального метода; maParent – по правилу, установленному для опции верхнего уровня

Bitmap

Содержит ссылку на связанное с опцией изображение. Это изображение (если оно есть) появляется слева от опции. Свойство игнорируется, если установлено свойство ImageIndex (см. ниже)

Break

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

Checked

Если свойство содержит True, рядом с опцией появляется галочка

Count

Содержит количество опций в подчиненном меню, связанном с данным элементом (только для чтения)

ImageIndex

Содержит индекс связанного с опцией изображения из компонента TImageList. Это изображение (если оно есть) появляется слева от опции. Если свойство имеет значение -1, с опцией не связано никакого изображения из TImageList

Items[Index: Integer]

Позволяет обратиться к любой опции подчиненного меню по ее индексу

Shortcut

Задает клавиши-акселераторы для быстрого выбора данной опции

В Delphi 4 (5 и 6) появилась возможность связывать с опциями меню небольшие изображения. Эти изображения можно задать либо свойством BitMap, либо свойством ImageIndex. В последнем случае предполагается, что для меню в целом определено свойство Images. Изображение показывается слева от опции. Например, на рисунке показан фрагмент главного меню Delphi с раскрытой опцией File. Как видим, опции Open, Оpen Project, Save и т. д. снабжены небольшими пиктограммами. Введение пиктограмм в меню повышает наглядность

Свойство Break по умолчанию имеет значение mbNone. Два других возможных значения этого свойства используются для создания многоколончатых списков подменю. Значение mbBarBreak заканчивает предыдущую колонку и начинает новую. Эта опция меню будет открывать новую колонку, которая отделяется от предыдущей вертикальной чертой. Значение mbBreak также создает новую колонку, но не вставляет разделительную черту. Эти значения игнорируются в опциях самого первого уровня. В окне конструктора многоколончатое меню отображается как обычное.

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

Компоненты класса TPopupMenu используются для создания вспомогательных (локальных) меню, появляющихся после нажатия правой кнопки мыши. В отличие от главного меню, вспомогательное меню может быть создано для любого оконного компонента. Чтобы связать щелчок правой кнопкой мыши на компоненте с раскрытием вспомогательного меню, в свойство PоpupMеnu компонента необходимо поместить имя компонента-меню.

Вспомогательное меню создается с помощью конструктора меню и содержит элементы описанного в п. 18.1.2 класса TMenuItem, поэтому процесс создания и свойства вспомогательного меню ничем не oтличаются от процесса создания и свойств TMainMenu.

5.6  Диалоговые компоненты

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

Рассмотрим компоненты TSaveDialog и TOpenDialog. Эти компоненты имеют идентичные свойства и поэтому рассматриваются вместе. Пример окна, которое реализует компонент TOpenDialog показан на рисунке.

Таблица 22 Свойства TSaveDialog и TOpenDialog

FileName

Содержит маршрут поиска и выбранный файл при успешном завершении диалога

Filter

Используется для фильтрации (отбора) файлов, показываемых в диалоговом окне.

InitialDir

Содержит имя начального каталога

DefaultExt

С помощью свойства DefaultExt формируется полное имя файла, если при ручном вводе пользователь не указал расширение. В этом случае к имени файла прибавляется разделительная точка и содержимое этого свойства.

Title

Содержит заголовок диалогового окна

Программа может использовать это свойство FileName для доступа к файлу с целью читать из него данные (TOpenDialog) или записывать в него (TSaveDialog), при этом пользователь может ввести произвольное имя и, следовательно, указать несуществующий файл. Для записи это не имеет значения, но при чтении отсутствие файла может привести к краху программы. Чтобы избежать этого, можно проверить существование файла глобальной функцией FileExists.

Свойство Filter можно устанавливать с помощью специального редактора на этапе конструирования формы или программно. Для доступа к редактору достаточно щелкнуть по кнопке в строке Filter окна Инспектора объектов. При программном вводе фильтры задаются одной длинной строкой, в которой символы “|” служат для разделения фильтров друг от друга, а также для разделения описания фильтруемых файлов от соответствующей маски выбора. Например, оператор

OpenDialog1.Filter := 'Текстовые файлы|*.txt| Файлы Паскаля|*.раs';

задает две маски для отбора файлов с расширениями раs и TXT.

Главным методом компонентов TSaveDialog и TOpenDialog является функция Execute, которая показывает окно диалога и возвращает значение True, если диалог успешно завершен, т. е. пользователь ввел подходящее имя файла и нажал кнопку Сохранить/ Открыть. В противном случае, функция Execute возвращает значение False.

В диалоговом окне для ручного ввода имени файла предусмотрен элемент TEdit, который при желании можно заменить на TCоmbовох. Для этого необходимо свойству FileEditStyle придать значение fsComboBox вместо умалчиваемого fsEdit. Если выбран комбинированный список, с ним можно связать протокол выбора имен. Для этого используется свойство HistoryList, содержимое которого будет появляться в выпадающем списке. Этот список не пополняется автоматически, поэтому за его содержимым должна следить программа. Например:

if OpenDialog1.Execute then

begin

HistoryList. Add(OpenDialog1.FileName);

end;

Настройка диалога может варьироваться с помощью сложного свойства Options. Логические подсвойства этого свойства имеют следующий смысл.

Таблица 23 Значения свойства Options

ofReadOnly

Устанавливает переключатель Только для чтения

ofOverwritePrompt

Требует согласия пользователя при записи в существующий файл

ofHideReadOnly

Прячет переключатель Только для чтения

оfNoChangeDir

Запрещает смену каталога

ofShowHelp

Включает в окно кнопку Help

ofNoValidate

Запрещает автоматическую проверку правильности набираемых в имени файла символов

оfAllowMultiSelect

Разрешает множественный выбор файлов

ofExtensionDifferent

При завершении диалога наличие этого значения в свойстве Оptions говорит о том, что пользователь ввел расширение, отличающееся от умалчиваемого

ofPathMustExist

Разрешает указывать файлы только из существующих каталогов

ofFileMustExist

Разрешает указывать только существующие файлы

ofCreatePrompt

Требует подтверждения для создания несуществующего файла

ofShareAware

Разрешает выбирать файлы, используемые другими параллельно выполняемыми программами

оfNoReadOnlyReturn

Запрещает выбор файлов, имеющих атрибут Только для чтения

ofNoTestFileCreate

Запрещает проверку доступности сетевого или локального диска

оfNoNetworkButton

Запрещает вставку кнопки для создания сетевого диска

ofNoLongNames

Запрещает использование длинных имен файлов

ofOldStyleDialog

Создает диалог в стиле Windows 3-х

Приведем пример обработчика нажатия пункта Open главного меню формы. При этом файл с выбранным именем (с помощью диалога TOpenDialog) загружается в многострочный редактор TMemo.

procedure TForm1.Open1Click(Sender: TObject);

begin

If OpenDialog1.Execute then

If FileExists(OpenDialog1.FileName)

then

Memo1.Lines. LoadFromFile(

OpenDialog1.FileName)

end;

5.7  Таблица строк

Компонент TStringGrid (закладка Additional) предназначен для создания таблиц, в ячейках которых располагаются произвольные текстовые строки. Таблица делится на две части – фиксированную и рабочую. Фиксированная часть служит для показа заголовков столбцов/рядов и для ручного управления их размерами. Обычно фиксированная часть занимает крайний левый столбец и самый верхний ряд таблицы, однако с помощью свойств FixedCols и FixedRows можно задать другое количество фиксированных столбцов и рядов (если эти свойства имеют 0, таблица не содержит фиксированной зоны). Рабочая часть – это остальная часть таблицы. Она может содержать произвольное количество столбцов и рядов, более того, эти величины могут изменяться программно. Рабочая часть может не умещаться целиком в пределах окна компонента, в этом случае в него автоматически помещаются нужные полосы прокрутки. При прокрутке рабочей области фиксированная область не исчезает, но меняется ее содержимое – заголовки строк и рядов.

Центральным свойством компонента является Cells – двухмерный массив ячеек строкового типа, каждая из которых может содержать произвольный текст. Конкретная ячейка определяется парой чисел – номером столбца и номером ряда, на пересечении которых она находится (нумерация начинается с нуля). Количество ячеек по каждому измерению хранит пара свойств ColСount (количество столбцов) и RowCount (количество рядов). Значения-этих свойств и, следовательно, размеры таблицы могут меняться как на этапе разработки программы, так и в ходе ее работы, однако их значения должны быть как минимум на единицу больше соответственно значений в свойства FixedCols и FixedRows, определяющих размеры фиксированной зоны.

Таблица 24Свойства компонента TStringGrid

BorderStyle

Определяет рамку компонента: bsNone – нет рамки; bsSingle – рамка толщиной 1 пиксель

Cells[ACol, ARow]

Определяет содержимое ячейки с табличными координатами (ACol, ARow)

Col

Содержит номер столбца сфокусированной ячейки

ColCount

Содержит количество столбцов таблицы

Cols[Index: Integer]

Содержит все строки колонки с индексом Index

ColWidths[Index: Longint]

Содержит ширину столбца с индексом Index

EditorMode

Логическое свойство, которое разрешает/запрещает редактирование ячеек. Игнорируется, если свойство Options включает goAlwayseShowEditor или не включает goEditing

FixedColor

Определяет цвет фиксированной зоны

FixedCols

Определяет количество столбцов фиксированной зоны

FixedRows

Определяет количество рядов фиксированной зоны

GridHeight

Содержит высоту таблицы

GridWidth

Содержит ширину таблицы

Options

Содержит параметры таблицы

Row

Содержит номер ряда сфокусированной ячейки

RowCount

Содержит количество рядов таблицы

Rows[Index: Integer]

Содержит все строки ряда с индексом Index

ScrollBars

Определяет полосы прокрутки: ssNone – нет полос; ssHorizontal – в таблицу вставляется горизонтальная полоса; ssVertical – вставляется вертикальная полоса; ssBoth – вставляются обе полосы

В следующем примере компонент TStringGrid используется для показа значений функции с заданным шагом и на заданном отрезке (границы вводятся с клавиатуры в компоненты TEdit). Для TStringGrid в Инспекторе объектов необходимо установит свойства:

Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5