Сведения, необходимые для выполнения работы
Программирование предоставляет широкие возможности по автоматизации различных процессов. Автоматизация может вестись на разных уровнях и должна быть адекватна конкретной ситуации. При небольших объемах информации и несложных задачах по ведению документации достаточно может оказаться системы офисных документов. Приложения Microsoft Office позволяют решать различные задачи и основных возможностей оказывается достаточно, также помогают избавится от повторения одних и тех же действий благодаря макросам (см. лабораторную работу №1). Приложения Microsoft Office допускают их применение в качестве инструментальной среды для разработки собственных приложений, решающих специфические задачи. Это достигается за счет языка VBA и создания макросов. С помощью VBA также поддерживается технология ADO для связи приложений. Для работы с большими объемами данных рационально использовать БД. Выделяют стандартные запросы, часто просматриваемые таблицы и необходимые для печати отчеты. Затем эти элементы разрабатываются и чаще всего создается главная форма программы, на которой и размещаются кнопки для доступа к ним. По завершении работы над проектом получаем приложение, организующее работу с БД. При этом существуют различные СУБД, например, Microsoft Access. Также можно воспользоваться средой Delphi (использование DataBase Desktop, BDE Administrator и т.д.). Данный подход является более гибким - технология ADO позволяет связывать приложение Delphi с БД в Microsoft Access. Интересно связать документ Excel и БД Access. На листах рабочей книги Excel будет зачитываться информация из базы, там же можно вносить изменения, организовать вывод информации на лист так, чтобы получить печатную форму, максимально приближенную к реальным документам.
При работе с документами часто применяют текстовые процессоры, в которых тексты документов редактируются, либо создаются «с нуля». Термин «системы электронного документооборота» возник в начале 90-х годов и в тот момент предполагал возможность данного класса продуктов автоматизировать узкую сферу «канцелярского» документооборота: создавать, редактировать, регистрировать, хранить документы. Современные системы электронного документооборота обладают не только регистрационно-учетными возможностями, но и способностью автоматизировать бизнес-процессы, представляемые как движение документов и работа с ними. Сегодня к системы электронного документооборота предъявляются требования: возможность комплексной работы с документами, интегрируемость с другими приложениями и наследование данных из них, поддержка территориально-распределенной работы, обеспечение юридически значимого документооборота применением электронно-цифровой подписи, удобный интерфейс. К тенденциям на рынке системы электронного документооборота можно отнести внимания предприятий к вопросам интеграции со смежными информационными системами, прежде всего, с ERP. Информационная система управления (управленческая информационная система) – это совокупность административных, экономических, математических, социологических, статистических, бихевиористических и других методов, программных и аппаратных (технических) средств, служащих для сбора, обработки и выдачи информации с целью принятия управленческих решений. Как сложный программный комплекс они включают в себя несколько модулей, отвечающих за решение различных задач: · предоставление мгновенного доступа к главной информации, отображение ключевых показателей в наглядном виде; · ведение кадрового учета и расчета заработной платы сотрудников;
· обеспечение контроля над всеми денежными потоками; · автоматизация учета договоров; · автоматизация складскогоучета; · учет клиентов и управление взаимоотношениями с ними; · администрирование – назначение прав пользователям, гарантия высокого уровня внутренней безопасности; · формирование различных отчетов и составление аналитических сводок. Автоматизация отчетности является составной частью систем управления, т. к. в деятельности предприятия неизбежны процессы формирования разнообразной отчетности для внутренних и внешних пользователей. Для крупных предприятий характерны высокая трудоемкость, низкая формализация, недостаточная оперативность и недостоверность предоставляемой отчетной информации. Для них в целях автоматизации отчетности эффективно использование технологии хранилища данных, специализированных средств генерации отчетов и бизнес-аналитики. Производители ERP-систем мирового уровня предлагают все необходимые для этого компоненты. Для небольших предприятий, либо отдельных пользователей более актуальным кажется решение проблемы с привлечением менее серьезных средств. Стоит задуматься о системе хранения офисных документов, небольшой БД с заранее созданными запросами и отчетами, средствах для ускоренной разработки часто создаваемых по одному принципу документов. Если требуется сделать более простым и удобным создание документа, проведение нестандартных расчетов, то можно прибегнуть к помощи среды программирования Borland Delphi и разработать приложение, которое максимально будет соответствовать требованиям. Предположим, что пользователь составляет документ, а сведения, содержащиеся в нем, отличаются от сведений, которые предоставлялись в прошлый раз. С другой стороны, это не просто текст произвольного содержания. Здесь можно выявить определенную конструкцию документа постараться формализовать задачу. Рассмотрим пример. В протоколе важно сразу выявить структуру: · каждый документ нумеруется, проставляется дата; · присутствует заголовок: «Заседание»; · в разделе «присутствовали» указываются фамилии и должности сотрудников-участников заседания; · в разделе «повестка» указываются цели заседания;
· в основной части протокола по каждому из сотрудников указывается информация (для примера): фамилия, должность, количество отработанных часов, ставка, очередной отпуск, больничный лист, ставка и количество дней вакансии с указанием должности, ставка и количество дней замещения с указанием замещаемого сотрудника, другая информация в более свободной форме – пункты, кроме первых четырех, могут присутствовать или нет. Таким образом, возможна разработка приложения, осуществляющего генерацию текста протокола, где можно будет указать: · фамилию и должность сотрудника, воспользовавшись, компонентом Combobox, тогда они будут у пользователя в распоряжении; · количество отработанных часов и ставку, при этом стандартные слова «отработал(а)», «ставка», «часов» (во всех возможных склонениях) будут добавляться автоматически (свойство caption объекта label, radiobutton, checkbox); · факт замещения или работу в вакантной должности – пользователь указывает только ставку, количество дней, вакантную должность, либо фамилию замещаемого сотрудника, а программа сохраняет в текст формулировку; · прочие данные в отдельном поле, где например можно дописать о еще одном замещении, либо иной текст. Приведем форму программы, опишем механизм генерации текста, а затем рассмотрим листинг программы. На форме разместим элементы (см. Unit1). · Метки - label1, label2 и так далее – предназначены для подписи к другим элементам формы, в генерации текста не принимают участия; · Поля ввода – edit для ввода количества отработанных часов, для ввода периода отпуска, для ввода периода больничного листа и так далее; · Комбинированные списки – combobox выбора фамилии и должности, выбора должности, выбора фамилии – в свойстве Items этих элементов укажем должности и фамилии, и агрузим информацию из текстового файла; · Многострочное поле – Memo1 (в это поле добавляется полученная строка по каждому из сотрудников); · Кнопки Button1 («Принять данные»), Button2 («Сохранить!»). Комбинированные списки Сombobox - выбор фамилии с должностью, выбор вакантной должности, выбор фамилии замещаемого лица – в свойстве Items этих элементов укажем все должности и фамилии (загрузить информацию из текстового файла).
Логичнее будет сразу указывать фразы со всеми склонениями и знаками препинания.
Для создания списка для Сombobox1 создадим текстовый файл: Иванова И.И. заведующая, - Сидорова С.С.- старшая медсестра, - Создав файл (необходимо указать всех сотрудников), можно будет загрузить его содержимое в список элемента Сombox1 (свойство Items, нажмите на кнопку с многоточием и в открывшемся окне щелкните правой кнопкой мыши, выберете пункт «Load...» и укажите файл). Аналогично поступим с остальными Сombox. Для Сombobox2 (вакантные должности), необходимо приводить фразу с учетом склонения («вакансии кого?»), создадим файл: заведующей старшей медсестры секретаря и т. п. Для Сombobox3 укажим в файле-заготовке фамилии с учетом склонения (фамилии замещаемого лица – «за кого»): Иванову И.И. Петрова П.П. и. т. д. В свойстве «text» комбинированных списков укажем такие подсказки, как «Выберете фамилию…», «Выберете должность…». Текст отчета будет генерироваться построчно – необходимо указывать информацию по каждому сотруднику, добавлять ее в общий список. Реализуется это так: пользователь при запуске приложения выбирает из списка фамилию сотрудника (сразу указана должность), ставит «галочку» напротив слова «отработала», в следующее тестовое поле вводит количество часов, далее, определяет склонение следующего слова предложения («час», «часов», «часа»); если сотрудник был в очередном отпуске, на больничном листе, в отпуске без содержания, то этот факт указывается пометкой напротив нужной формулировки с указанием периода в текстовых полях. Аналогично поступают и с работой в вакантной должности или замещением – указывается вакантная должность или фамилия замещаемого сотрудника, ставка, количество дней (сами слова «ставка» и «день» также указываются в нужном склонении). Текстовое поле с пометкой «прочее» используется пользователем в случае, если необходимо указать дополнительную информацию по сотруднику. Далее необходимо принять данные с помощью одноименной кнопки. Работа процедуры обработки события Onclick основана на том, что: · необходимо сгенерировать (собрать) строку текста о сотруднике, то есть из указанных пользователем данных составить логичное предложение; · эту строку добавить в многострочное поле Memo1. Рассмотрим создание строки текста. Используем переменную st строкового типа для добавления в нее формулировок. Сначала очистим ее, затем с помощью оператора добавления в строку («+») будем заполнять ее.
· добавим выбранную пользователем фамилию из первого комбинированного списка: st:=st+ComboBox1.Text; · добавим значение свойств текст или caption соответствующих элементов, при условии, что они заполнены или «включены». Будем использовать знаки препинания для формирования полноценного предложения. Итак, процедура генерации текста procedure TForm1.BitBtn2Click в программе. Кнопка «Сохранить!» отвечает за сохранение текста в файл (в формате Word). На выходе необходим документ с элементами форматирования, поэтому необходимо сохранять данные в документ Word. Для отправки данных из Delphi будем использовать технологию OLE - возможность из разрабатываемого приложения (клиента) взаимодействовать с другими приложениями (серверами). Алгоритм импорта данных в Word следующий: 1. создаем подключение к серверу-приложению Word; 2. создаем или открываем существующий документ; 3. вносим в документ изменения; 4. манипулируем документом (сохраняем его, не показывая при этом на экране или же наоборот); 5. отсоединяемся от сервера. Таким образом, процедура кнопки «Сохранить» будет выглядеть так: procedure TForm1.BitBtn1Click(Sender: TObject); var Application: variant; Range1: variant; begin Application:= CreateOleObject('Word.Application'); //создаем соединение с Word Application.Documents.Add; //создаем новый документ Application.Documents.Item(1); //обращаемся к новому документу Application.Documents.Item(1).Activate; // делаем новый документ активным Application.ActiveDocument.Paragraphs.Add; //создаем абзац в документе Range1:=Application.ActiveDocument.Paragraphs.Item(1).Range; //создаем область Range1 Range1.InsertBefore(Memo1.Text); //вставляем текст из многострочного поля Memo1 Application.ActiveDocument.Close; //закрываем документ (программа просит сохранить его) end; Рассмотрим теперь общий текст программы: program Project1; uses Forms, Unit1 in 'Unit1.pas' {Form1}; {$R *.res} begin Application.Initialize; Application.CreateForm(TForm1, Form1); Application.Run; end. unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, XPMan, StdCtrls, Buttons; type TForm1 = class(TForm) XPManifest1: TXPManifest; ComboBox1: TComboBox; CheckBox1: TCheckBox; Edit1: TEdit; Label1: TLabel; Memo1: TMemo; CheckBox4: TCheckBox; Edit2: TEdit; Label2: TLabel; GroupBox1: TGroupBox; ComboBox2: TComboBox; GroupBox2: TGroupBox; ComboBox3: TComboBox; Label7: TLabel; Edit5: TEdit; CheckBox7: TCheckBox; Edit6: TEdit; Label9: TLabel; CheckBox8: TCheckBox; Edit7: TEdit; Label10: TLabel; Edit3: TEdit; Label3: TLabel; Edit4: TEdit; Edit8: TEdit; Edit9: TEdit; Label13: TLabel; BitBtn1: TBitBtn; BitBtn2: TBitBtn; GroupBox3: TGroupBox; RadioButton1: TRadioButton; RadioButton2: TRadioButton; RadioButton3: TRadioButton; GroupBox4: TGroupBox; RadioButton4: TRadioButton; RadioButton5: TRadioButton; GroupBox5: TGroupBox; RadioButton6: TRadioButton; RadioButton7: TRadioButton; RadioButton8: TRadioButton; GroupBox6: TGroupBox; RadioButton9: TRadioButton; RadioButton10: TRadioButton; GroupBox7: TGroupBox; RadioButton11: TRadioButton; RadioButton12: TRadioButton; RadioButton13: TRadioButton; procedure BitBtn1Click(Sender: TObject); procedure BitBtn2Click(Sender: TObject); private { Private declarations } public { Public declarations } OLE: Variant; FileName:string; end; var Form1: TForm1; implementation {$R *.dfm} uses ComObj; var st:string; procedure TForm1.BitBtn1Click(Sender: TObject); var Application: variant; Range1: variant; begin Application:= CreateOleObject('Word.Application'); //создаем соединение с Word Application.Documents.Add; //создаем новый документ Application.Documents.Item(1); //обращаемся к новому документу Application.Documents.Item(1).Activate; //делаем новый документ активным Application.ActiveDocument.Paragraphs.Add; //создаем абзац в документе Range1:=Application.ActiveDocument.Paragraphs.Item(1).Range; //создаем область Range1 Range1.InsertBefore(Memo1.Text); //вставляем текст из многострочного поля Memo1 Application.ActiveDocument.Close; //закрываем документ (программа просит сохранить его) end; procedure TForm1.BitBtn2Click(Sender: TObject); begin st:=''; //очищаем строку st st:=st+ComboBox1.Text; // добавляем информацию в строку st if Checkbox1.Checked=true then st:=st+' '+Checkbox1.Caption; if Edit1.Text<>'' then st:=st+' '+ Edit1.Text; if RadioButton1.Checked=true then st:=st+' '+RadioButton1.Caption; if RadioButton2.Checked=true then st:=st+' '+RadioButton2.Caption; if RadioButton3.Checked=true then st:=st+' '+RadioButton3.Caption; if Checkbox4.Checked=true then st:=st+' '+'(' +Checkbox4.Caption +' '+ Edit2.Text +')'; if Checkbox7.Checked=true then st:=st+' '+'(' +Checkbox7.Caption +' '+ Edit6.Text +')'; if Checkbox8.Checked=true then st:=st+' '+'(' +Checkbox8.Caption +' '+ Edit7.Text +')'; if Edit3.Text<>'' then st:=st+' '+ '+' +' '+ Edit3.Text; if (RadioButton4.Checked=true) and (Edit3.Text<>'') then st:=st+' '+ RadioButton4.Caption; if (RadioButton5.Checked=true)and (Edit3.Text<>'')then st:=st+' '+ RadioButton5.Caption; if Edit4.Text<>'' then st:=st+','+' '+Edit4.Text; if (RadioButton6.Checked=true) and (Edit4.Text<>'') then st:=st+' '+ RadioButton6.Caption + ' '+ 'вакансии'+ ' '+ ComboBox2.Text; if (RadioButton7.Checked=true) and (Edit4.Text<>'') then st:=st+' '+ RadioButton7.Caption + ' '+ 'вакансии'+ ' '+ ComboBox2.Text; if (RadioButton8.Checked=true) and (Edit4.Text<>'') then st:=st+' '+ RadioButton8.Caption + ' '+ 'вакансии'+ ' '+ ComboBox2.Text; if Edit8.Text<>'' then st:=st+' '+ '+' +' '+ Edit8.Text; if (RadioButton9.Checked=true) and (Edit8.Text<>'') then st:=st+' '+ RadioButton9.Caption; if (RadioButton10.Checked=true) and (Edit8.Text<>'') then st:=st+' '+ RadioButton10.Caption; if Edit9.Text<>'' then st:=st+','+' '+Edit9.Text; if (RadioButton11.Checked=true) and (Edit9.Text<>'') then st:=st+' '+ RadioButton11.Caption + ' '+ 'за'+ ' '+ ComboBox3.Text; if (RadioButton12.Checked=true) and (Edit9.Text<>'') then st:=st+' '+ RadioButton12.Caption + ' '+ 'за'+ ' '+ ComboBox3.Text; if (RadioButton13.Checked=true) and (Edit9.Text<>'') then st:=st+' '+ RadioButton13.Caption + ' '+ 'за'+ ' '+ ComboBox3.Text; if Edit5.Text<>''then st:=st+' '+ '+' +' '+ Edit5.Text; Memo1.Lines.add(st); //добавляем полученную строку в поле Memo1 end; end. Для логичного завершения отчета добавим второй модуль для создания заголовка и преобразуем часть, отвечающую за сохранение в файл – используем возможности по форматированию текста (шрифтов, стили, выравнивания). Расположенная вверху кнопка «Заголовок» (см. рис. 3, на котором изображена главная форма программы с кнопкой для создания заголовка) предназначена для ввода дополнительной информации к созданию конечного документа: кроме основной части протокола, где по каждому из сотрудников делается запись, мы также внесем информацию о номере протокола, присутствующих, повестке и так далее. По щелчку на кнопке появится следующая форма (см. рис.2. с формой для создания заголовка). Как уже отмечалось, реализуется ввод таких данных и их сохранение при помощи нового модуля. На форме разместим элементы (см. Unit2): · Метки - label1 (в свойство caption «Протокол №») – при сохранении информации эта стандартная для всех протоколов строчка добавится без изменений, аналогично поступим с элементом label2 («от»), label3 («Заседание»), label4 («присутствовали»), label5 («повестка»); · Поля ввода – edit для ввода номера протокола, даты и формулировки повестки заседания; · Комбинированные списки – combobox выбора должности и выбора фамилии – в свойстве Items этих элементов укажем все должности и фамилии АТПК, удобнее это сделать, загрузив информацию из текстового файла; · Многострочные поля – Memo1 (добавляется фамилия присутствующего сотрудника при каждом щелчке на кнопке «Добавить фамилию», затем из этого поля информация будет перенесена в Memo0). Memo0 не является невидимым, на самом деле видимость (свойство Visible) в значении истина, и элемент отображается на форме при запуске приложения, однако, это поле размещено под Memo1, и пользователь не может наблюдать его. В это поле добавляются сведения, вводимые пользователем с помощью описываемой формы, хранит информацию для создания заголовка будущего документа, но скрыто по причине неформатированности. Это поле служит хранилищем введенных данных и используется для их быстрого сохранения в файл. Применим также средства форматирования в конечном документе MS Word, изменив процедуру обработки события Onclick кнопки «Сохранить». В целом листинг первоначальной программы изменится: program Project1; uses Forms, Unit1 in 'Unit1.pas' {Form1}, Unit2 in 'Unit2.pas' {Form2}; {$R *.res} begin Application.Initialize; Application.CreateForm(TForm1, Form1); Application.CreateForm(TForm2, Form2); Application.Run; end. unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, XPMan, StdCtrls, Buttons; type TForm1 = class(TForm) XPManifest1: TXPManifest; ComboBox1: TComboBox; CheckBox1: TCheckBox; Edit1: TEdit; Label1: TLabel; Memo1: TMemo; CheckBox4: TCheckBox; Edit2: TEdit; Label2: TLabel; GroupBox1: TGroupBox; ComboBox2: TComboBox; GroupBox2: TGroupBox; ComboBox3: TComboBox; Label7: TLabel; Edit5: TEdit; CheckBox7: TCheckBox; Edit6: TEdit; Label9: TLabel; CheckBox8: TCheckBox; Edit7: TEdit; Label10: TLabel; Edit3: TEdit; Label3: TLabel; Edit4: TEdit; Edit8: TEdit; Edit9: TEdit; Label13: TLabel; BitBtn1: TBitBtn; BitBtn2: TBitBtn; GroupBox3: TGroupBox; RadioButton1: TRadioButton; RadioButton2: TRadioButton; RadioButton3: TRadioButton; GroupBox4: TGroupBox; RadioButton4: TRadioButton; RadioButton5: TRadioButton; GroupBox5: TGroupBox; RadioButton6: TRadioButton; RadioButton7: TRadioButton; RadioButton8: TRadioButton; GroupBox6: TGroupBox; RadioButton9: TRadioButton; RadioButton10: TRadioButton; GroupBox7: TGroupBox; RadioButton11: TRadioButton; RadioButton12: TRadioButton; RadioButton13: TRadioButton; BitBtn3: TBitBtn; procedure BitBtn1Click(Sender: TObject); procedure BitBtn2Click(Sender: TObject); procedure BitBtn3Click(Sender: TObject); private { Private declarations } public { Public declarations } OLE: Variant; FileName:string; end; var Form1: TForm1; implementation {$R *.dfm} uses ComObj, Unit2; var st:string; procedure TForm1.BitBtn1Click(Sender: TObject); var Application: variant; Range1: variant; begin Application:= CreateOleObject('Word.Application'); //создаем соединение с Word Application.Documents.Add; //создаем новый документ Application.Documents.Item(1); //обращаемся к новому документу Application.Documents.Item(1).Activate; //делаем новый документ активным Application.ActiveDocument.Paragraphs.Add; //создаем абзац в документе Range1:=Application.ActiveDocument.Paragraphs.Item(1).Range; //создаем область Range1 Range1.Font.Bold:= True; // шрифт в заголовке – полужирный Range1.ParagraphFormat.Alignment:= 1; // выравнивание – по центру Range1.InsertBefore(Form2.Memo0.Text); //вставляем текст заголовка Range1.InsertAfter(Memo1.Text); //вставляем сам текст протокола Application.ActiveDocument.Close; //закрываем документ (программа просит сохранить его) end; procedure TForm1.BitBtn2Click(Sender: TObject); begin st:=''; //очищаем строку st st:=st+ComboBox1.Text; // добавляем введенную информацию в строку st if Checkbox1.Checked=true then st:=st+' '+Checkbox1.Caption; if Edit1.Text<>'' then st:=st+' '+ Edit1.Text; if RadioButton1.Checked=true then st:=st+' '+RadioButton1.Caption; if RadioButton2.Checked=true then st:=st+' '+RadioButton2.Caption; if RadioButton3.Checked=true then st:=st+' '+RadioButton3.Caption; if Checkbox4.Checked=true then st:=st+' '+'(' +Checkbox4.Caption +' '+ Edit2.Text +')'; if Checkbox7.Checked=true then st:=st+' '+'(' +Checkbox7.Caption +' '+ Edit6.Text +')'; if Checkbox8.Checked=true then st:=st+' '+'(' +Checkbox8.Caption +' '+ Edit7.Text +')'; if Edit3.Text<>'' then st:=st+' '+ '+' +' '+ Edit3.Text; if (RadioButton4.Checked=true) and (Edit3.Text<>'') then st:=st+' '+ RadioButton4.Caption; if (RadioButton5.Checked=true)and (Edit3.Text<>'')then st:=st+' '+ RadioButton5.Caption; if Edit4.Text<>'' then st:=st+','+' '+Edit4.Text; if (RadioButton6.Checked=true) and (Edit4.Text<>'') then st:=st+' '+ RadioButton6.Caption + ' '+ 'вакансии'+ ' '+ ComboBox2.Text; if (RadioButton7.Checked=true) and (Edit4.Text<>'') then st:=st+' '+ RadioButton7.Caption + ' '+ 'вакансии'+ ' '+ ComboBox2.Text; if (RadioButton8.Checked=true) and (Edit4.Text<>'') then st:=st+' '+ RadioButton8.Caption + ' '+ 'вакансии'+ ' '+ ComboBox2.Text; if Edit8.Text<>'' then st:=st+' '+ '+' +' '+ Edit8.Text; if (RadioButton9.Checked=true) and (Edit8.Text<>'') then st:=st+' '+ RadioButton9.Caption; if (RadioButton10.Checked=true) and (Edit8.Text<>'') then st:=st+' '+ RadioButton10.Caption; if Edit9.Text<>'' then st:=st+','+' '+Edit9.Text; if (RadioButton11.Checked=true) and (Edit9.Text<>'') then st:=st+' '+ RadioButton11.Caption + ' '+ 'за'+ ' '+ ComboBox3.Text; if (RadioButton12.Checked=true) and (Edit9.Text<>'') then st:=st+' '+ RadioButton12.Caption + ' '+ 'за'+ ' '+ ComboBox3.Text; if (RadioButton13.Checked=true) and (Edit9.Text<>'') then st:=st+' '+ RadioButton13.Caption + ' '+ 'за'+ ' '+ ComboBox3.Text; if Edit5.Text<>''then st:=st+' '+ '+' +' '+ Edit5.Text; Memo1.Lines.add(st); //добавляем полученную строку в поле Memo1 end; procedure TForm1.BitBtn3Click(Sender: TObject); begin form2.visible:=true; //показываем вторую форму для ввода данных к заголовку end; end. unit Unit2; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, XPMan, Buttons; type TForm2 = class(TForm) Label1: TLabel; Edit1: TEdit; Label2: TLabel; Edit2: TEdit; Label4: TLabel; BitBtn1: TBitBtn; XPManifest1: TXPManifest; ComboBox1: TComboBox; ComboBox2: TComboBox; Label3: TLabel; Memo0: TMemo; Button1: TButton; Label5: TLabel; Edit3: TEdit; Memo1: TMemo; procedure Button1Click(Sender: TObject); procedure BitBtn1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form2: TForm2; implementation uses Unit1; //используем первый модуль {$R *.dfm} procedure TForm2.Button1Click(Sender: TObject); var st:string; begin st:='' ;//очищаем строку st st:=st+ComboBox1.Text+' - '+ComboBox2.Text; //добавляем в строку фамилию и должность Memo1.Lines.add(st); // строку добавляем в многострочное поле end; procedure TForm2.BitBtn1Click(Sender: TObject); var s:string; begin s:='' ;//очищаем строку st s:=s+label1.Caption+' '+edit1.text+' '+label2.Caption+' '+edit2.text; //добавляем в строку Memo0.Lines.add(s); // строку добавляем в скрытое многострочное поле s:=''; Memo0.Lines.add(s); s:=''; s:=s+label3.Caption; Memo0.Lines.add(s); s:=''; Memo0.Lines.add(s); s:=''; s:=s+label4.Caption; Memo0.Lines.add(s); Memo0.Lines.add(Memo1.text); //добавляем в поле данные не скрытого поля (фамилии) s:=''; Memo0.Lines.add(s); s:=''; s:=s+label5.Caption+' '+edit3.text; Memo0.Lines.add(s); s:=''; Memo0.Lines.add(s); //пустая строка для отступа перед текстом close end; end. Результаты работы программы имеют примерно такой вид.
По завершении работы с программой, пользователь получает готовый документ вида (без пропуска строк): Протокол № 1 от 20.11.2006 Заседание присутствовали: заведующая – Иванова И.И. старшая медсестра – Сидорова С.С. Повестка: итоги за ноябрь Сидорова С.С.- старшая медсестра, - отработала 160 часов + 1 ставка, 20 дней вакансии медсестры общей практики Подобный подход к автоматизации отчетности может быть применен к различным документам, важно выявить четкую структуру и определить границы автоматизации. Задание: Разработать создание приложения в Delphi: формирование текста отчета с использованием стандартных компонентов и технологии OLE. Вопросы для самоконтроля: 1. Почему в документе важно выделить структуру на первом шаге разработки? 2. Как предусмотреть ситуацию, когда необходимо учитывать склонения и знаки препинания в документе? 3. Опишите алгоритм импорта данных в Word. Литература: 1, 7, 9, 10, 11, 20, 21. Лабораторная работа № 10. Тема: Профессиональное применение информационных технологий. Цель: овладение навыками применения информационных технологий с использованием средств, представляемых приложениями Windows
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|