Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
YaPVUTS.doc
Скачиваний:
31
Добавлен:
11.04.2015
Размер:
3.15 Mб
Скачать
    1. Диалоговые компоненты

Существует множество различных ситуаций, когда пользователю необходимо сделать некий выбор, например, выбрать имя файла для записи или для открытия. Для этой цели служат диалоговые компоненты, которые обеспечивают создание и показ диалоговых окон во время работы приложения. Диалоговые компоненты сосредоточены на закладке 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;

    1. Таблица строк

Компонент 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 в Инспекторе объектов необходимо установит свойства:

ColCount=2

RowCount=2

FixedCols=0

FixedRows=1

При создании формы происходит заполнение заголовка (фиксированной части) таблицы.

procedure TForm1.FormCreate(Sender: TObject);

begin

with StringGrid1 do

begin Cells[0,0]:='x';

Cells[1,0]:='sin x';

end;

При нажатии кнопки таблица заполняется значениями функции.

procedure TForm1.Button1Click(Sender: TObject);

var y:real;

i:integer;

begin

y:=strtofloat(Edit1.text);

i:=1;

while y<=strtofloat(Edit2.text) do

begin

with StringGrid1 do

begin

cells[0,i]:=floattostr(y);

cells[1,i]:=floattostr(sin(y));

RowCount:=RowCount+1;

end;

y:=y+0.25; i:=i+1;

end;

end;

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]