.RU

Лабораторная работа №1 (4 часа) - 2


Рис.

1.6. Вид диалоговой формы с компонентами
Для задания имени файла для текстового файла с результатами на основной форме размещен компонент SaveDialog1 со страницы Dialogs. Значения его свойств InitialDir и Filter идентичны таковым компонента OpenDialog.
Изменяются при этом тексты подпрограмм подключаемого модуля и некоторые методы модуля unitl.
В листинге 1.6 приведен пример измененного текста модуля основной формы, в листинге 1.7 - текст модуля диалоговой формы, в листинге 1.8 - подключенного модуля с подпрограммами. Листинги форм Form2, FormЗ и с исходными данными идентичны приведенным в разделе 1.1.

1.2.2. Примеры листингов приложения


Листинг 1.6. Модуль основной формы для динамического массива вещественных данных



unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Buttons, StdCtrls, My_Unit,unit6,ExtCtrls, XPMan;
type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Button3: TButton;
Button4: TButton;
Panel1: TPanel;
Button5: TButton;
Button6: TButton;
Button7: TButton;
Button8: TButton;
Label1: TLabel;
OpenDialog1: TOpenDialog;
BitBtn1: TBitBtn;
SaveDialog1: TSaveDialog;
XPManifest1: TXPManifest;
// 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 Button6Click(Sender: TObject);
procedure Button7Click(Sender: TObject);
procedure Button8Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
uses Unit2, Unit3,Unit5;
{$R *.dfm}
{procedure TForm1.FormCreate(Sender: TObject);
begin
AssignFile(Output,'lr.txt');
Rewrite(Output);
end;}
procedure Soob;
begin ShowMessage('Вы не ввели имя файла.Повторите ввод!');
end;
procedure TForm1.Button1Click(Sender: TObject);
Label NN; var k:integer;
begin
If OpenDialog1.Execute Then
A:=OpenDialog1.FileName
Else begin Soob;
Exit; end;
NN:
if OkBottomDlg.ShowModal=mrOk
then begin M:=StrToInt(OkBottomDlg.MaskEdit1.Text);
N:=StrToInt(OkBottomDlg.MaskEdit2.Text);
if (M=0) or (N=0) then
begin
ShowMessage('Вы ввели нулевое значение! Повторите ввод!');
Exit; End;
end
else begin
if Application.MessageBox('Вы не ввели значения. Повторить ввод?','Надо ввести значения или Отмена',MB_OKCANCEL)=1
then Goto NN
else Exit;
end;
Vvod(B,K);
if K>0 then begin
ShowMessage('Ошибочно количество строк исходного массива'+'Проверьте файл с исходными данными');
Halt; end;
Label1.Caption:='Введены исходные данные';
Button1.Enabled:=False;
Button2.Enabled:=True;
Button2.SetFocus;
if SaveDialog1.Execute then
begin A:=SaveDialog1.FileName;
AssignFile(FI,A); Rewrite (FI);
end
else begin Soob; Exit; end;
Writeln(FI, 'Исходные данные');
P(B,M,N);
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
Obr(B,M,N);
Label1.Caption:='Выполнена обработка данных';
Button2.Enabled:=False;
Button3.Enabled:=True;
Button3.SetFocus;
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
P(B,M,N);
Button3.Enabled:=False;
CloseFile(FI);
Label1.Caption:='Выведены результаты в тестовый файл';
Button4.Enabled:=True;
Button4.SetFocus;
end;
procedure TForm1.Button4Click(Sender: TObject);
begin
Button4.Enabled:=False;
Form2.Show;
Form3.Show;
Form1.FormStyle:=fsStayOnTop;
Form1.FormStyle:=fsNormal;
Panel1.Visible:=True;
Label1.Caption:='Открыты формы для вывода результатов';
Button5.SetFocus;
end;
procedure TForm1.Button5Click(Sender: TObject);
begin
Form2.ListBox1.Items.LoadFromFile(A);
Label1.Caption:='Выведены результаты в окно ListBox1';
Button5.Enabled:=False;
Button6.SetFocus;
end;
procedure TForm1.Button6Click(Sender: TObject);
begin
Form2.ComboBox1.Items.LoadFromFile(A);
Label1.Caption:='Выведены результаты в окно ComboBox1';
Button6.Enabled:=False;
Button7.SetFocus;
end;
procedure TForm1.Button7Click(Sender: TObject);
begin
Form3.Memo1.Lines.LoadFromFile(A);
Label1.Caption:='Выведены результаты в окно Memo1';
Button7.Enabled:=False;
Button8.SetFocus;
end;
procedure TForm1.Button8Click(Sender: TObject);
var
i,j:integer;
S:string[14];
begin
With Form3.StringGrid1 do begin
ColCount:=N; FixedCols:=0;
RowCount:=M+1; FixedRows:=1;
For J:=0 to N-1 do
Case J of
0,1,3,4:Cells[J,0]:=' F';
2,5:Cells[J,0]:=' E';
end;
FOR I:=1 TO M DO
^ FOR J:=1 TO N DO BEGIN
CASE J OF
1, 2, 4, 5: STR(B^[(I-1)*N+J]:10:4, S);
3,6: STR(B^[(I-1)*N+J]:12, S);
end;
Cells[J-1,I]:= ' ' + S;
END;
end;
FREEMEM ( B, M * N * SIZEOF (REAL));
Label1.Caption:=' Выведены результаты в окно StringGrid1';
Button8.Enabled:=False;
BitBtn1.SetFocus;
end;
end.

Листинг 1.7. Модуль диалоговой формы OKBottomDlg



unit Unit5;
interface
uses Windows, SysUtils, Classes, Graphics, Forms, Controls, StdCtrls,
Buttons, ExtCtrls, Mask, Dialogs;
type
TOKBottomDlg = class(TForm)
OKBtn: TButton;
CancelBtn: TButton;
Bevel1: TBevel;
MaskEdit1: TMaskEdit;
MaskEdit2: TMaskEdit;
Label1: TLabel;
Private { Private declarations }
Public { Public declarations }
end;
var
OKBottomDlg: TOKBottomDlg;
Implementation {$R *.dfm}
end.

Листинг 1.8. Модуль unit_5d с подпрограммами



unit unit_5d;
interface
type tb=array[1..100] of real;
pb=^tb;
var b:pb;
m,n:integer;
fi:text;
a:string[80];
procedure p(b:pb; m,n:integer);
procedure obr(var b:pb; m,n:integer);
procedure vvod(var b:pb;var k:integer);
implementation
procedure p(b:pb; m,n:integer);
var i,j:integer;
begin
for i:=1 to m do begin
for j:=1 to n do
write(fi, b^[(i-1)*n+j]:11);
writeln(fi, ' '); end;
end;
procedure obr(var b:pb; m,n:integer);
var i,j, i1,i2,j1,j2:integer; mn, mx:real;
begin mn:=b^[1];mx:=b^[1];
i1:=1; i2:=1; j1:=1; j2:=1;
for i:=1 to m do
for j:=1 to n do
if b^[(i-1)*n+j]mn:=b^[(i-1)*n+j]; i1:=i; j1:=j; end
else
if b^[(i-1)*n+j]>mx then begin
mx:=b^[(i-1)*n+j]; i2:=i; j2:=j; end;
writeln(fi,'i1=', i1:2, 'j1=', j1:2, 'i2=',i2:2, 'j2=',j2:2);
writeln(fi,'min=', mn:12, 'max=', mx:12);
b^[(i1-1)*n+j1]:=mx; b^[(i2-1)*n+j2]:=mn;
end;
procedure vvod(var b:pb;var k:integer);
var mi, i, j:integer;
begin mi:=0;
k:=0;
assignfile(fi,a); reset(fi);
while not eof(fi) do
begin readln(fi); inc(mi); end; close(fi);
if m>mi then begin
k:=1; exit; end;
reset(fi);
getmem(b,m*n*sizeof(real));
for i:=1 to m do
for j:=1 to n do read (fi,b^[(i-1)*n+j]);
close(fi);
end;
end.

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



  1. Поясните назначение и формы разработанного проекта.

  2. Как разместить панель и кнопки на ней?

  3. Как управлять видимостью панели?

  4. Что такое шаблоны форм?

  5. Как выбрать стандартную диалоговую форму из репозитария, сохранить и подключить к проекту?

  6. Поясните назначение и основные свойства окна MaskEdit.

  7. Назовите основные символы маски окна MaskEdit.

  8. Поясните текст метода для работы с диалоговой формой.

  9. Поясните назначение, основные свойства и методы для работы с окнами типа ListBox, ComboBox, Memo и таблицей StringGrid.

  10. Что такое модальная и немодальная форма?

  11. Как подключить ранее разработанный модуль к проекту?

1.4 Список литературы



  1. Голицына О.Л., Попов И.И., Основы алгоритмизации и программирования, Учебное пособие. М.: ИНФРА-М, 2002.

  2. Аляев Ю.А., Козлов О.А, Алгоритмизация и языки

программирования, Учебно-справочное пособие, М.: Финансы и статистика,2002.

  1. Шпак Ю.А., Delphi 7 на примерах, Учебное издание, К.: Изд. Юниор, 2004.

  2. Климова Л.М., Delphi Основы программирования. Решение типовых задач, Самоучитель, М.:КУДИЦ-ОБРАЗ,2004.

  3. Зубов А., Программирование на Delphi. Трюки и эффекты, СПб.: Питер,2005.

Ремнев А.А., Федотов С.В., Курс Delphi для начинающих. Полигон нестандартных задач., М.: СОЛОН-ПРЕСС,2006.

Лабораторная работа №2 (4 часа)


Работа с меню


2.1.1. Приложение с меню, многостраничным блокнотом и статическим арифметическим массивом


2.1.1. Цель работы


Целью работы является:
1) Разработка приложений, использующих:
а) основное меню - компонент типа TMainMenu;
б) всплывающее меню - компонент типа TPopupMenu;
в) многостраничный блокнот с закладками - компонент типа TPageControl;
г) таймер - компонент типа TTimer;
д) календарь - компонент типа TCalendar;
е) закладки для переключения страниц - компонент типа TTabControl;
ж) панель статуса для вывода подсказок - компонент типа TStatusBar;
з) панель инструментов - компонент типа TToolsBar;
и) присоединенный модуль, не имеющий формы.
2) Освоение основных приемов работы для:
а) разработки многоуровневых меню с помощью Дизайнера меню;
б) привязки команд меню к программным действиям;
в) настройки панелей статуса и инструментов;
г) вывода на панель статуса постоянного сообщения и информации о состоянии приложения;
д) размещения и использования календаря и таймера.

2.1.2. Задание на выполнение работы


В соответствии с вариантом задания в среде Borland Pascal 7.0 разработать библиотеку подпрограмм (модуль MY_UNIT). Из нее использовать процедуры для ввода, обработки и вывода исходных данных и результатов в текстовый файл. Приложение должно выполнять задачи ввода, вывода и обработки данных с помощью основного и всплывающего меню и с помощью кнопок панели инструментов.

2.1.3. Процесс выполнения работы


Для выполнения работы создать каталог. Целесообразная последовательность этапов разработки:
размещение и разработка основного меню и его методов;
размещение и разработка всплывающего меню и подключение к-его пунктам разделяемых методов, разработанных для основного меню;
размещение и настройка компонентов панели инструментов, строки статуса
для показа подсказок, календаря, таймера.
Для разработки приложения надо выполнить следующее:
1) Открыть новый проект и сохранить в созданном каталоге его файлы: - формы с именем main.pas;
проекта с именем Project1.dpr.
2) Присоединить к проекту модуль MY_UNIT.
3) .Разработать основное меню в составе: Ввод, Обработка, Вывод, Отчет, Выход Для пункта Отчет создать 4 пункта подменю для вывода данных файла результатов в окна: ListBox, ComboBox, Memo и в таблицу StringGrid. Для этого:
а) поместить на форму компонент MainMenu из страницы Standard;
б) вызвать дизайнер (редактор) меню двойным щелчком на пиктограмме koi нента, расположенной на форме, или правой кнопкой мыши вызвать w и выбрать в нем пункт Menu Designer. С помощью редактора создать пункты меню и подменю. Для каждого сформированного пункта меню написать текст подсказки в свойстве Hint для вывода ее на панель статуса в процессе выполнения приложения и установить свойство ShowHint = True;
в) установить:
- мнемонические символы доступа - с помощью выделенных букв (для вызовапункта с помощью команды (Alt+символ) для каждого пункта;
- горячие клавиши (ShortCut) для каждого пункта;
г) разработать методы для каждого пункта меню. Они аналогичны методам, пользованным в разделе 1.1. В каждом методе после его выполнения:
- установить с помощью свойства Enabled недоступность выполненного и доступность следующего пункта меню;
- отметить выполненный пункт подменю Отчет «галочкой» с помощью свойства Checked = True.
4) Разработать всплывающее меню. Для этого:
а) поместить на форму компонент PopupMenu из страницы Standard. Вызвать дизайнер меню и разработать всплывающее меню, идентичное основному меню. Процесс разработки всплывающего меню аналогичен процессу разработки основного меню;
б) подключить его к форме с помощью свойства PopupMenu. Для этого на, в свойстве PopupMenu формы вызвать список доступных всплывающих меню и выбрать всплывающее меню по имени PopupMenu1;
в) присоединить команды всплывающего меню к программным действиям основного меню. Для этого выбрать пункт всплывающего меню (из редактора меню или из списка компонентов Инспектора объектов). На странице Events выбрать событие OnClick, открыть список доступных методов (разработанных для пунктов основного меню) и выбрать из списка имя нужного метода. Это разделяемый метод.
Назначение и состав свойств пунктов основного и всплывающего меню даны в табл. 2.1. Символы мнемокодов в основном и всплывающем меню для соответственных пунктов меню одинаковы. Символы ShortCut (горячие клавиши) для основного и всплывающего меню могут быть разными. При выполнении приложения можно использовать любые доступные мнемокоды и горячие клавиши. Символы ShortCut основного меню не видны в нем, но нормально функционируют.
5)сформировать многостраничный блокнот. Для этого разместить на форме компонент типа TPageControl из страницы Win32. Установить размер страницы блокнота. Затем над блокнотом разместить метку с текстом «Место для вывода сообщений» каждым пунктом меню.
В блокноте разместить 5 страниц (TabSheet1 – TabSheet5) с помощью редактора блокнота; вызов меню редактора производится щелчком правой кнопкой мыши на компоненте. Из меню надо выбрать и выполнить пункт меню New Page - новая страница.
На страницах блокнота разместить компоненты: ListBox, ComboBox, Memo StringGrid, календарь. Сформировать заголовки каждой страницы в соответствии с их назначением: ListBox, ComboBox, Memo, StringGrid, календарь. Для этого активизировать (выбрать из списка Инспектора объектов) соответствующий компонент типа TTabSheet и установить его свойство Caption.
6) Разработать панель статуса. Для этого поместить на основную форму компонент StatusBar из страницы Win32. Настроить его на 3 (под) панели. Для этого:
а) установить свойство SimplePanel = False;
б) вызвать редактор подпанелей с помощью свойства Panels; в редакторе добавить 3 подпанели с номерами 0,1 и 2;
в) поочередно активизировать подпанели и установить их свойства Text для подпанелей:
- 0: F10 - вход в меню; этот текст - постоянный;
- 1: Для вывода подсказок; этот текст при выборе пункта меню или компонента будет заменен на текст их свойства Hint.
- 2: Время - для вывода текущего времени.
7) Для вывода подсказок в 1-ю панель StatsBarl надо:
в текст метода FormCreate поместить оператор:
Application.OnHint := DisplayHint;
в секцию public объявления типа TForml поместить заголовок метода:
procedure DisplayHint(Sender: TObject);
в секцию Implementation поместить текст процедуры DisplayHint.
2010-07-19 18:44 Читать похожую статью
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • Контрольная работа
  • © Помощь студентам
    Образовательные документы для студентов.