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

5.9 Компонент Timer(Таймер)

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

  • Interval – свойство, которое определяет период срабатывания таймера в миллисекундах.

  • Enabled – свойство с помощью которого управляют запуском и остановом таймера.

По истечении заданного интервала времени таймер срабатывает , вызывая событие OnTimer, а в обработчике этого события записываются необходимые операции. Например, если требуется через 5 сек после запуска приложения закрыть форму – заставку , отображающую логотип приложения , на ней надо разместить таймер , задав в нем Interval =5000.Затем в обработчике события OnTimer вставить оператор Close, закрывающий окно формы. В некоторых процедурах необходимо запустить таймер для отсчета заданного временного интервала, после которого необходимо выполнить некоторые операции и отключить таймер. Возможный вариант решения поставленной задачи заключается в следующем. Во время проектирования задается значение

свойства Interval и значение свойства Enabled = false. В момент , когда нужно запустить таймер , выполняется оператор Timer -> Enabled = true;.После чего в обработчике события OnTimer вставляется оператор Timer -> Enabled = false;, который отключает таймер.

5.10 Компонент StringGrid ( таблица строк)

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

Основные свойства компонента, определяющие отображаемый текст:

Cells - строка, содержащаяся в ячейке с заданными индексами столбца и строки;

Cols - список строк, содержащихся в столбце с заданным индексом;

Rows - список строк, содержащихся в строке с заданным индексом;

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

ColCount и RowCount - определяют соответственно число столбцов и строк;

FixedCols и FixedRows - определяют число фиксированных столбцов и строк;

FixedColor – определяет цвет фона фиксированных ячеек ;

ScrollBars - определяет наличие в таблице полос прокрутки. Причем полосы прокрутки появляются и исчезают автоматически в зависимости от того, помещается таблица в соответствующий размер, или нет.

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

ячейках определяется свойствами(goFixedVertLine и goFixedHorzLine), а в не фиксированных ячейках - свойствами (goVertLine и goHorzLine).Свойства (goColSizing и goRowSizing), определяют возможность изменения с помощью мыши размеров столбцов и строк, а свойства (goColMoving и goRowMoving) определяют возможность перемещения столбцов и строк и многое другое. Важным элементом в свойстве Options является goEditing - возможность редактировать содержимое таблицы.

Из методов компонента StringGrid следует отметить метод MouseCoord, который возвращает индексы строки и столбца ячейки, содержащей точку с заданными координатами экрана. Используется для идентификации ячейки под курсором мыши.

События компонента ,в основном ,связаны с процессом редактирования таблицы. Наиболее важными из них являются:

Cобытия OnColumnMoved и OnRowMoved происходят после изменения позиций колонки и ряда;

Cобытие OnSelectCell происходит перед выделением ячейки;

Событие OnSetEditText происходит, когда пользователь редактирует значение ячейки таблицы.

Основные свойства таблицы StringGrid демонстрирует приложение , приведенное на рисунках 5.19 и 5.20. На первом рисунке показан интерфейс приложения , а на втором –программный код. В интерфейсе приложения(Рис.5.19) используется форма, на которой размещены : компонент StringGrid ,многострочное окно редактирования Memo1 , метка Label1 и восемь кнопок типа Button. Окно редактирования используется для демонстрации операторов кода при выполнении программы . Назначение других компонентов и их свойства, установленные во время проектирования, поясняются в таблице 5.11.

Таблица 5.11

Компонент

Свойство

Значение

Форма

Caption

Таблица StringGrid

Кнопки

Caption

Считывание информации (Button1)

Caption

Ввод информации (Button2)

Caption

Ввод одномерного массива (Button3)

Caption

Вывод одномерного массива (Button4)

Caption

Ввод двумерного массива (Button5)

Caption

Вывод двумерного массива (Button6)

Caption

Ввод текста в 3-ю строку(Button8)

Caption

Ввод текста в 3-й столбец (Button7)

Метка

Caption

Текст кода

Таблица

Name

StringGrid

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

Name

Memo1

Другие свойства компонентов принимаются по умолчанию.

Рис.5.19 Интерфейс приложения, характеризующего основные свойства таблицы

StringGrid

// Программный код приложения , демонстрирующего ряд свойств таблицы

StringGrid

#include <vcl.h>

#pragma hdrstop

#include "iostream.h"

#include "Unit1_Grid.h"

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

#pragma package(smart_init)

#pragma resource "*.dfm"

TForm1 *Form1;

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

void __fastcall TForm1::Button2Click(TObject *Sender)

{

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

StringGrid1->Cells[1][0]= "Исходные данные";

StringGrid1->Cells[0][1]="Первое слагаемое ";

StringGrid1->Cells[0][2]="Второе слагаемое ";

StringGrid1->Cells[0][3]="Сумма ";

Memo1->Clear();

//Занесение операторов кода в поле Memo1

Memo1->Lines->Add( "StringGrid1->Cells[1][0]=Исходные данные");

Memo1->Lines->Add( "StringGrid1->Cells[0][1]=Первое слагаемое");

Memo1->Lines->Add( "StringGrid1->Cells[0][2]=Второе слагаемое ");

Memo1->Lines->Add( "StringGrid1->Cells[0][3]=Сумма ");

}

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

void __fastcall TForm1::Button1Click(TObject *Sender)

{

int X,Y,Z;

//Преобразование строковых переменных в целочисленные

X=StrToInt( StringGrid1->Cells[1][1] );

Y=StrToInt( StringGrid1->Cells[1][2]);

Z= X+Y;

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

StringGrid1->Cells[1][3]=IntToStr(Z);

Memo1->Clear();

//Занесение операторов кода в поле Memo1

Memo1->Lines->Add(" int X,Y,Z");

Memo1->Lines->Add(" X=StrToInt( StringGrid1->Cells[1][1] )");

Memo1->Lines->Add(" Y=StrToInt( StringGrid1->Cells[1][2])");

Memo1->Lines->Add("Z= X+Y; StringGrid1->Cells[1][3]=IntToStr(Z)");

}

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

void __fastcall TForm1::Button3Click(TObject *Sender)

{

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

StringGrid1->Cells[2][0]= "Одном.массив ввод";

//Ввод в ячейки таблицы элементов одномерного массива

for(int i=1;i<10;i++)

{

int y =i*i;

StringGrid1->Cells[2][i]= IntToStr(y);

}

//Занесение операторов кода в поле Memo1

Memo1->Clear();

Memo1->Lines->Add(" StringGrid1->Cells[2][0]= Одном.массив ввод");

Memo1->Lines->Add("for(int i=1;i<10;i++)");

Memo1->Lines->Add( "{ int y =i*i; StringGrid1->Cells[2][i]= IntToStr(y);");

}

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

void __fastcall TForm1::Button4Click(TObject *Sender)

{

//Вывод в ячейки таблицы элементов одномерного массива

StringGrid1->Cells[3][0]= "Одном.массив вывод";

for(int i=1;i<10;i++)

{

int y ;

y=StrToInt(StringGrid1->Cells[2][i]);

StringGrid1->Cells[3][i]= IntToStr(++y);

}

}

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

void __fastcall TForm1::Button5Click(TObject *Sender)

{

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

StringGrid1->Cells[4][0]= "Двум.массив ";

StringGrid1->Cells[5][0]= "размерностью [3][3]";

StringGrid1->Cells[6][0]= "ввод";

for(int i=1;i<4;i++)

for(int j=1;j<4;j++)

{

int y =i*i+j;

StringGrid1->Cells[j+3][i]= IntToStr(y);

}

Memo1->Clear();

//Занесение операторов кода в поле Memo1

Memo1->Lines->Add(" StringGrid1->Cells[4][0]= Двум.массив ;");

Memo1->Lines->Add(" StringGrid1->Cells[5][0]= размерностью [3][3];");

Memo1->Lines->Add(" StringGrid1->Cells[6][0]= ввод;");

Memo1->Lines->Add(" for(int i=1;i<4;i++) ");

Memo1->Lines->Add(" for(int j=1;j<4;j++) ");

Memo1->Lines->Add("{ int y =i*i+j; ");

Memo1->Lines->Add("StringGrid1->Cells[j+3][i]= IntToStr(y);");

}

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

void __fastcall TForm1::Button6Click(TObject *Sender)

{

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

StringGrid1->Cells[7][0]= "Двум.массив ";

StringGrid1->Cells[8][0]= "размерностью [3][3]";

StringGrid1->Cells[9][0]= "Вывод";

for(int i=1;i<4;i++)

for(int j=1;j<4;j++)

{

int y ;

y=StrToInt(StringGrid1->Cells[j+3][i]);

StringGrid1->Cells[j+6][i]= IntToStr(y);

}

Memo1->Clear();

//Занесение операторов кода в поле Memo1

Memo1->Lines->Add(" StringGrid1->Cells[7][0]= Двум.массив ;");

Memo1->Lines->Add(" StringGrid1->Cells[8][0]= размерностью [3][3];");

Memo1->Lines->Add(" StringGrid1->Cells[9][0]= Вывод;");

Memo1->Lines->Add(" for(int i=1;i<4;i++) ");

Memo1->Lines->Add(" for(int j=1;j<4;j++) ");

Memo1->Lines->Add("{ int y ;y=StrToInt(StringGrid1->Cells[j+3][i]); ");

Memo1->Lines->Add(" StringGrid1->Cells[j+6][i]= IntToStr(y);");

}

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

void __fastcall TForm1::Button7Click(TObject *Sender)

{

//Ввод текста в третий столбец

StringGrid1->Cols[3]->Add("Ввод текста в столбец");

Memo1->Clear();

//Занесение операторов кода в поле Memo1

Memo1->Lines->Add("StringGrid1->Cols[3]->Add(Ввод текста в столбец); ");

}

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

void __fastcall TForm1::Button8Click(TObject *Sender)

{

//Ввод текста в третью строку

StringGrid1->Rows[3]->Add("Ввод текста в строку");

Memo1->Clear();

//Занесение операторов кода в поле Memo1

Memo1->Lines->Add(" StringGrid1->Rows[3]->Add(Ввод текста в строку);");

}

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

Рис.5.20 Программный код приложения, характеризующего основные свойства таблицы StringGrid

В программном коде( Рис.5.20) показано, что свойства компонента StringGrid реализуются при включении радио кнопок Button1 – Button8 . Изменяемые свойства непосредственно отображаются на самом компоненте ,а соответствующий программный код заносится в окно редактора Memo1. Программа позволяет заносить в указанные ячейки таблицы текстовую и числовую информацию, вводить и выводить одномерные и двумерные массивы, вводить текстовую информацию в указанный столбец или строку. Назначение операторов программного кода поясняется подробными комментариями.