Настройка компонентов TOpenDialog и TSaveDialog
Поможем в ✍️ написании учебной работы
Поможем с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой

Для установки компонентов TOpenDialog и TSaveDialog на форму необходимо на странице Dialogs палитры компонентов щелкнуть мышью соответственно по пиктограммам  или  и поставить их в любое свободное место формы.

Установка фильтра производится следующим образом. Выбрав соответствующий компонент, дважды щелкнуть по правой части свойства Filter инспектора объектов. Появится окно Filter Editor, в левой части которого записывается текст, характеризующий соответствующий фильтр, а в правой части – маска.

Для OpenDialo g 1 установите значения маски, как показано на рисунке 14.2. Фильтр*.dat означает, что будут видны все файлы с расширением dat, а фильтр *.* – что будут видны все файлы (с любым именем и с любым расширением).

 

Рисунок 14.2 – Установка свойства Filter

 

Для того чтобы файл автоматически записывался с расширением dat, в свойстве DefaultExt необходимо записать требуемое расширение – dat.

Аналогичным образом настраивается SaveDialog1 (расширение dat).

Работа с программой

После запуска программы на выполнение на экране появится диалоговое окно программы (рисунок 14.3), содержащую главное меню и панель с кнопками быстрого доступа к функциям, а также таблицу для ввода данных.

Кнопка «Новый» создает новую таблицу-ведомостью. Открыть ранее созданный позволяет нажатие кнопки «Открыть». Кнопка «Добавить» добавляет строку в таблицу, а «Удалить» удаляет выбранную. Кнопка «Сохранить» позволяет сохранить данные в файл.

Рисунок 14.3 – Внешний вид программы

 

# include < vcl . h >

#pragma hdrstop

#include "Unit1.h"

#pragma package(smart_init)

#pragma resource "*.dfm"

TForm1 *Form1;

__fastcall TForm1::TForm1(TComponent* Owner)

 : TForm(Owner)

{}

void __fastcall TForm1::N15Click(TObject *Sender)

{  Application->Terminate();}

void __fastcall TForm1::FileSaveUpdate(TObject *Sender)

{  TAction* pa = dynamic_cast<TAction*>(Sender);

  if (pa) pa->Enabled=(StringGrid1->Visible);

}

void __fastcall TForm1::FileNewUpdate(TObject *Sender)

{// функция, управляющая доступностью контролирующих элементов

TAction * pa = dynamic _ cast < TAction *>( Sender );

if (pa) pa->Enabled=true;

}

void __fastcall TForm1::FileNewExecute(TObject *Sender)

{ // новый файл

 StringGrid1->Visible=true;

 StringGrid1->RowCount=1;

 StringGrid1->ColWidths[0]=30;StringGrid1->ColWidths[1]=250;

 StringGrid1->ColWidths[2]=80; StringGrid1->ColWidths[3]=80;

 StringGrid1->ColWidths[4]=80; StringGrid1->ColWidths[5]=80;

 StringGrid1->Cells[0][0]="№";

StringGrid1->Cells[1][0]="ФИО";

 StringGrid1->Cells[2][0]="Математика";

     StringGrid1->Cells[3][0]="Информатика";

 StringGrid1->Cells[4][0]="Русский";

StringGrid1->Cells[5][0]="Ср. балл";

 AppendExecute(Sender);

 StringGrid1->FixedRows=1;

}

void __fastcall TForm1::AppendExecute(TObject *Sender)

{// Добавляет новую строку

StringGrid 1-> RowCount ++;

StringGrid1->Cells[0][StringGrid1->RowCount-1]=IntToStr(StringGrid1->RowCount-1);

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

StringGrid1->Cells[i][StringGrid1->RowCount-1]="";

}

void __fastcall TForm1::DeleteUpdate(TObject *Sender)

{// функция, управляющая доступностью кнопки "удалить строку"

Delete->Enabled=(StringGrid1->RowCount>2)*(StringGrid1->Visible);

}

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

void __fastcall TForm1::AppendUpdate(TObject *Sender)

{// функция, управляющая доступностью кнопки "добавить строку"

Append->Enabled=(StringGrid1->Visible);}

void __fastcall TForm1::DeleteExecute(TObject *Sender)

{// Удаление строки и перенос выше всех других строк

int k=StringGrid1->Row;

 if (k>0)

 {  for (int i=k+1; i<StringGrid1->RowCount; i++)

for (int j=0; j<StringGrid1->ColCount; j++)

   if (j==0) StringGrid1->Cells[0][i]=IntToStr(i);

   else

                        StringGrid1->Cells[j][i-1]=StringGrid1->Cells[j][i];

StringGrid1->RowCount--;

  }

}

void __fastcall TForm1::OpenFileExecute(TObject *Sender)

{ // Чтение из файла

 int myfile, row, col, lenStr;

 char *pszBuffer;

 if (OpenDialog1->Execute())

 {try

{ myfile = FileOpen(OpenDialog1->FileName, fmOpenRead);

Form 1-> FileNewExecute ( Sender );

 // Читаем из файла количество колонок и строк таблицы

FileRead(myfile,&col,sizeof(StringGrid1->ColCount));

FileRead(myfile,&row,sizeof(StringGrid1->RowCount));

StringGrid1->ColCount=col; StringGrid1->RowCount=row;

 // теперь содержимое таблицы

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

for (int j=0; j<row; j++)

{ // Читаем длину записанной чтроки

FileRead(myfile, &lenStr, sizeof(lenStr));

pszBuffer = new char[lenStr+1];//содаем буфер для чтения

// читаем саму строку

FileRead(myfile,pszBuffer, lenStr);

 StringGrid1->Cells[i][j]=AnsiString(pszBuffer,lenStr);

delete [] pszBuffer ; // удаляем буфер для чтения

}

}

catch (...)

{

Application -> MessageBox ("Ошибка чтения файла...","Ошибка файла", IDOK );

}

 }

}

void __fastcall TForm1::FileSaveExecute(TObject *Sender)

{// Запись в файл

 if (SaveDialog1->Execute())

 { int iLength;

 int myfile=FileCreate(SaveDialog1->FileName);

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

FileWrite(myfile, (char*)&(StringGrid1->ColCount), sizeof(StringGrid1->ColCount));

 FileWrite(myfile, (char*)&(StringGrid1->RowCount), sizeof(StringGrid1->RowCount));

 // теперь содержимое таблицы

 for (int x=0;x<StringGrid1->ColCount;x++)

for (int y=0;y<StringGrid1->RowCount;y++)

{// Записываем длину строки

  iLength = StringGrid1->Cells[x][y].Length();

  FileWrite(myfile, (char*)&iLength, sizeof(iLength));

              AnsiString temp = StringGrid1->Cells[x][y];

//Копируем текст ячейки во временную переменную

  FileWrite(myfile,temp.c_str(),

  StringGrid1->Cells[x][y].Length());

}

 FileClose(myfile);

 }

}

void __fastcall TForm1::HelpAboutExecute(TObject *Sender)

{ ShowMessage ("Типовая программа ЛР №8 ( C ) 2006 Яхонтов С.А.");

}

Контрольные вопросы

1. Какие действия необходимо выполнить для использования компонента TOpenDialog?

2. Какие действия необходимо выполнить для использования компонента TSaveDialog?

3. Какие действия необходимо выполнить для использования компонента T Main Menu?


15 Разработка приложений
с использованием средств для отображения графической информации

15.1 Построение графика с помощью компонента TChart

Обычно результаты расчетов представляются в виде графиков и диаграмм. Система C ++ Builder имеет мощный пакет стандартных программ вывода на экран и редактирования графической информации, который реализуется с помощью визуально отображаемого на форме компонента TChart (рисунок 15.1).

Построение графика (диаграммы) производится после вычисления таблицы значений функции y = f(x) на интервале [Xmin, Xmax] с заданным шагом. Полученная таблица передается в специальный двумерный массив Seriesk (k – номер графика, например, Series1) компонента TСhart с помощью метода Add.

Компонент T Chart осуществляет всю работу по отображению графиков, переданных в объект Seriesk: строит и размечает оси, рисует координатную сетку, подписывает название осей и самого графика, отображает переданную таблицу в виде всевозможных графиков или диаграмм. При необходимости, с помощью встроенного редактора EditingChart компоненту TСhart передаются данные о толщине, стиле и цвете линий, параметрах шрифта подписей, шагах разметки координатной сетки и другие настройки.

 В процессе работы программы изменение параметров возможно через обращение к соответствующим свойствам компонента TChart. Так, например, свойство Chart1->BottomAxis содержит значение максимального предела нижней оси графика и при его изменении во время работы программы автоматически изменяется изображение графика (см. нижеприведенную программу).



Пример разработки программы

Задание: составить программу, отображающую графики функций sin ( x ) и cos ( x ) на интервале [Xmin, Xmax]. Предусмотреть возможность изменения разметки координатных осей, а также шага построения таблицы.

Настройка формы

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

Для ввода исходных данных используются окна редактирования TEdit. Компонент TChart вводится в форму путем нажатия пиктограммы « » в палитре компонентов на странице
TeeChart Std.

 

     Рисунок 15.1 – Использование компонента TChart

Работа с компонентом TChart

Для изменения параметров компонента TChart необходимо дважды щелкнуть по нему мышью в окне формы. Появится окно редактирования EditingChat1 (рисунок 15.2).

Для создания нового объекта Series1 щелкнуть по кнопке Add на странице Series. В появившемся диалоговом окне TeeChart Gallery выбрать пиктограмму с надписью Line (график выводится в виде линий). Если нет необходимости представления графика в трехмерном виде, отключить независимый переключатель 3D.

После нажатия на кнопку OK появится новая серия с название Series1. Для изменения названия нажать кнопку Title. В появившемся однострочном редакторе набрать имя отображаемой функции – «sin(x)». Аналогичным образом создать объект Series2 для функции cos(x).

 

 

 

Рисунок 15.2 – Окно редактирования EditingChat1

Для изменения надписи над графиком на странице Titles в многострочном редакторе набрать: «Графики функций».

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

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

Дата: 2019-02-02, просмотров: 333.