Практическая работа Работа с компонентами Dialogs, Samples
учебно-методический материал на тему

Джелялова Севиля Наримановна

Практическая работа по дисциплине Инструментальные средства визуального программирования

Скачать:

ВложениеРазмер
Файл isvp_pr-7.docx115.02 КБ

Предварительный просмотр:

Практическоезанятие№7

Тема.Работа с компонентами Dialogs, Samples.

Цель. Научиться составлять программы в VisualBasic, Visual C++, Delphi с использованием компонент из палитр Dialogs и Samples.

Оборудование. ПК Pentium.

Ходработы

  1. Ознакомитьсястеоретическойчастью.
  2. Выполнитьпрактическоезадание.
  3. Ответитьнаконтрольныевопросы.
  4. Оформитьотчет.

Теоретическая часть

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:

  1. Файл → Вычислить из раскрывающегося списка выберите ранее созданную процедуру расчета уравнений, в этом примере процедура Rasch.
  2. Файл → Сохранить результат. Создадим процедуру 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;

  1. Файл → Распечатать результат. Создадим процедуру 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;

  1. Файл → Выход. Создадим процедуру Exit. В теле процедуры достаточно написать Close.
  2. Формат → Шрифт. Создадим процедуру 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;

  1.  Формат → Цвет фона. Аналогично Font создадим процедуру Bckgr.
  2. Формат → Выравнивание → Слева. Создадим процедуру 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;

  1. Формат → Выравнивание → По центру. Аналогично Left создадим процедуру Center.
  2. Формат → Выравнивание → Справа. Аналогично Left создадим процедуру Right.
  3. О создателе. Создадим процедуру 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; }

                }};}

Практическаячасть

  1. Объединить программы, реализующие линейный и разветвляющийся алгоритмы, написанные в двух предыдущих практических работах в одно окно на языке Delphi.
  2. Объединитьпрограммы, реализующие линейный и разветвляющийсяалгоритмы, написанные в двух предыдущих практических работах в одно окноя на языке VisualBasic.
  3. Объединитьпрограммы, реализующие линейный и разветвляющийсяалгоритмы, написанные в двух предыдущих практических работах в одно окнона языке VisualC++.

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

  1. Как организовать «бегущую строку» в Delphi, VisualBasic, VisualC++? Приведите пример.
  2. Какие элементы в VisualBasicи VisualC++ соответствуют элементам управления, расположенным на палитрахWin32 и System языка Delphi?
  3. Как расположить вкладки сбоку, снизу в языках VisualBasicи VisualC++? Приведите пример.

Содержание отчета

  1. Тема.
  2. Цель.
  3. Оборудование.
  4. Результат выполнения практического задания.
  5. Ответы на контрольные вопросы.
  6. Вывод.

Инструментальные средства визуального программирования. Практическоезанятие №7                


По теме: методические разработки, презентации и конспекты

Практическая работа "Работа со множествами"

Представлена практическая работа со множествами в C++ Builder. Есть базовый набор цветов и три садовода, выращивающих цветы (четыре множества). задача - определить, какие цветы выращивают все садоводы...

Практическая работа «Работа со слоями. Создание коллажа в растровой графике по заданным условиям»

Практическая работа «Работа со слоями. Создание коллажа в растровой графике по заданным условиям» Цель работы: Научиться создавать рисунки из отдельных объектов (графических примитиво...

Практическая работа "Работа с сервисами сети Интернет"

Материал для внеаудиторной самостоятельной работы студентов медицинского колледжа, обучающихся по специальности "Лечебное дело"...

Практическая работа «Работа с градуировочными таблицами по определению объема нефтепродуктов»

ПМ 03. Заправка транспортных средств горючими и смазочными материалами" для подготовки учащихся по профессии  "Оператор заправочных станций" Выполнение практических рабо...

Методическая разработка учебного занятия по ОП 05 "Информационные технологии в профессиональной деятельности" Практическая работа "Работа в комплексными числами"

Методическая разработка учебного занятия по ОП 05 "Информационные технологии в профессиональной деятельности" Практическая работа "Работа в комплексными числами"...

Практическая работа "Работа с классом на языке С++"

Методические рекомендации для проведения практической работы по теме "Работа с классами  С++"...