Мегаобучалка Главная | О нас | Обратная связь


Компоненты TOpenDialog и TSaveDialog



2018-07-06 377 Обсуждений (0)
Компоненты TOpenDialog и TSaveDialog 0.00 из 5.00 0 оценок




Компоненты TOpenDialog и TSaveDialog находятся на странице DIALOGS (см. рисунок 10.1).

 

Рисунок 10.1 Вкладка Dialogs

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

Для фильтрации файлов, отображаемых в окне просмотра, используется свойство Filter, а для задания расширения файла, в случае, если оно не задано пользователем, - свойство DefaultExt. Если необходимо изменить заголовок диалогового окна, используется свойство Title.

Порядок выполнения работы

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

Настройка компонентов TOpenDialog и TSaveDialog

Для установки компонентов TOpenDialog и TSaveDialog на форму необходимо на странице Dialogs меню компонентов щелкнуть мышью соответственно по пиктограммам и поставить их в любое свободное место формы. Установка фильтра производится следующим образом. Выбрав соответствующий компонент, дважды щелкнуть по правой части свойства Filter инспектора объектов. Появится окно Filter Editor, в левой части которого записывается текст, характеризующий соответствующий фильтр, а в правой части - маску. Для OpenDialog1 установим значения маски как показано на рисунке 10.2.

 

 

 

Рисунок 10.2 Установка фильтра для диалоговых компонентов

 

Формат *.dat означает что, будут видны все файлы с расширением dat, а формат *.* - что будут видны все файлы (с любым именем и с любым расширением).

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

Аналогичным образом настроим SaveDialog1 для текстового файла (расширение .txt).

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

После запуска программы на выполнение появится диалоговое окно программы. Кнопка "Ввести запись" видна не будет. Необходимо создать новый файл записей, нажав на кнопку "Создать" или открыть ранее созданный, нажав на кнопку "Открыть". После этого станет видна кнопка "Ввести запись" и можно будет вводить записи. При нажатии на кнопку "Сортировка" будет проведена сортировка ведомости по убыванию среднего балла и диалоговое окно примет вид, представленный на рисунке 10.3.

 

 

Рисунок 10.3 Экранная форма задания

 

Затем при нажатии на кнопку "Сохранить" будет создан текстовой файл, содержащий отсортированную ведомость. Файл записей закрывается одновременно с программой при нажатии на кнопку "Close". Текст программы приведен ниже.

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

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, Buttons, StdCtrls;

type

TForm1 = class(TForm)

OpenDialog1: TOpenDialog;

SaveDialog1: TSaveDialog;

Label1: TLabel;

Edit1: TEdit;

Label2: TLabel;

Label3: TLabel;

Label4: TLabel;

Label5: TLabel;

Edit2: TEdit;

Edit3: TEdit;

Edit4: TEdit;

Button1: TButton;

Memo1: TMemo;

Button2: TButton;

Button3: TButton;

Button4: TButton;

Button5: TButton;

BitBtn1: TBitBtn;

procedure FormCreate(Sender: TObject);

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

procedure Button3Click(Sender: TObject);

procedure Button4Click(Sender: TObject);

procedure Button5Click(Sender: TObject);

procedure BitBtn1Click(Sender: TObject);

procedure FormClose(Sender: TObject; var Action: TCloseAction);

private

{ Private declarations }

public

{ Public declarations }

end;

Type

TStudent=record

FIO:string[40]; //поле ФИО

otc:array[1..3] of word; //поле массива оценок

sball:extended; //поле среднего балла

end;

var

fz:file of TStudent; //файл из записей

Ft:TextFile; //текстовый файл

Stud:Array[1..100] of TStudent; //массив записей

nzap:integer; //номер записи

FileNameZ, FileNameT:string; //имя файла записей и //текстового файла

var

Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);

begin

Edit1.Text:='';

Edit2.Text:='';

Edit3.Text:='';

Edit4.Text:='';

Memo1.Clear;

nzap:=0;

end;

 

procedure TForm1.Button1Click(Sender: TObject); //ввод новой //записи

begin

nzap:=nzap+1;

with stud[nzap] do begin

FIO:=Edit1.Text;

otc[1]:=StrToInt(Edit2.Text);

otc[2]:=StrToInt(Edit3.Text);

otc[3]:=StrToInt(Edit4.Text);

sball:=(otc[1]+otc[2]+otc[3])/3;

Memo1.Lines.Add(FIO+' '+IntToStr(otc[1])+' '+IntToStr(otc[2])+' '+IntToStr(otc[1]));

end;

Write(fz,Stud[nzap]); //запись в файл

Edit1.Text:='';

Edit2.Text:='';

Edit3.Text:='';

Edit4.Text:='';

end;

 

procedure TForm1.Button2Click(Sender: TObject); //создание //нового файла записей

begin

OpenDialog1.Title:='Создать новый файл'; //изменение заголовка окна диалога

if OpenDialog1.Execute then begin //выполнение стандартного //диалога выбора имени файла

FileNameZ:=Opendialog1.FileName; //возвращение имени дискового файла

AssignFile(Fz,FileNameZ); //связывание //файловой переменной fz (файла //записей) с именем файла

Rewrite(Fz); //создание нового файла

end;

Button1.Show; //сделать видимой кнопку “Ввести запись”

end;

 

procedure TForm1.Button3Click(Sender: TObject); //открыть //существующий файл

begin

if OpenDialog1.Execute then begin

FileNameZ:=Opendialog1.FileName;

AssignFile(Fz,FileNameZ);

Reset(Fz); //открытие существующего файла

end;

while not eof(fz)do begin

nzap:=nzap+1;

Read(fz,stud[nzap]); //чтение записи из файла

with stud[nzap] do

Memo1.Lines.Add(FIO+' '+IntToStr(otc[1])+' '+IntToStr(otc[2])+' '+IntToStr(otc[1]));

end;

Button1.Show;

end;

 

procedure TForm1.Button4Click(Sender: TObject); //сортировка //записей

var i,j:word;

st:TStudent;

begin

for i:=1 to nzap-1 do

for j:=i+1 to nzap do

if Stud[i].sball<Stud[j].sball then begin // сортировка массива //записей по среднему баллу

st:=Stud[i];

Stud[i]:=Stud[j];

Stud[j]:=st;

end;

Memo1.Clear;

for i:=1 to nzap do //вывод в Memo1 отсортированных записей

with stud[i] do

Memo1.Lines.Add(IntToStr(i)+' '+FIO+' '+FloattoStrF(sball,fffixed,4,2));

end;

 

procedure TForm1.Button5Click(Sender: TObject); //сохранение //результата сортировки в текстовом файле

var i:word;

begin

if SaveDialog1.Execute then

begin

FileNameT:=SaveDialog1.FileName;

AssignFile(Ft,FileNameT);

Rewrite(Ft);

end;

for i:=1 to nzap do

with stud[i] do Writeln(ft,i:4,'.',FIO,sball:8:2); //запись в текстовый //файл

CloseFile(ft); //закрытие текстового файла

end;

 

procedure TForm1.BitBtn1Click(Sender: TObject);

begin

CloseFile(fz); //закрытие файла записей при нажатии кнопки //“Close”

end;

end.

 

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



2018-07-06 377 Обсуждений (0)
Компоненты TOpenDialog и TSaveDialog 0.00 из 5.00 0 оценок









Обсуждение в статье: Компоненты TOpenDialog и TSaveDialog

Обсуждений еще не было, будьте первым... ↓↓↓

Отправить сообщение

Популярное:
Почему человек чувствует себя несчастным?: Для начала определим, что такое несчастье. Несчастьем мы будем считать психологическое состояние...
Почему двоичная система счисления так распространена?: Каждая цифра должна быть как-то представлена на физическом носителе...



©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (377)

Почему 1285321 студент выбрали МегаОбучалку...

Система поиска информации

Мобильная версия сайта

Удобная навигация

Нет шокирующей рекламы



(0.008 сек.)