Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Практикум по информатике Часть2 Delphi.pdf
Скачиваний:
149
Добавлен:
27.03.2016
Размер:
10.35 Mб
Скачать

Часть II. Delphi

Глава 7. Двумерные массивы. Компонент StringGrid. Разработка многооконных проектов

В данной главе рассматриваются следующие вопросы: компонент StringGrid,

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

Теория

Определение двумерного массива было дано в предыдущем параграфе.

Компонент StringGrid

Находится на вкладке Additional.

StringGrid — служит для представления текстовых данных в виде таблицы. Очень удобен для ввода и вывода массивов (одномерных и двухмерных). Доступ к каждому элементу таблицы происходит через свойство Cells. Наиболее важными для нас являются следующие свойства компонента StringGrid.

 

Свойство

Назначение

 

 

 

 

 

Name

Имя компонента

 

 

 

 

ColCount

Количество колонок таблицы

 

 

RowCount

Количество строк таблицы

 

 

Cells

Соответствующий

таблице

 

 

 

двумерный

 

массив.

 

Ячейка

 

 

 

таблицы,

находящаяся

на

 

 

 

пересечении столбца номер col и

 

 

 

строки номер

row определяется

 

 

 

элементом cells[col, row]

 

 

 

 

FixedCols

Количество

зафиксированных

 

 

 

слева

колонок

таблицы.

 

 

 

Зафиксированные

колонки

 

 

 

выделяются

цветом

и

при

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Часть II. Delphi

 

горизонтальной

прокрутке

 

остаются на месте

 

 

FixedRows

Количество

зафиксированных

 

сверху

строк

таблицы.

 

Зафиксированные

строки

 

выделяются

цветом

и

при

 

вертикальной прокрутке таблицы

 

остаются на месте

 

 

Options.goEditing

Признак

 

допустимости

 

редактирования

содержимого

 

ячеек

таблицы.True

 

 

редактирование

разрешено.

False

 

― запрещено

 

 

 

Options.goTabs

Разрешает (True) или запрещает

 

(False) использование

клавиши

 

<Tab> для перемещения курсора в

 

следующую ячейку таблицы

 

Options.goAlwaysShowEditor

Признак

 

нахождения

 

компонента

 

в

режиме

 

редактирования.

Если

значение

 

свойства False, то для того, чтобы

 

в ячейке появился курсор, надо

 

начать набирать текст, нажать

 

клавишу <F2> или сделать щелчок

 

мышью

 

 

 

 

Внимание! У элементов таблицы StringGrid первый индекс это номер столбца,

второй индекс это номер строки (cells[col, row]).

Технология создания многооконных проектов

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

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

Добавление новой формы в проект. Можно с помощью

Часть II. Delphi

команды File→New→NewForm

Вывод списка форм проекта

Вывод списка модулей проекта

Вместе с формой в проект добавляется связанный с ней модуль. Например, для формы Form2 добавится модуль Unit2.

Структуру многооконного проекта можно представить в виде схемы

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

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Grids,Unit2,Unit3;

Для вывода на экран дочерних форм используется процедура Show (показать). Например,

Form2.Show;

Враздел public дочерних модулей целесообразно включить описание переменных

имассивов, передающихся из родительского модуля.

Если в родительском модуле используются компоненты из дочерних форм, перед их названием пишется имя формы, где они находятся. Например, Form2.StringGrid1.

Ввод и вывод двумерных массивов c помощью компонента StringGrid

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

Часть II. Delphi

форму компонент ButtonN и создав процедуруButtonNClick.Но можно записать и в отдельной процедуре, например, связанной с событием выход (Exit) из компонента Edit, где вводится размерность массива, или в процедуре, связанной с событием создания формы (FormCreate).

Пример {Процедура подготовки таблицы на форме для ввода квадратной матрицы, которая

выполняется при выходе из поля ввода размерности матрицы.} procedure TForm1.Edit1Exit(Sender: TObject);

Vari,j:Integer;// номера строки столбца квадратной матрицы begin

//порядок матрицы получает свое значение из поля ввода

N:=StrToInt(Edit1.Text);

//свойство количество строк компонента StringGrid

//получает значение: порядок +1 StringGrid1.RowCount:=N+1;

//свойство количество столбцов компонента StringGrid

//получает значение порядок: +1 StringGrid1.ColCount:=N+1; //подпись заголовка таблицы

For i:=1 to StringGrid1.RowCount do StringGrid1.Cells[i,0]:= IntToStr(i); //подписьстроктаблицы

For j:=1 to StringGrid1.ColCount do StringGrid1.Cells[0,j]:= IntToStr(j);

//добавление в свойства таблицы признака

//допустимости редактирования содержимого ячеек таблицы

StringGrid1.Options:= StringGrid1.Options +[goEditing]; end;

Замечание

Для создания процедуры, связанной с каким-то событием, произошедшим с компонентом, нужно перейти на вкладку Events (события), найти нужное событие в строке, например OnCreate, и два раза щелкнуть мышью). Рядом с событием OnCreate для компонента Form появится событие FormCreate. В модуле автоматически будет создана заготовка процедуры создания формы:

procedureTForm1.FormCreate(Sender: TObject); begin

Часть II. Delphi

end;

Если щелкнуть по компоненту Edit, то автоматически будет создана заготовка процедуры обработки события изменение компонента Edit:

procedure TForm1.Edit1Change(Sender: TObject); begin

end;

Нужно изменить событие Change (изменить) на событие Exit (выход). Для этого обязательно перейти на вкладку события (Events) в инспекторе объектов. В строке OnExit раскрыть список, выбрать название Edit1Change и заменить Change на Exit.

Для чтения двумерного массива действительных чисел из StrigGrid

необходимо записать операторы, подобные этим: For i:=1 to StringGrid1.RowCount-1 do

For j:=1 to StringGrid1.ColCount-1 do Massiv[i,j]:=StrToFloat(StringGrid1.Cells[j,i]);

Длязаписи двумерного массива действительных чисел в StrigGrid необходимо

записать операторы, подобные этим: For i:=1 to StringGrid1.ColCount-1 do

For j:=1 to StringGrid1.RowCount-1 do StringGrid1.Cells[j,i]:=FloatToStr(Massiv[i,j]);

Понятие о классах в Delphi

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

Система Delphiвсегда сама генерирует свои классы во время проектирования приложения.Описание сформированного класса находится в разделе typeинтерфейсной части модуля. Например, в программе про бак для летнего душа из параграфа 2 описание класса выглядит так:

type

TForm1 = class(TForm) Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel;