Практическая работа Работа с компонентами Dialogs, Samples
учебно-методический материал на тему
Практическая работа по дисциплине Инструментальные средства визуального программирования
Скачать:
Вложение | Размер |
---|---|
isvp_pr-7.docx | 115.02 КБ |
Предварительный просмотр:
Практическоезанятие№7
Тема.Работа с компонентами Dialogs, Samples.
Цель. Научиться составлять программы в VisualBasic, Visual C++, Delphi с использованием компонент из палитр Dialogs и Samples.
Оборудование. ПК Pentium.
Ходработы
- Ознакомитьсястеоретическойчастью.
- Выполнитьпрактическоезадание.
- Ответитьнаконтрольныевопросы.
- Оформитьотчет.
Теоретическая часть
Dialogs.Страница(рис.1)содержит компоненты, используемые для создания различных диалоговых окон, общепринятых в приложениях Windows. Диалоги используются для указания файлов или выбора установок. Применение поставляемых в составе Delphi диалоговых окон помогает сэкономить время на разработку и придать вашему приложению совместимость с принятыми в Windows нормами диалога.
OpenDialog – Предназначен для создания окна диалога «Открыть файл». Компонент невизуальный.
SaveDialog – Предназначен для создания окна диалога «Сохранить файл как...». Компонент невизуальный.
OpenPictureDialog – Предназначен для создания окна диалога «Открыть рисунок». Компонент невизуальный.
SavePictureDialog – Предназначен для создания окна диалога «Сохранить рисунок как...». Компонент невизуальный.
FontDialog – Предназначен дли создания окна диалога «Шрифты». Компонент невизуальный.
ColorDialog – Предназначен для создания окна диалога «Цвет». Компонент невизуальный.
PrintDialog – Предназначен для создания окна диалога «Печать». Компонент невизуальный.
PriterSetupDialog – Предназначен для создания окна диалога «Установка принтера». Компонент невизуальный.
FindDialog – Предназначен для создания окна диалога «Найти». Компонент невизуальный.
ReplaceDialog – Предназначен для создания окна диалога «Заменить». Компонент невизуальный.
Пример выполнения работы на языке Delphi
Задание: модернизировать программу, созданную на практическом занятии № 6, разместив главное меню со следующими пунктами:
- Файл: Вычислить, {разделитель}, Сохранить результат, Распечатать результат, {разделитель}, Выход;
- Формат: Шрифт, Цвет фона, {разделитель}, Выравнивание слева, по центру, справа.
- О создателе.
Запустите Delphi. Выберите File → Open Project… → укажите файл предыдущей работы. Затем сохраните проект под другим именем: File → SaveProjectAs…
Удалите с макета формы ToolBar с расположенными на ней элементами и Timer. Со второй вкладки (Разветвляющийся алгоритм) удалите CheckBox, отвечающие за цвет фона и шрифта.
Выберите в меню компонентов Standard пиктограмму(TMainMenu)и поместите ее на форму в любое место, это невизуальный элемент. Для добавления пунктов меню дважды щелкните на элементе. Откроется окно Конструктора меню. Перейдите в Object Inspector и в свойстве Caption напишите Файл. Перейдите в окно Конструктора меню, в котором появится название созданного раздела. Поместите курсор в рамку из точек, обозначающую место нового раздела, которая расположена ниже раздела Файл. В Object Inspector в свойстве Caption создаваемого раздела (каждый раздел меню является объектом и обладает своими свойствами, методами и событиями) напишите Вычислить. Чтобы добавить разделитель, в разделе Caption введите знак минуса «-». Создайте разделі Сохранить результат, Распечатать результат и Выход. После этого закройте окно Конструктора меню. В верхней части формы появится главное меню, содержащее пункт меню Файл. Обратите внимание, что каждый пункт меню нумеруется следующим образом: N{№п/п}, например Файл – N1, Вычислить – N2 и т.д.
Подобным образом создайте пункт Формат. Для пункта Выравнивание создайте подменю, содержащее пункты Слева, По центру, Справа. Для этого создайте пункт Выравнивание, затем нажмите на него ПКМ и выберите Create Submenu. Для подпунктов меню Выравнивания создадим «горячие клавишы». Для этого поочередно выделяем подпункты и в свойстве ShortCut выбираем для Слева
Выберите в меню компонентов Dialogs следующие компоненты: SaveDialog, FontDialog, ColorDialog, PrintDialog и поместите их на форму в любое место, это невизуальные элементы.
MainMenu1
SaveDialog1
FontDialog1
ColorDialog1
PrintDialog1
Рисунок 2 - Макет приложения в Delphi
Далее необходимо выполнить настройку диалогов. Для компонента SaveDialog1 в окне Properties свойство Filter настройте образом, нажав на три точки:
В левой панели Filter Name записывается текст, который увидит пользователь в выпадающем списке Тип файла диалога, а в правой панели Filter – шаблоны фильтра. Вы задали два фильтра: все текстовые файлы с расширением .txt (* означает любое имя) и все файлы с любым именем и любым расширением. В значение свойства DefaultExt напишите txt. Это свойство определяет расширение, которое будет по умолчанию добавляться к именам файлов при их сохранении (если значение этого свойства не задано, то пользователь должен будет указывать в диалоге полное имя файла с расширением). Щелкните по знаку плюс рядом со свойством Options и включите опцию ofOverwritePrompt, выбрав из раскрывающегося списка рядом с именем этого свойства значение true. Теперь, в случае если пользователь при сохранении файла напишет имя уже существующего файла, об этом будет выдано сообщение.
Для компонента PrintDialog1 в окне Properties свойства MaxPage и MinPage указывают количество страниц для печати. Если их не указать, то не будет доступна функция выбора страниц для печати. В Options для пунктов poPageNums и poSelections установите True.
Теперь необходимо связать все команды в меню с процедурами. Для этого нужно присвоить каждому пункту мню соответствующую процедуру в Events → OnClick:
- Файл → Вычислить из раскрывающегося списка выберите ранее созданную процедуру расчета уравнений, в этом примере процедура Rasch.
- Файл → Сохранить результат. Создадим процедуру Save:
procedure TForm1.Save(Sender: TObject);
begin
case PageControl1.TabIndex of
0: begin
SaveDialog1.Execute;
mmoU.Lines.SaveToFile(SaveDialog1.FileName);
end;
1: begin
SaveDialog1.Execute;
MemZ.Lines.SaveToFile(SaveDialog1.FileName);
end;
end;
end;
- Файл → Распечатать результат. Создадим процедуру Print:
procedure TForm1.Print(Sender: TObject);
Var
PrintTxt:TextFile;
i:integer;
begin
If PrintDialog1.Execute Then
begin
case PageControl1.TabIndex of
0: begin
AssignPrn(PrintTxt);
Rewrite(PrintTxt);
For i:=0 to mmoU.Lines.Count-1 do Writeln(PrintTxt,mmoU.Lines[i]);
CloseFile(PrintTxt);
end;
1: begin
AssignPrn(PrintTxt);
Rewrite(PrintTxt);
For i:=0 to MemZ.Lines.Count-1 do Writeln(PrintTxt,MemZ.Lines[i]);
CloseFile(PrintTxt);
end;
end;
end;
end;
- Файл → Выход. Создадим процедуру Exit. В теле процедуры достаточно написать Close.
- Формат → Шрифт. Создадим процедуру Font:
procedure TForm1.Font(Sender: TObject);
begin
case PageControl1.TabIndex of
0: begin
FontDialog1.Font := mmoU.Font ;
FontDialog1.Execute;
mmoU.Font := FontDialog1.Font ;
end;
1: begin
FontDialog1.Font := MemZ.Font ;
FontDialog1.Execute;
MemZ.Font := FontDialog1.Font ;
end;
end;
end;
- Формат → Цвет фона. Аналогично Font создадим процедуру Bckgr.
- Формат → Выравнивание → Слева. Создадим процедуру Left:
procedure TForm1.Left(Sender: TObject);
begin
case PageControl1.TabIndex of
0: begin
mmoU.Alignment := taLeftJustify;
N11.Checked := True ;
N12.Checked := False ;
N13.Checked := False ;
end;
1: begin
MemZ.Alignment := taLeftJustify;
N11.Checked := True ;
N12.Checked := False ;
N13.Checked := False ;
end;
end;
end;
- Формат → Выравнивание → По центру. Аналогично Left создадим процедуру Center.
- Формат → Выравнивание → Справа. Аналогично Left создадим процедуру Right.
- О создателе. Создадим процедуру Author:
procedure TForm1.Author(Sender: TObject);
begin
ShowMessage ('Автор данной работы Джелялова С.Н., преподаватель');
end;
В программах на Visual Basic и Visual C++ в меню Формат подпункт Выравнивание не использовать.
В программе на VB реализация печати результатов представляет несколько иную структуру. Для печати необходимо помимо элемента PrintDialog дополнительно использовать PrintDocument. Свойства элемента PrintDialog установить следующие: AllowSelection – True, AllowSomePages – True, Document – PrintDocument1. В пункте меню Файл → Распечатать результат в обработчике событий задать Click: Printt, нажать Enter и в появившемся коде напечатать:
Private Sub Printt(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles РаспечататьРезультатToolStripMenuItem.Click
PrintDocument1.Print()
End Sub
Затем вручную набрать следующую процедуру:
Private Sub PrintPage(ByVal sender As Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
Dim linesPerPage As Single = 0
Dim yPos As Single = 0
Dim count As Integer = 0
Dim leftMargin As Single = e.MarginBounds.Left
Dim topMargin As Single = e.MarginBounds.Top
Dim line As String = Nothing
Dim printFont = New Font("Arial", 12.0!)
' Печатаем каждую строку ListBox
Select Case TabControl1.SelectedIndex
Case 0
For I = 0 To ListBox1.Items.Count - 1
line = ListBox1.Items(I)
yPos = topMargin + count * printFont.GetHeight(e.Graphics)
' Печать строки
e.Graphics.DrawString(line, printFont, Brushes.Black, leftMargin, yPos, New StringFormat)
' перевод строки
count += 1
Next
Case 1
For I = 0 To ListBoxU.Items.Count - 1
line = ListBoxU.Items(I)
yPos = topMargin + count * printFont.GetHeight(e.Graphics)
' Печать строки
e.Graphics.DrawString(line, printFont, Brushes.Black, leftMargin, yPos, New StringFormat)
' перевод строки
count += 1
Next
End Select
Для элемента SaveFileDialog установить следующие свойства: CheckPathExists – True, Default – txt, Filter – Текстовые файлы|*.txt|Все файлы|*.*. В обработчике событий для пункта Файл Сохранить результат прописать следующую процедуру Save:
Private Sub Save(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles СохранитьРезультатToolStripMenuItem.Click
Dim I As Integer = 0
Select Case TabControl1.SelectedIndex
Case 0
If SaveFileDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then
FileOpen(1, SaveFileDialog1.FileName, OpenMode.Output)
For I = 0 To ListBox1.Items.Count - 1
PrintLine(1, ListBox1.Items(I))
Next
FileClose()
End If
Case 1
If SaveFileDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then
FileOpen(1, SaveFileDialog1.FileName, OpenMode.Output)
For I = 0 To ListBoxU.Items.Count - 1
PrintLine(1, ListBoxU.Items(I))
Next
FileClose()
End If
End Select
End Sub
Для реализации пункта Формат → Шрифт в обработчике событий создаем процедуру TextFont. Процедура Bckgr изменения фона в поле ListBox аналогична.
Private Sub TextFont(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ШрифтToolStripMenuItem.Click
Select Case TabControl1.SelectedIndex
Case 0
If FontDialog1.ShowDialog() = DialogResult.OK Then ListBox1.Font = FontDialog1.Font
Case 1
If FontDialog1.ShowDialog() = DialogResult.OK Then ListBoxU.Font = FontDialog1.Font
End Select
End Sub
Листинг 3 – Текст части программы на языке VisualC++
#pragmaendregion
private: System::Void Form1_Load(System::Object^ sender, System::EventArgs^ e) {
textBoxX->Text = ""; // начальное значение X
textBoxY->Text = ""; // начальное значение Y
textBoxZ->Text = ""; // начальное значение Z
listBox1->Items->Add("Здесь будет выводиться результат");
textBox1->Text = ""; // начальное значение X
textBox2->Text = ""; // начальное значение Y
Uns->Items->Add("Здесь будет выводиться результат");
// отображениевремени
toolStripLabel1->Text = DateTime::Today.ToShortDateString();
toolStripLabel2->Text = DateTime::Now.ToLongTimeString(); }
private: System::Void Rasch(System::Object^ sender, System::EventArgs^ e) {
doublex,y,z,a,b,c,u,f,pr;
switch (tabControl1->SelectedIndex) {
case 0: {
x = Convert::ToDouble(textBoxX->Text);
y = Convert::ToDouble(textBoxY->Text);
z = Convert::ToDouble(textBoxZ->Text);
// вычисление
a = Math::Sqrt(x)-y*y*y;
b = Math::Sin(a)/Math::Cos(a);
c = Math::Exp(5*Math::Log(b));
u = c+Math::Exp(y/z)*Math::Sin(z*z);
// вывод
listBox1->Items->Clear();
listBox1->Items->Add("u = "+ u); }
break;
case 1: {
x = Convert::ToDouble(textBox1->Text);
y = Convert::ToDouble(textBox2->Text);
// проверкавыбраннойфункции
if(radioButton1->Checked) { f=Math::Cos(x); }
if(radioButton2->Checked) { f=x*x; }
if(radioButton3->Checked) { f=Math::Exp(x); }
// вычисление в соответсвии с условием
pr = x*y;
if (pr>0) { z = Math::Pow((f+y),2);}
if (pr==0) { z = f+y;}
if (pr<0) { z = f+Math::Cos(y);}
// вывод
Uns->Items->Clear();
Uns->Items->Add("X = "+ x+" Y = "+ y+" X * Y = "+ pr);
Uns->Items->Add("F = "+f+" Z = "+ z); }
break;} }
private: System::Void UnsRed(System::Object^ sender, System::EventArgs^ e) {
if(checkBox1->Checked) { Uns->ForeColor = Color::Red; }
else { Uns->ForeColor = Color::Black; }
}};}
Практическаячасть
Объединить программы, реализующие линейный и разветвляющийся алгоритмы, написанные в двух предыдущих практических работах в одно окно на языке Delphi.
- Объединитьпрограммы, реализующие линейный и разветвляющийсяалгоритмы, написанные в двух предыдущих практических работах в одно окноя на языке VisualBasic.
- Объединитьпрограммы, реализующие линейный и разветвляющийсяалгоритмы, написанные в двух предыдущих практических работах в одно окнона языке VisualC++.
Контрольныевопросы
- Как организовать «бегущую строку» в Delphi, VisualBasic, VisualC++? Приведите пример.
- Какие элементы в VisualBasicи VisualC++ соответствуют элементам управления, расположенным на палитрахWin32 и System языка Delphi?
- Как расположить вкладки сбоку, снизу в языках VisualBasicи VisualC++? Приведите пример.
Содержание отчета
- Тема.
- Цель.
- Оборудование.
- Результат выполнения практического задания.
- Ответы на контрольные вопросы.
- Вывод.
Инструментальные средства визуального программирования. Практическоезанятие №7
По теме: методические разработки, презентации и конспекты
Практическая работа "Работа со множествами"
Представлена практическая работа со множествами в C++ Builder. Есть базовый набор цветов и три садовода, выращивающих цветы (четыре множества). задача - определить, какие цветы выращивают все садоводы...
Практическая работа «Работа со слоями. Создание коллажа в растровой графике по заданным условиям»
Практическая работа «Работа со слоями. Создание коллажа в растровой графике по заданным условиям» Цель работы: Научиться создавать рисунки из отдельных объектов (графических примитиво...
План урока теоретического обучения по профессии "Маляр" по дисциплине Технология малярных работ. Тема программы: Общие сведения о малярных работах Тема урока: Компоненты малярных составов
План урока теоретического обучения по дисциплине : Технология малярных работ.Тема урока: Компоненты малярных составов...
Практическая работа "Работа с сервисами сети Интернет"
Материал для внеаудиторной самостоятельной работы студентов медицинского колледжа, обучающихся по специальности "Лечебное дело"...
Практическая работа «Работа с градуировочными таблицами по определению объема нефтепродуктов»
ПМ 03. Заправка транспортных средств горючими и смазочными материалами" для подготовки учащихся по профессии "Оператор заправочных станций" Выполнение практических рабо...
Методическая разработка учебного занятия по ОП 05 "Информационные технологии в профессиональной деятельности" Практическая работа "Работа в комплексными числами"
Методическая разработка учебного занятия по ОП 05 "Информационные технологии в профессиональной деятельности" Практическая работа "Работа в комплексными числами"...
Практическая работа "Работа с классом на языке С++"
Методические рекомендации для проведения практической работы по теме "Работа с классами С++"...