Информатика21-22. Методические указания по курсу Информатика Пятигорск 2020 Лабораторная работа 1
Скачать 4.27 Mb.
|
Лабораторная работа №17.Цель работы. Создание приложений интегрированных с офисными приложениями WORD. Описание работы. Для упрощения работы с приложениями Microsoft Office в Delphi заранее установлено несколько готовых компонентов оболочек интерфейса автоматизации этих серверов. Эти компоненты расположены на странице Servers палитры компонентов. В зависимости от требуемых задач возможны несколько разных реализаций разработки приложений интегрированных с офисными приложениями: загрузка MS Office WORD из приложения реализованного в Delphi с открытием документа и передачи в него текста; запуск MS Office WORD и работа с ней из приложения реализованного в Delphi; запуск MS Office WORD и работа с ней из приложения, реализованного в Delphi, с применением OLE технологий. Рассмотрим каждую из приведенных возможностей работы с офисными приложениями (заметим, что приведены не все возможные реализации работы с офисными приложениями). 1. Загрузка MS Office WORD из приложения реализованного в Delphi с открытием документа и передачи в него текста. Приведем пример реализации. Пусть необходимо загрузить редактор MS WORD, открыть документ c:\RUDN\MyDoc.doc, ввести в него строку «Лабораторная работа », затем сохранить его под именем MyLabDoc.doc и закрыть редактор. Создадим новый проект, разместим на нем компонент TWordApplication, ответственный за запуск редактора, и компонент TWordDocument, ответственный за обработку конкретного документа. Добавим также кнопку по щелчку на которой и будут выполнены описанные действия. Также разместим компоненту Edit 1, для того, чтобы редактировать передаваемую информацию. Свойствам AutoConnect (автоматический запуск сервера COM , в нашем случае редактора WORD ) и AutoQuit (автоматическое завершение работы сервера COM) компонента TWordApplication надо присвоить значение true. В свойстве ConnectKind (вид связи с сервером) остается значение по умолчанию ckRunningOrNew. Оно означает, что используется уже запущенный сервер COM. В противном случае автоматически запускается новый. Приведем текст кода , выполняемого по щелчку на кнопке: procedure TForm1.BitBtn1Click(Sender: TObject); var n:OleVariant; s:string; begin s:=Edit1.Text; n:='c:\RUDN\MyDoc.doc'; WordApplication1.Documents.OpenOld(n,EmptyParam,EmptyParam, EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam, EmptyParam,EmptyParam); WordDocument1 .ConnectTo(WordApplication1 .ActiveDocument); WordApplication1.ShowMe; WordApplication1 .Selection.TypeText(s); { WordDocument1.PrintOut; } n:='C:\RUDN\MyLabDoc.doc'; WordDocument1.SaveAs(n); WordDocument1.Close; end; Если включен принтер, то можно добавить возможность печати как непосредственно с этого места, так и путем создания кнопки печати WordDocument1. PrintOut; На рисунке 1 показан предполагаемый вид формы Рисунок 1. Предполагаемый вид формы Form1. 2. Запуск MS Office WORD и работа с ней из приложения реализованного в Delphi. Приведем пример реализации. Пусть необходимо загрузить редактор MS WORD, работат с ним и затем закрыть. Создадим новый проект, разместим на нем компонент TWordApplication, ответственный за запуск редактора. Добавим также кнопку по щелчку на которой и будут выполнены описанные действия. Свойствам AutoConnect (автоматический запуск сервера COM , в нашем случае редактора WORD ) и AutoQuit (автоматическое завершение работы сервера COM) компонента TWordApplication надо присвоить значение true. Приведем текст кода, а также вид формы на рисунке 2.: procedure TForm1.BitBtn1Click(Sender: TObject); begin WordApplication1.Visible:=True; WordApplication1.Documents.AddOld(EmptyParam,EmptyParam); end; If OleContainer1.InsertObjectDialog then OleContainer1.DoVerb(OleContainer1.PrimaryVerb ); end; procedure TForm1.BitBtn4Click(Sender: TObject); begin OleContainer1.ObjectPropertiesDialog; end; Надо отметить, что такой подход дает возможность подключать не только Word, но и другие офисные приложения (аналогично вставке из Word объектов различного характера). Ход выполнения лабораторной работы. Ознакомиться с описанием лабораторной работы. Реализовать все три приведенные возможности подключения офисных приложений WORD. Оформить отчет Лабораторная работа №18.Цель работы. Создание приложений интегрированных с офисными приложениями EXEL. Описание работы. Для упрощения работы с приложениями Microsoft Office в Delphi заранее установлено несколько готовых компонентов оболочек интерфейса автоматизации этих серверов. Эти компоненты расположены на странице Servers палитры компонентов. В зависимости от требуемых задач возможны несколько разных реализаций разработки приложений интегрированных с офисными приложениями, приведем одну из них: загрузка MS Office EXEL из приложения реализованного в Delphi с открытием документа и передачи в него текста; Рассмотрим каждую из приведенных возможностей работы с офисными приложениями (заметим, что приведены не все возможные реализации работы с офисными приложениями). Пусть необходимо загрузить редактор MS EXEL, открыть файл MyTab.xls и записать текст в ячейку (1,1) текст «Ессентуки» и закрыть документ. Создадим новый проект, разместим на нем компонент TExelApplication, и компонент TExelWorkbook. Добавим также кнопку по щелчку на которой и будут выполнены описанные действия. Свойствам AutoConnect (автоматический запуск сервера COM , в нашем случае редактора Exel ) и AutoQuit (автоматическое завершение работы сервера COM) компонента TExelApplication надо присвоить значение true. В свойстве TExelWorkbook ConnectKind (вид связи с сервером) остается значение по умолчанию ckAttachToInterface. Приведем текст кода , выполняемого по щелчку на кнопке: procedure TForm1.BitBtn1Click(Sender: TObject); var n:OleVariant; begin n:='e:\mytab.xls'; ExcelApplication1.Workbooks.Add(n,0); ExcelWorkbook1 .ConnectTo(ExcelApplication1.ActiveWorkbook); ExcelApplication1.Cells.Item[1,1].Value:='npMBeT изЕссентуков'; ExcelWorkbook1 .Save; ExcelWorkbook1 .Close; end; Если включен принтер, то можно добавить возможность печати как непосредственно с этого места, так и путем создания кнопки печати ExcelWorkbook1 .PrintOut; На рисунке 1 показан предполагаемый вид формы Рисунок 1. Предполагаемый вид формы Form1. Ход выполнения лабораторной работы. Ознакомиться с описанием лабораторной работы. Реализовать все три приведенные возможности подключения офисных приложений WORD. Оформить отчет Лабораторная работа №19. Создание приложения, реализующего часыЦель работы. Ознакомление и обучение навыкам программирования приложений работающих в реальном времени, а также работа с графическими функциями. Описание работы. В данной лабораторной работе рассматриваются вопросы создания часов, как стрелочных так и цифровых. Создаем проект. Сохраняем его в своей папке как PrilTime. Параметры Forml устанавливаем следующие: На форме располагаем два компонента: TTimer из страницы System палитры компонентов и BitBtn из страницы Additional палитры компонентов. Параметры BitBtn1 устанавливаем следующие: Далее выделяем компоненту Timer1 и в Object Inspector на вкладке Events свойстве OnTimer два раза щелкаем Далее в открывшемся окне редактора набираем следующий код procedure TForm1.Timer1Timer(Sender: TObject); var DateTime:TDateTime; s,s1 ,s2,s3:string; I,k1,k2,k3:integer; a1,a2,a3:real; procedure timtim; begin if k1>11 then k1:=k1-12; a1:=(k1+k2/60)*2*pi/12; a2:=k2*2*pi/60; a3:=k3*2*pi/60; l:=canvas.Brush.Color; canvas.Brush.Color:=cl3dLight; Canvas.Pen.Color:=clRed; canvas.RoundRect(0,0,400,400,50,50); canvas.Font.Size:=48; canvas.TextOut(60,40,' Е ссентуки'); canvas.TextOut(120,110,'РУДН'); canvas.Font.Size:=20; {прорисовка часов} canvas.TextOut(220,220,s1 );canvas.TextOut(100,220,'Часы'); canvas.Pen.Width:=10; canvas.moveto(200,200); canvas.lineto(round(200+140*sin(a1 )),round(200-140*cos(a1))); {прорисовка минут} canvas.TextOut(220,260,s2);canvas.TextOut(100,260,'Минуты'); canvas.Pen.Width:=4; Canvas.Pen.Color:=clGreen; canvas.moveto(200,200); canvas.lineto(round(200+160*sin(a2)),round(200-160*cos(a2))); {прорисовка секунд} canvas.TextOut(220,300,s3);canvas.TextOut(100,300,'Секунды'); canvas.Pen.Width:=2; Canvas.Pen.Color:=clBlue; canvas.moveto(200,200); canvas.lineto(round(200+180*sin(a3)),round(200-180*cos(a3))); canvas.Brush.Color:=l; end; begin DateTime:=Time; s:=TimeToStr(DateTime); if length(s)=7 then begin s1:=copy(s,1,1);s2:=copy(s,3,2);s3:=copy(s,6,2); k1 :=StrToInt(s1); k2:=StrToInt(s2);k3:=StrToInt(s3); TimTim; end else begin s1:=copy(s,1,2);s2:=copy(s,4,2);s3:=copy(s,7,2); k1 :=StrToInt(s1 );k2:=StrToInt(s2);k3:=StrToInt(s3); TimTim; end; end; Ход выполнения лабораторной работы. Ознакомиться с описанием лабораторной работы. Реализовать разработанный проект. Оформить отчет Лабораторная работа №20Современные сетевые технологии "Создание ЧАТа на основе компонентов TServerSocket и TCHentSocket" Задание 1 Компоненты TServerSocket и TCIientSocket расположены на вкладке Internet палитры компонентов. Их взаимодействие основано на использовании виртуальных портов - сокетов и на основе протокола TCP/IP. Область использования этих компонентов достаточна широка, она начинается от простых программ обмена сообщениями и файлами до сетевых игр! Методы ClientSocket и ServerSocket схожи и позволяют обмениваться данными трех типов: 1.Массив байтов 2.Поток (для передачи файлов) 3.Строка длиной до 256 символов(байт) ClientSockccl.Socket.Se Создание приложения Чат-сервера Создайте приложение с формой Forml, разместите на FormI следующие компоненты: 1.ServerSocketl, в Objectlnspector в Properties установите свойство Port в значение 777. 2.Memol 3.Editl 4.Label 1 s 5.Три кнопки: Button 1, Button2 и Button3, измените свойства Caption на «Открыть чат», «Закрыть чат» и «Отослать» соответственно Выделите компонент ServerSocketl, в окне Objectlnspector на вкладке Events реакцией на событие OnClientRead напишите следующее: procedure TForml.ServerSocketlClieniRead(Sender: TObject; Socket: TCustomWinSocket); var s:string; integer; begin s:=lntToStr(Socket.SocketHandle)+'>>>>'+Socket.ReceiveText; //получить строку cообщения Memol.Lines.Add(s); //добавить сообщением многострочное поле for i:=0 to ServerSocketl.Socket.ActivcConnections-1 do begin if ServerSocketl.Socket.Connections[i].SocketHandle <> Sockct.SocketHandle then ServerSocketl.Socket.Connections[i].SendText(s); // отослать принятое сообщение остальным end; end; //Событие OnClientRead возникает при поступлении or ClientSocket сообщения или данных Для события ButtonI .OnClick: procedure TForml.Button1.Button1Click(Sender: TObject); begin Labell.Caption:='IP: '+ServerSocketl.Socket.LocalAddress; //IP-адрес компьютера ServerSocketl.Active:= True; //Включить серверный сокет end; Для события Button2.OnClick: procedure TForml.Butlon2Click(Sender: TObject); begin ServerSocket1.Active:=False; ServerSocketl.Close; //Завершение работы сокета end; Для события Button3.OnClick procedure TForml.Button3Click(Sender: TObject); var i:integer; begin for i:=0 to ServerSocketl.Socket.ActiveConnections-1 do ServerSocketl .Socket.Connections[i].SendText(Editl .Text); // отослать текст из Editl end; Откомпилируйте проект и сохраните в папке Server. При нажатии на кнопку «Открыть чат» если Ваш компьютер подключен к сети, на Label 1 высвечивается IP-адрес Вашего компьютера в сети, в таком режиме программа готова принимать и отсылать сообщения. Одна такая серверная программа способна обслуживать несколько тысяч клиентских программ Задание_2 Для полноценной работы Чата необходимо сошать клиентское приложение, используя компонент ClientSocketl. Аналогично Чат-серверу создайте приложение Чат-клиент с формой Forml, разместите на Forml следующие компонент: 1. ClientSocketl, в Objectlnspector в Properties ус :шовите свойство Port в значение 777 . 2.Memol 3.Editl 4. Edit2 5.Label 1 6.Три кнопки: Button 1, Button2 и Button3, измените свойства Caption на «Подключиться», «Отключиться) и «Отослать» соответственно Добавился компонент Edit2 для ввода IP - адреса Чат-сервера. Выделите компонент ClientSocketl, в окне Objectlnspector на вкладке Events реакцией на событие OnRead нппишите следующее: //Событие OnRead возникает при поступлении от ServerSocket сообщения или данных procedure TForml.ClientSocketlRead(Sender: TObject; Socket: TCustomWinSocket); begin Memol.Lines.Add(Socket.ReceiveText);//пoлyчeнный текст добавить в Memol ] end; Для события Buttonl.OnClick: procedure TForml.ButtonlClick(Sender: TObject); begin if not ClientSocket1.Active then begin ClientSocketl Address:=Edit2.Text; //Задать IP-адрес из Edit2 ClientSocketl.Active:=True; //начать работу end; end; Для события Button2.OnClick: procedure TForml.Button2Click(Sender: TObject); begin ClientSocketl.Active:=False; ClientSocketl.Close; end; Для события Button3.OnClick: procedure TForml.Button3Click(Sender: TObject); var s:string; begin ClientSocketl.Socket.SendText(Editl.Text); end; Откомпилируйте проект и сохраните в папке Client. Для теста запустите сначала оба приложения па одном компьютере. Сначала запустите Чат-сервер и нажмите кнопку «Открыть чат», затем запустите Чат-Клиент с IP-aдресом 127.0.0.1 и нажмите кнопку «Подключиться». Чат-клиентов можно запустить сколько угодно даже па одном компьютере. Теперь можно обмениваться сообщениями, вводя текст сообщения в Editl и нажимая кнопку «Отослать». Чтобы запустить Чат по локальной сети, запустите на одном из компьютеров Чат-сервер и нажмите «Запустить чат», затем вам необходимо узнать IP-адрес Чат-сервера и ввести его в поле Edit2 Чат-клиента и нажать «Подключиться». Для нормального взаимодействия этих двух программ, необходимо, чтобы свойство Port и у ServerSocket и у ClientSocket были одинаковы. Дополнительное задание. Добавьте кнопку и назовите ее «Clear», чтобы при нажатии на нее вызывался метод Memol.Lines.Clear. |