Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лаб12-17 (Delphi) - выполнять в мое отсутствие.doc
Скачиваний:
3
Добавлен:
01.03.2025
Размер:
3.73 Mб
Скачать
        • FileName типа String – указывает имя и полный путь файла, выбранного в диалоге. Имя файла отображается в строке редактирования с названием имя файла и является результатом диалога;

        • Title типа String – задает заголовок окна. Если свойство Title не установлено, то по умолчанию используется заголовок Open для OpenDialog и заголовок Save – для SaveDialog;

        • InitialDir типа String – определяет каталог, содержимое которого отображается при вызове окна диалога. Если каталог не задан, то отображается содержимое текущего каталога;

        • DefaultExt типа String – задает расширение, автоматически подставляемое к имени файла, если пользователем расширение имени не указано;

        • Options типа TOpenOptions – настройка параметров, управляющих внешним видом и функциональными возможностями диалога;

        • Filter типа String – задает маски имен файлов, отображаемых в раскрывающемся списке под названием Files of type. В окне диалога видны имена файлов, которые совпадают с указанной маской. По умолчанию значением Filter является пустая строка, что соответствует отображению имен файлов всех типов;

        • FilterIndex типа Integer – указывает, какая из масок фильтра отображается в списке. По умолчанию свойство FilterIndex имеет значение 1 и используется первая маска.

Фильтр – это последовательность значений, разделенных знаком |. Каждое значение состоит из описания и маски, также разделенных знаком |. Описание представляет собой обычный текст, поясняющий пользователю данную маску. Маска является шаблоном отображаемых файлов и состоит из имени и расширения. Если для одного описания приводится несколько масок, то они разделяются знаком ;. Фильтр обычно формируется при проектировании приложения. Редактор фильтра (Filter Editor) вызывается через свойство Filter Инспектора объектов.

Пример формирования фильтра с двумя масками – маской для текстовых файлов и маской для всех файлов:

OpenDialog1.Filter:='Текстовые файлы| *.txt;*.doс|Все файлы| *.*';

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

OpenDialog1.Filter:= 'Текстовые файлы *.txt;*.doc|*.txt;*.doc' + '|Все файлы *.*|*.*';

Для вызова любого стандартного диалога используется метод Execute тип Boolean. При закрытии диалога кнопкой Open или Save (Открыть или Сохранить) функция Execute возвращает значение True, а при отмене диалога – значение False. После закрытия стандартного диалога он через свои свойства возвращает значения, выбранные или установленные в процессе диалога.

Пример использования стандартного диалога OpenDialog:

procedure TForm1.Button2Click(Sender: TObject); {нажатие на кнопку Button2}

begin

if OpenDialog1.Execute then {при отмене диалога открытие файла не происходит}

Memo1.Lines.LoadFromFile(OpenDialog1.FileName);

end;

Пример сохранения графического образа в файл:

На форме Form1 расположено меню с двумя пунктами Save и SaveAs, компонент SaveDialog и компонент Image1 для хранения графического образа. Если вызывается пункт Save, то проверяется, был ли уже создан файл для данного графического образа. Если был создан, то образ сохраняется. Если файл не был создан, вызывается метод SaveAs, который открывает окно SaveDialog1 и запрашивает имя файла для графического образа, после этого управление передается методу Save.

var Form1: TForm1;

CurrentFile:String;

implementation

{$R *.DFM}

procedure TForm1.Save1Click (Sender: TObject)

begin

if CurrentFile <> ' ' then

Image1.Picture.SaveToFile(CurrentFile) {файл уже существует}

else SaveAs1Click(Sender);{иначе нужно ввести имя файла}

end;

ргосеdurе ТFоrm1.SaveAs1Click(Sender: TObject);

begin

if SaveDialog1.Execute then { Получить имя файла }

begin

СurrentFile := SaveDialog1.FileName;

{сохранить файл с именем, заданным пользователем}

Save1Click(Sender); {вызов метода сохранения файла}

end;

еnd;

Компоненты OpenPictureDialog и SavePictureDialog вызывают стандартные диалоги открытия и сохранения графических файлов. Эти стандартные диалоги отличаются от OpenDialog и SaveDialog видом окон и установленными значениями свойства Filter.

Задание

Составить программу с использованием текстовых файлов (задание согласовать с преподавателем).

Пример

Найти максимальный элемент матрицы.

Решение

Ввод/вывод элементов матрицы в файл осуществляется поэлементно для каждой строки. Для отображения элементов матрицы использован компонент StringGrid. Поиск максимального элемента матрицы осуществляется по алгоритму, показанному на рис.5.1. Внешний вид спроектированной формы показан на рис.5.2.

С войства компонентов, размещенных на форме

Object Form1: TForm1

Left = 239

Top = 107

Width = 456

Height = 378

Caption = ’Лабораторная работа'

Color = clBtnFace

Font.Charset = DEFAULT_CHARSET

Font.Color = clWindowText

Font.Height = -11

Font.Name = 'MS Sans Serif'

Font.Style = []

OldCreateOrder = False

PixelsPerInch = 96

TextHeight = 13

object Label1: TLabel

Left = 16

Top = 16

Width = 48

Height = 13

Caption = 'Столбцов' object Label2: TLabel

TabOrder = 0

object X_Button: TButton

Left = 248

Top = 16

Width = 73

Height = 33

Caption = 'Открыть'

TabOrder = 1

OnClick = X_ButtonClick

object Col_Edit: TEdit

Left = 80

Top = 8

Width = 57

Height = 21

TabOrder = 2

Text = ‘8’

OnExit = Col_EditExit

object Row_Edit: TEdit

Left = 80

Top = 40

Width = 57

Left = 24

Top = 48

Width = 30

Height = 13

Caption = 'Строк'

object Label3: TLabel

Left = 9

Top = 99

Width = 171

Height = 13

Caption = 'Максимальный элемент таблицы'

object X_StringGrid: TStringGrid

Tag = 1

Left = 8

Top = 136

Width = 433

Height = 209

ColCount = 8

DefaultColWidth = 50

DefaultRowHeight = 23

FixedCols = 0

RowCount = 8

FixedRows = 0

Options = [goVertLine, goHorzLine, goDrawFocusSelected, goEditing, goTabs, goAlwaysShowEditor]

ScrollBars = ssNone

object Button3: Tbutton

Left = 344

Top = 96

Width = 89

Height = 25

Caption = 'Найти'

TabOrder = 7

OnClick = Button3Click

Height = 21

TabOrder = 3

Text = ‘8’

OnExit = Row_EditExit

object Button1: TButton

Left = 152

Top = 16

Width = 75

Height = 33

Caption = 'Сохранить'

TabOrder = 4

OnClick = Button1Click

object Button2: TButton

Left = 336

Top = 16

Width = 73

Height = 33

Caption = 'Выход'

TabOrder = 5

OnClick = Button2Click

object Max_Edit: TEdit

Left = 192

Top = 96

Width = 121

Height = 21

TabOrder = 6

Text = '0'

object X_OpenDialog: TOpenDialog

Filter = '*.dat|*.dat'

Left = 272

Top = 56

object X_SaveDialog: TSaveDialog

Filter = '*.dat|*.dat'

Left = 184

Top = 56

Текст программы

unit Lab_file;

interface

uses

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

type

TForm1 = class(TForm)

X_StringGrid: TStringGrid;

X_Button: TButton;

X_OpenDialog: TOpenDialog;

Col_Edit: TEdit;

Label1: TLabel;

Label2: TLabel;

Row_Edit: TEdit;

Button1: TButton;

X_SaveDialog: TSaveDialog;

Button2: TButton;

Max_Edit: TEdit;

Label3: TLabel;

Button3: TButton;

procedure X_ButtonClick(Sender: TObject);

procedure Row_EditExit(Sender: TObject);

procedure Col_EditExit(Sender: TObject);

procedure Button2Click(Sender: TObject);

procedure Button1Click(Sender: TObject);

procedure Button3Click(Sender: TObject);

private

function Max:real;

public

{ Public declarations }

end;

var Form1: TForm1;

implementation

{$R *.DFM}

function TForm1.Max:real; // Процедура поиска // максимального элемента массива

var i,j,im,jm,p:integer;

m,n:real;

begin

im:=0;jm:=0;

with X_StringGrid do

begin

Val(Cells[im,jm],m,i);

for i:=0 to ColCount do

begin

for j:=0 to RowCount do

begin

Val(Cells[i,j],n,p);

if m<=n then

begin

m:=n;

im:=i;

jm:=j;

end;

end;

end;

end;

Max:=m;

end;

procedure TForm1.Row_EditExit(Sender: TObject);

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

begin

with X_StringGrid do

begin

RowCount:=StrToInt(Row_Edit.Text);

DefaultRowHeight:=round(Height/(StrToInt(Row_Edit.Text)+1));

end;

end;

procedure TForm1.Col_EditExit(Sender: TObject);

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

begin

with X_StringGrid do

begin

ColCount:=StrToInt(Col_Edit.Text);

DefaultColWidth:=round(Width/(StrToInt(Col_Edit.Text)+1));

end;

end;

procedure TForm1.Button1Click(Sender: TObject);

// процедура записи массива в файл

var Fl:TextFile;

i,j:integer;

begin

if X_SaveDialog.Execute then

begin

AssignFile(fl,X_SaveDialog.FileName+'.dat');

Rewrite(fl);

with X_StringGrid do

for i:=0 to RowCount do

begin

for j:=0 to ColCount do

write(fl,Cells[j,i]+' ');

writeln(fl);

end;

CloseFile(fl);

end;

end;

procedure TForm1.X_ButtonClick(Sender: TObject);

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

var Fl:TextFile;

i,j:integer;

s:char;

a:real;

begin

if X_OpenDialog.Execute then

begin

AssignFile(fl,X_OpenDialog.FileName);

Reset(fl);

j:=0;

while not(SeekEof(fl)) do

begin

i:=0;

while not(SeekEoln(fl)) do

begin

read(fl,a);

X_StringGrid.Cells[i,j]:=FloatToStr(a);

i:=i+1;

end;

readln(fl);

j:=j+1;

end;

CloseFile(fl);

Col_Edit.Text:=IntToStr(i);

Row_Edit.Text:=IntToStr(j);

Row_EditExit(Sender);

Col_EditExit(Sender);

end;

end;

procedure TForm1.Button2Click(Sender:

TObject);

// процедура выхода из программы

begin

Application.Terminate;

end;

procedure TForm1.Button3Click(Sender:

TObject);

// процедура на нажатие кнопки «Найти»

begin

Max_Edit.Text:=FloatToStrF(Max,ffGeneral,4,2);

end;

end.

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

  1. Что такое файл и в каких случаях его удобно использовать?

  2. Какие типы файлов и как они описываются в Object Pascal?

  3. Описать способ ввода/вывода файловых данных?

  4. Какие диалоги используются при работе с файлами?

  5. Описать разработанную программу.

Лабораторная работа №17

ПОСТРОЕНИЕ И ПЕЧАТЬ ДИАГРАММ

Цель работы:

получение практических навыков в построении и печати диаграмм.

Общие сведения

Для построения диаграмм предназначен компонент TChart.

Компонент TChart представляет собой библиотеку процедур построения диаграмм, написанных с использованием VCL. Компонент TChart выведен из класса TPanel и поэтому наследует его свойства.

Для добавления диаграммы к приложению необходимо разместить компонент TChart на форму и при необходимости изменить размеры диаграммы. Диаграмму также можно добавить с помощью команды File | New (Файл | Создать) и пиктограммы TeeChart Wizard, расположенной во вкладке Business (Бизнес) диалогового окна New Application (Создать приложение).

Редактор диаграмм и рядов предоставляет доступ к большинству свойств диаграммы и ряда и имеет две основные вкладки: Chart (Диаграмма), которая предоставляет доступ к свойствам диаграмм и упрощает добавление ряда к диаграмме, и Series (Ряд), которая позволяет изменять свойства ряда.

При добавлении в диаграмму нового ряда происходит автоматическое заполнение этого ряда случайными данными (только во время разработки), что позволяет сразу увидеть результат изменения свойств диаграммы и ряда.

Метод Add() используется для добавления данных в диаграмму. При вызове этого метода в ряд данных добавляется только одно значение (точка), поэтому для добавления массива значений следует организовать цикл:

for i := 0 to TotalPointCount do

Series1.Add(SomeData[i], Strin [i+1], clTeeColor);

Первый аргумент метода Add() содержит координату Y добавляемого значения (в данном случае элемент массива); второй – подпись для соответствующей точки диаграммы, а третий – ее цвет (константа clTeeColor присваивает данному значению цвет, используемый по умолчанию).

Метод АddXY() используется для добавления данных в график. Форма этого метода совпадает с формой метода Аdd( ) за исключением дополнительного аргумента, который представляет собой массив значений X.

Пример проектирования диаграммы:

На форме Form1 размещены компоненты Chart и BitBtn1. Для Chart установлен ряд Series1.

procedure TForm1.BitBtn1Click(Sender: TObject);

const TotalPointCount=10;

XData:array [1..TotalPointCount] of real = (0,1,2,3,4,5,6,7,8,9);

YData:array [1..TotalPointCount] of real = (0,1,2,3,4,5,6,7,8,9);

Strin:array [1..TotalPointCount] of char = ('0','1','2','3','4','5','6','7','8','9');

var i :integer;

begin

for i := 1 to TotalPointCount do

Series1.AddXY(XData[i], YData[i], Strin [i+1], clTeeColor);

end;

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

В компоненте TChart предусмотрено несколько собственных методов печати, которые генерируют диаграммы гораздо более высокого качества, чем метод печати формы. Самым простым из них является метод Print.

Chart1.Print;

При выполнении этой строки программы диаграмма будет напечатана с использованием полных значений ширины и высоты печатной страницы при разрешении экрана, действующего по умолчанию. Однако печать при таком разрешении экрана часто не подходит для приложений, включающих диаграммы. Поэтому нужно изменить это разрешение, а следовательно, и качество печатаемых диаграмм. Компонент TChart имеет динамическое свойство PrintResolution, которое можно установить равным целому значению в диапазоне – 100  0, где 100 означает, что диаграмма печатается при максимальном разрешении принтера, а 0 – при установленном разрешении экрана.

Chart1.PrintResolution = PrintResScroll.Position;

Используя методы PrintPartial и PrintRect, можно также задать прямоугольник для диаграммы с целью ее масштабирования на печатной странице.

При проектировании диаграммы можно заранее определить принтер и осуществить его настройки и предварительный просмотр печатаемой диаграммы. Для этого в окне Edition Chart необходимо зайти на вкладку General и выбрать Print Preview.

Задание

Построить и распечатать график функции

f(x)

Хнач

Хкон

f(x)

Хнач

Хкон

f(x)

Хнач

Хкон

f(x)

Хнач

Хкон

1

cos(x)

0

2

8

(2-x)/2

-3

2

15

2-x2

-2

2

22

x-cos(x)

0

10

2

tg(x)

-0,5

0,5

9

|x/3|

-3

3

16

x*sin(x)

1

4

23

ex/x

10

20

3

ctg(x)

0,5

1

10

1/x2

1

4

17

|cos(x)|

-2

2

24

ln(x)*ex

2

4

4

ln(x)

1

10

11

sh(x)

0

2

18

tg(x2)

0,5

1,2

25

th(x)

-3

3

5

x2

0

4

12

1/x3

0,5

3

19

ch(x)

0

1

26

sin(x2)

-1

1

6

1/x

1

10

13

x

0

4

20

1/sin(x)

0,1

1

27

cth(x)

1

10

7

x3

0

3

14

ex

0

2

21

cos(x)/x

1

20

28

x-sin(x)

-1

1

Пример.

Построить график функции у=1/Sin(x).

Решение

После размещения компонентов форма имеет вид

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