Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
82_3-Builder.doc
Скачиваний:
45
Добавлен:
24.02.2016
Размер:
1.22 Mб
Скачать

5.2. Создание оконного приложения Компонента StringGrid

При работе с массивами ввод и вывод значений обычно организуется с использованием компоненты StringGrid, предназначенной для отображения информации в виде двухмерной таблицы, каждая ячейка которой представляет собой окно однострочного редактора (аналогично окнуEdit). Доступ к информации осуществляется с помощью элементаCells[ACol][ARow] типаAnsiString, где целочисленные значенияACol,ARowуказывают позицию элемента.

Внимание! Первый индекс ACol определяет номер столбца, а второй ARow – номер строки в отличие от индексов массива.

В инспекторе объектов значения ColCountиRowCountустанавливают начальные значения количества столбцов и строк в таблице, аFixedColsиFixedRowsзадают количество столбцов и строк фиксированной зоны. Фиксированная зона выделена другим цветом и обычно используется для надписей.

5.3. Пример выполнения задания

Удалить из массива А размеромN, состоящего из целых чисел (положительных и отрицательных), все отрицательные числа. Новый массив не создавать. Для заполнения массива использовать фунциюrandom(kod) – генератор случайных равномерно распределенных целых чисел от 0 до (int)kod.

5.3.1. Пример создания оконного приложения

Значение Nвводить изEdit, значения массиваА– из компонентыStringGrid. Результат вывести в компонентуStringGrid.

Панель диалога и результаты выполнения программы приведена на рис. 5.1.

Рис. 5.1

Настройка компоненты StringGrid

На закладке Additionalвыберите пиктограмму, установите компонентыStringGrid1 иStringGrid2 и отрегулируйте их размеры. В инспекторе объектов для обоих компонент установите значенияColCountравными 2,RowCountравными 1, т.е. по два столбца и одной строке, а значенияFixedColsиFixedRowsравными 0. Значение ширины клетки столбцаDefaultColWidthравным 40.

По умолчанию в компоненту StringGridввод данных разрешен только программно. Для разрешения ввода данных с клавиатуры необходимо в свойствеOptionsстрокуgoEditingдля компонентыStringGrid1 установить в положениеtrue.

Текст функций-обработчиков может иметь следующий вид:

. . .

int n = 4;

//---------------------------------------------------------------------------

void __fastcall TForm1::FormCreate(TObject *Sender)

{

randomize(); // Изменение начального адреса дляrandom()

Edit1->Text=IntToStr(n);

StringGrid1->ColCount=n;

for(inti=0;i<n;i++) // Заполнение массива А случайными числами

StringGrid1->Cells[i][0] = IntToStr(random(21)-10);

Label3->Hide(); // Скрыть компоненту

StringGrid2->Hide();

}

//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)

{

n=StrToInt(Edit1->Text);

if(n>10){

ShowMessage("Максимальное количество 10!");

n=10;

Edit1->Text = "10";

}

StringGrid1->ColCount=n;

for(int i=0; i<n;i++)

StringGrid1->Cells[i][0]=IntToStr(random(21)-10);

Label3->Hide();

StringGrid2->Hide();

}

//---------------------------------------------------------------------------

void __fastcall TForm1::Button2Click(TObject *Sender)

{

int i, kol = 0, a[10]; // Декларация одномерного массива

//Заполнение массива А элементами из таблицы StringGrid1

for(i=0;i<n;i++)

a[i]=StrToInt(StringGrid1->Cells[i][0]);

//Удаление отрицательных элементов из массива А

for(i=0; i<n;i++)

if(a[i]>=0) a[kol++] = a[i];

StringGrid2->ColCount=kol;

StringGrid2->Show();// Показать компоненту

Label3->Show();

//Вывод результата в таблицу StringGrid2

for(i=0; i<kol;i++) StringGrid2->Cells[i][0]=IntToStr(a[i]);

}

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