|
||||||||||||
|
||||||||||||
|
|||||||||
МЕНЮ
|
БОЛЬШАЯ ЛЕНИНГРАДСКАЯ БИБЛИОТЕКА - РЕФЕРАТЫ - Создание информационного банка данных "Больница"Создание информационного банка данных "Больница"17 Министерство образования и науки Республики Казахстан Карагандинский государственный технический университет ПОЯСНИТЕЛЬНАЯ ЗАПИСКА к курсовому проекту по дисциплине: «Разработка программного обеспечения» тема: Создание информационного банка данных «Больница» Караганда, 2009 Содержание Введение 1. ТЕХНИЧЕСКОЕ ЗАДАНИЕ 1.2 Основание для создания 1.3 Цель и назначение подсистемы 1.4 Требования к подсистеме 1.5 Требования к информационному обеспечению 1.6 Требования к лингвистическому обеспечению 1.7 Требования к программному обеспечению 1.8 Требования к техническому обеспечению 1.9 Требования к методическому обеспечению 2. ИНФОРМАЦИОННОЕ ОБЕСПЕЧЕНИЕ 2.1 Структура информационных потоков 2.2 Логическая модель базы данных 2.3 Физическая модель базы данных 3. ЛИНГВИСТИЧЕСКОЕ ОБЕСПЕЧЕНИЕ 3.1 Языки программирования 3.2 Входные - выходные данные 4.3 Выходные языки 4. ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ 4.1 Общесистемное программное обеспечение 4.2 Базовое программное обеспечение 4.3 Прикладное программное обеспечение 5. МЕТОДИЧЕСКОЕ ОБЕСПЕЧЕНИЕ 5.1 Руководство пользователю Заключение Список использованной литературы Приложение А Приложение В Приложение С Приложение D Введение В наше время информация играет ключевую роль в любой области жизнедеятельности человека. Однако, огромное количество информации часто приводит к большим трудностям в работе с ней. Разработанный нами проект демонстрирует то, как работу с данными можно сделать удобной и интересной, используя базу данных. Программа является очень актуальной на сегодняшний день, она автоматизирует работу с базой данных больниц и предоставляет пользователю (оператору) понятный и дружественный интерфейс. 1. Техническое задание 1.1 Наименование ПК (программного комплекса) и область применения 1.1.1 Разработке подлежит программное обеспечение «Больница» 1.1.2 Данный ПК предназначен для использования больницах 1.1.3 Наименование ПК: программа, позволяющая управлять базой данных пациентов по отделению и номеру палат 1.2 Основание для создания 1.2.1 Обоснования для проведения разработки: основанием для разработки является задание, выданное кафедрой САПР. 1.2.2 Разработчики ПО: Нарымбекова А., Терехова Е. 1.2.3 Заказчик ПО: кафедра САПР. 1.2.4 Сроки разработки: начало - 01.10.2006 г., окончание - 23.12.2006 г. 1.3 Цель и назначение подсистемы 1.3.1 При помощи разрабатываемой оболочки станет возможным создавать и использовать базу данных в любой больнице. Структура базы знаний составляется в виде реляционных таблиц. База данных будет способна работать практически в любых областях больничной деятельности, решая задачи со скоростью значительно превосходящей человеческие возможности. 1.3.2 В настоящее время инфраструктура больницы стала очень объёмной, что не позволяет справляться со всеми проблемами, которые появляются в результате работы. Для упрощения было бы полезно разработать программный комплекс, который значительно облегчит процесс поиска, записи, выписки пациента. 1.4 Требования к подсистеме Требования, предъявляемые к базе данных: программа должна устойчиво выполнять свои функции, программа должна быть понятной для пользователя, наличие дружественного интерфейса. 1.5 Требования к информационному обеспечению 1.5.1 В разделе информационного обеспечения необходимо тщательно разработать структуру информационных потоков, концептуальную и логическую модели данных. Представление данных в базе знаний должно обладать основными свойствами информации: полнота, непротиворечивость, достоверность, адекватность, защищенность, эргономичность и т.д. 1.5.2 Программа должна выполнять все базовые функции по работе с информацией в базе знаний: поиск информации, передача данных, хранение данных, удаление данных, просмотр данных. 1.5.3 Перед работой программы должна быть осуществлена индексация БД с целью отслеживания уникальности данных, для осуществления фильтрации и сортировки данных по нужным полям, а также для ускорения поисковых функций. 1.6 Требования к лингвистическому обеспечению 1.6.1 Лингвистическое обеспечение должно содержать описание языка программирования и среды проектирования, в которой будет создаваться оболочка базы данных, а также описание входных и выходных данных. 1.6.2 Язык программирования должен быть языком высокого уровня. 1.6.3 Входной язык должен: - обеспечивать удобочитаемость и компактность описаний; - должен быть простым в использовании. 1.6.4 Выходной язык должен: - в наглядной форме предоставлять данные решения задач; - обеспечивать соответствие результатов проектирования требованиям задачи. 1.7 Требования к программному обеспечению 1.7.1 Программное обеспечение должно содержать описание общесистемного, базового и прикладного ПО. 1.7.2 В качестве операционных систем должны использоваться Windows, поскольку такие установлены на компьютерах кафедры САПР. 1.7.3 В качестве базового программного обеспечения необходимо выбрать и описать любой высокоразвитый распространенный язык программирования, позволяющий разрабатывать прикладные программные продукты, и работающий под Windows. 1.8 Требования к техническому обеспечению 1.8.1 Техническое обеспечение должно быть выбрано на основе комплекса технических средств кафедры САПР. 1.8.2 Комплекс технических средств должен быть построен на базе ПЭВМ IBM PC или совместимых с ней. 1.8.3 В качестве запоминающего устройства, в котором реализуются преобразования данных и программное управление процессами, должна использоваться оперативная память. Ее объем должен позволять использовать базовую операционную систему, допускающую реализацию прикладных программ. 1.9 Требования к методическому обеспечению Методическое обеспечение автоматизированного проектирования должно отражать описание системы и подсистем, методику (технологию) автоматизированного проектирования отдельных исполняемых процедур и объекта в целом. 2. Информационное обеспечение 2.1 Структура информационных потоков и документооборота Программа будет использоваться для поиска, регистрации, выписки пациентов, изменение уже внесенной информации 17 Рисунок 1.1. Структура информационных потоков медсестры Рисунок 1.2. Структура информационных потоков врача 2.2 Логическая модель базы данных 17 2.3 Физическая модель базы данных Физическая модель базы данных представлена на рисунке в таблице 2.3. Здесь указывается тип каждого поля, его размер. А так же первичные индексы (уникальность, сортировка) и вторичные индексы (связь 1 ко ?). Таблица 1. Структура таблицы Pacients.db
Таблица 2. Структура таблицы Otdel.db
Объектно-ориентированное программирование представляет собой метод программирования, который весьма близко напоминает наше поведение. Оно является естественной эволюцией более ранних нововведений в разработке языков программирования. Объектно-ориентированное программирование является более структурным, чем все предыдущие разработки, касающиеся структурного программирования. Оно также является более модульным и более абстрактным, чем предыдущие попытки абстрагирования данных и переноса деталей программирования на внутренний уровень. Объектно-ориентированный язык программирования характеризуется тремя основными свойствами: 1) Инкапсуляция. Комбинирование записей с процедурами и функциями, манипулирующими полями этих записей, формирует новый тип данных - объект. 2) Наследование. Определение объекта и его дальнейшее использование для построения иерархии порожденных объектов с возможностью для каждого порожденного объекта, относящегося к иерархии, доступа к коду и данным всех порождающих объектов. 3) Полиморфизм. Присваивание действию одного имени, которое затем совместно используется вниз и вверх по иерархии объектов, причем каждый объект иерархии выполняет это действие способом, именно ему подходящим. Теперь уже программист оперирует не просто процедурами и функциями, а целыми объектами. Объект - совокупность свойств и методов и событий. Что означает «совокупность»? Это значит, что объект состоит из свойств методов и событий. Свойства - это простые переменные, которые влияют на состояние объекта. Например, ширина, высота - это свойства объекта. Методы - это те же процедуры и функции, т.е. это то, что объект умеет делать (вычислять). Например, объект может иметь процедуру для вывода какого-то текста на экран. Эта процедура и есть метод объекта. События - это те же процедуры и функции, которые вызываются при наступлении определённой ситуации. Например, если изменилось какое-то свойство объекта, может быть сгенерировано соответствующее событие и вызвана процедура для обработки реакции на это событие. Оператор является основной структурной единицей языка. Оператор задает полное описание некоторого действия, которое необходимо выполнить. Для описания сложного действия может потребоваться группа операторов. В этом случае операторы объединяются в составной оператор или блок. Из операций, развилок и слияний строятся базовые конструкции: следование, ветвление, цикл. Применяя только эти три конструкции, можно реализовать алгоритм решения любой задачи. Конструкция, представляющая собой последовательное выполнение двух или более операций, называется следованием. Конструкция, состоящая из развилки, двух операций и слияния, называется ветвлением. Одна из операций может отсутствовать. Конструкция, имеющая линии управления, ведущие к предыдущим операциям или развилкам, называется циклом. Конструкции следование, ветвление и цикл можно представить как операции, так как они имеют единственный вход и единственный выход. Произвольную последовательность операций можно представить как одну операцию. Код между последними операторами begin и end программы управляет логикой программы. В очень простой программе в этой секции кода может содержаться все, что вам нужно. В более крупных и сложных программах размещение в этой секции всего программного кода может затруднить чтение и понимание программы. К тому же ее будет труднее разрабатывать. Процедуры и функции позволяют разделить логику программы на более мелкие и управляемые фрагменты, и аналогичны подпрограммам в других языках. Как и в основном блоке программы, все действия в процедурах и функциях заключаются в begin и end. Каждый из этих сегментов кода выполняет конкретную задачу. Если вы обнаружите, что в вашей диаграмме одни и те же действия выполняются многократно, такую логику желательно выделить в процедуру или функцию. Вы можете один раз записать этот код в процедуре или функции, а затем многократно вызывать его в программе. Программа на языке ObjectPascal может использовать блоки кода в программных модулях. Модуль можно рассматривать как мини-программу, которую может использовать ваша прикладная программа. Как и программа, он имеет заголовок (который называется заголовком модуля) и основной блок, ограниченный begin и end. Модули являются основой модульного программирования. Они используются для создания библиотек, которые могут включаться в различные программы (при этом становится необязательным иметь в наличии исходный код), а большие программы могут подразделяться на логически связанные модули. 3.2 Входные - выходные данные Общение с базой данных осуществляется табличным диалогом в экранных формах. Входными данными являются: во-первых документы предоставляемые пациентами при регистрации в больнице, во-вторых, запросы врача или медсестры на поиск нужного пациента. Данные сведения вводятся при помощи аппаратных средств ввода - клавиатуры и мыши (рисунок 4.1). Выходными данными являются: во-первых, обновленные базы данных и информация на мониторе, отображающая результаты изменений; во-вторых, информация на мониторе по результатам запроса на поиск. Посредством монитора система информирует о своей работе и направляет дальнейшие действия пользователя. 17 Рисунок 4.1 - Работа экспертной системы в режиме консультации Разработка сценария диалога Процесс общения пользователя с программой должен быть простым и понятным, чтобы практически любого ранга пользователь мог моментально освоится без каких-либо дополнительных пояснений (рисунки 3.2, 3.3).
Рисунок 3.2 - Схема главного окна (медсестра).
Рисунок 3.3- Схема окна поиска
4. Программное обеспечение 4.1 Общесистемное программное обеспечение На сегодняшний момент операционная система Windows фирмы Microsoft во всех ее проявлениях, бесспорно, считается самой распространенной операционной системой на ПК: в мире более 150 млн. IBM PC-совместимых компьютеров, и система Windows установлена на 100 млн. из них. ОС Windows характеризуется тем, что предоставляет приложениям возможность создания пользовательского интерфейса на высоком уровне эргономичности и удобства. В то же время, для работы этой системы требуется от 16 до 128 Мб оперативной памяти в зависимости от версии ОС, что по современным техническим возможностям совсем не много. В качестве операционной системы выбрана ОС семейства Windows, а именно, Windows XP Professional. Этот выбор был сделан по ряду следующих причин. Во-первых, она является одной из наиболее распространенных на сегодняшний день. Во-вторых, в ОС Windows надежность компьютера повышается за счет применения новых мастеров, служебных программ и ресурсов, обеспечивающих бесперебойную работу системы. В-третьих, в состав Windows входит ряд программ, совместное применение которых повышает производительность компьютера. В-четвертых, на кафедре САПР установлена именно эта операционная система. 4.2 Базовое программное обеспечение В качестве базового ПО принята среда Delphi 7.0 языка программирования ObjectPascal. Пакет Delphi 7.0 установлен на кафедре САПР и стабильно работает под системой Windows XP Professional. Среди наиболее распространенных объектно-ориентированных сред программирования, Delphi 7.0 является на данный момент единственной средой быстрой разработки приложений (RAD), полностью поддерживающей все ведущие индустриальные стандарты: XML, SOAP, WSDL и XSL, а также появляющиеся платформы - Microsoft.NET и BizTalk, Sun Microsystems ONE, обеспечивая необходимую гибкость, надежность и масштабируемость. Основной упор в Delphi делается на максимальном реиспользовании кода. Это позволяет разработчикам строить приложения весьма быстро из заранее подготовленных объектов, а также дает им возможность создавать свои собственные объекты для среды Delphi. Никаких ограничений по типам объектов, которые могут создавать разработчики, не существует. Действительно, все в Delphi написано на нем же, поэтому разработчики имеют доступ к тем же объектам и инструментам, которые использовались для создания среды разработки. В результате нет никакой разницы между объектами, поставляемыми Borland или третьими фирмами, и объектами, которые вы можете создать. Библиотека визуальных компонент (объектов) включает в себя стандартные объекты построения пользовательского интерфейса, объекты управления данными, графические объекты, объекты мультимедиа, диалоги и объекты управления файлами, управление DDE и OLE. Delphi использует структурный объектно-ориентированный язык (Object Pascal), который сочетает с одной стороны выразительную мощь и простоту программирования, а с другой стороны эффективность языка. Программисты немедленно могут начать производить работающие приложения, и им не придется для этого изучать особенности программирования событий в Windows. Delphi полностью поддерживает передовые программные концепции, включая инкапсуляцию, наследование, полиморфизм и управление событиями. Основные причины выбора языка ObjectPascal: - Простота языка позволяет быстро его освоить и создавать сложные программы; - Развитые средства представления структур данных обеспечивают удобство работы, как с числовой, так и с символьной и битовой информацией; - Объектно-ориентированное программирование (ООП) в визуальной среде. Одним из наибольших преимуществ ООП является возможность многократного использования программного кода за счет применения классов наследования, инкапсуляции и полиморфизма. Также, на выбор Delphi 6.0 в качестве базового программного обеспечения, повлияли такие обстоятельства как, достаточное количество необходимой литературы по программированию в этой среде, распространенность этой среды и имеющийся достаточный опыт работы в ней. Для оформления документации дипломного проекта и пояснительной записки был использован текстовый редактор Microsoft Word, который является наиболее популярным и предназначен для подготовки простых и сложных текстовых документов, верстки газетных страниц, макетирования художественных книг с иллюстрациями и научных книг с формулами и таблицами, создания векторной графики, схем и диаграмм. 4.3 Прикладное программное обеспечениеДля работы данной программой необходимо создать проект, который будет обеспечивать интерфейс пользователя (рисунок 3.1).Рисунок 3.1 - Структура прикладного ПО Таблица 3. Основные файлы программы
Модуль «Unit2» проекта «Больница» служит приветствием проекта. Модуль «UnitMedSestra» обеспечивает основную работу программы, «UnitFiter» обеспечивает поиск информации, «UnitGlavVrach» обеспечивает работу программы для врача и «UnitPassword» обеспечивает защиту информации.
Таблица 1. Основные процедуры и функции 5. Методическое обеспечение 5.1 Руководство пользователю После запуска приложения на экране появляется заставка программы (см. Рисунок 2). Рисунок 2. Заставка приложения После заставки появляется главная форма (см. Рисунок 4). На ней можно просмотреть всю необходимую информацию, имеющуюся в текущий момент об отделение, палате и пациентах, лечащихся в данной больнице. Для этого необходимо выбрать интересующее вас отделение, палату пациента. После выбора интересующего отделения и палаты в правой части будут отображаться сведения о пациентах, лежащих там. Пациентов можно редактировать (выписка, поступление). При удалении пациентов из палаты они будут удалены из базы данных. Закрыть или свернуть главную форму можно при помощи кнопок, размещенных в правом верхнем углу формы или сочетанием клавиш Alt+F4. Рисунок 4. Главное окно программы Для того, чтобы найти необходимого пациента можно воспользоваться поиском. Поиск осуществляется по фамилии пациента или по сроку его пребывания в больнице. Для этого необходимо выбрать в главном меню «Поиск пациента» на главной форме. После этого появится форма поиска (см. Рисунок 5). Рисунок 5. Поиск студента В этой форме необходимо нажать кнопку «фамилия», если поиск производится по фамилии, затем задать фамилию пациента и нажать ОК, или если поиск производится по дате, нажать «дата» и ввести количество дней. Пример поиска показан на Рисунке 6 (а) и (б). Рисунок 6(а) Поиск по фамилии Рисунок 6 (б). Поиск по дате После осуществления поиска при щелчке по одному из найденных пациентов, в главной форме произойдет локализация на данном пациенте (см. Рисунок 7). Рисунок 7. Пример поиска Для того что бы перейти к форме для главврача необходимо в главном меню, на форме для медсестры, выбрать «форма для главврача». Но после этого, для безопасности, появиться форма с паролем (см. Рисунок 8) Рисунок 8. Форма с паролем После ввода верного пароля появится форма для главврача, в которой можно будет осуществить добавление в базу, или удаление из нее отделения или палаты изменять количество койкомест (см. Рисунок 9) Рисунок 9. форма для главврача Заключение База данных «Больница», разработанная в ходе выполнения проекта, является актуальной на сегодняшний день, так как все больницы нуждаются в автоматизации управления. Нами были приобретены навыки программирования на языке Object Pascal в среде Delphi 7.0. Также мы научились разрабатывать собственные алгоритмы для решения поставленных задач, овладели методами и средствами отладки и тестирования программ. Разработанная нами программа устойчиво выполняет все свои функции, но для использования ее в больницах, она требует некоторых доработок: программным путем обеспечить безопасность данных, расширить возможности поиска (поиск по двум и более полям), и т.д. Список используемой литературы 1. А.Я. Архангельский Программирование в Delphi 7 2. А. Микляев «Учебник пользователя IBM PC», Москва - 2000 Приложение А Листинг модуля «Unit2.pas» procedure TForm2.FormPaint(Sender: TObject); var y:integer; red:byte; const text='База данных больницы'; begin with Canvas do begin for y := 0 to Form2.Height-1 do begin red:=round($FF*(Form2.Height-y)/Form2.Height); pen.Color:=rgb(red,0,0); moveTo(0,y); LineTo(Form2.Width-1,y) end; // for Font.Size:=32; Font.Style:=[fsBold,fsItalic,fsUnderLine]; Font.Name:='Times New Roman Cyr'; Brush.Style:=bsClear; Font.Color:=clBlack; TextOut(40,30,Text); Font.Color:=clWhite; TextOut(36,26,Text); end;// with end; procedure TForm2.Button1Click(Sender: TObject); begin close end; Приложение B Листинг модуля «UnitMedSestra.pas» procedure TFormMedSestra.N1Click(Sender: TObject); begin FormDeactivate(Self); if (FormPassword.ShowModal=mrOk) and (FormPassword.Edit1.Text='1') then FormGlavVrach.Showmodal; FormActivate(Self); end; procedure TFormMedSestra.FormShow(Sender: TObject); begin tbOtdel.Open; tbPalata.Open; tbPacient.Open; form2.ShowModal; DBLookupComboBox1.KeyValue:=tbOtdel.fieldByName('Notdel').AsInteger end; procedure TFormMedSestra.FormClose(Sender: TObject; var Action: TCloseAction); begin tbOtdel.Close; tbPalata.Close; tbPacient.Close; end; procedure TFormMedSestra.tbPacientAfterDelete(DataSet: TDataSet); begin // после удаления пациента палата на одного освобождается tbPalata.Edit; tbPalata.FieldByName('Kol_pacient').AsInteger:= tbPalata.FieldByName('Kol_pacient').AsInteger-1; tbPalata.Post; if FormFilter.Visible then // если поисковая форма видима - информация на ней должна быть актуальна begin FormFilter.tbPalata2.Refresh; FormFilter.tbPacient2.Refresh; end; end; procedure TFormMedSestra.tbPacientBeforePost(DataSet: TDataSet); begin // невозможно сохранить запись с пустыми полями: "фамилия и диагноз" PacSt:= tbPacient.State; if tbPacient.FieldByName('Famil').AsString='' then if tbPacient.FieldByName('Diagnoz').AsString='' then begin tbPacient.Cancel; Abort end else begin ShowMessage('Введите фамилию'); Abort end end; procedure TFormMedSestra.tbPacientAfterPost(DataSet: TDataSet); begin // после добавления(но не после редактирования) пациента палата на одного занимается if PacSt=dsInsert then begin tbPalata.Edit; tbPalata.FieldByName('Kol_pacient').AsInteger:= tbPalata.FieldByName('Kol_pacient').AsInteger+1; tbPalata.Post; end; if FormFilter.Visible then // если поисковая форма видима - информация на ней должна быть актуальна begin FormFilter.tbPalata2.Refresh; FormFilter.tbPacient2.Refresh; end; end; procedure TFormMedSestra.tbPacientBeforeInsert(DataSet: TDataSet); begin // невозможно добавить пациента, если вся палата занята if tbPalata.FieldByName('Kol_pacient').AsInteger= tbPalata.FieldByName('Kol_mest').AsInteger then abort; end; procedure TFormMedSestra.tbPacientNewRecord(DataSet: TDataSet); begin // маленький сервис с вставкой текущей даты при добавлении пациента(уменьшается вероятность ошибки при вводе даты) tbPacient.FieldByName('DataPostup').AsDateTime:=now; end; procedure TFormMedSestra.mnFindClick(Sender: TObject); begin FormFilter.Show end; procedure TFormMedSestra.tbOtdelAfterScroll(DataSet: TDataSet); begin if tbOtdel.fieldByName('Notdel').AsInteger>0 then // без этой проверки добавление отделения // в DBGrid стрелкой вниз не выполняется DBLookupComboBox1.KeyValue:=tbOtdel.fieldByName('Notdel').AsInteger; StaticText1.Caption:=tbOtdel.fieldByName('Kol_palat').AsString; end; procedure TFormMedSestra.tbPalataAfterScroll(DataSet: TDataSet); begin if tbPalata.fieldByName('Npalat').AsInteger>0 then // без этой проверки добавление палаты // в DBGrid стрелкой вниз не выполняется DBLookupListBox1.KeyValue:=tbPalata.fieldByName('Npalat').AsInteger end; procedure TFormMedSestra.tbPalataBeforeDelete(DataSet: TDataSet); begin if tbPalata.FieldByName('Kol_Pacient').AsInteger>0 then begin windows.beep(400,200); windows.beep(200,200); ShowMessage('удаление палаты не возможно при наличии в ней пациентов'); abort end; end; procedure TFormMedSestra.tbPalataAfterDelete(DataSet: TDataSet); begin tbOtdel.Edit; tbOtdel.FieldByName('Kol_palat').AsInteger:= tbOtdel.FieldByName('Kol_palat').AsInteger-1; tbOtdel.Post end; procedure TFormMedSestra.tbOtdelBeforeDelete(DataSet: TDataSet); begin tbPalata.First; while not tbPalata.Eof do begin if tbPalata.FieldByName('Kol_Pacient').AsInteger >0 then begin windows.beep(400,200); windows.beep(500,200); windows.beep(600,200); ShowMessage('невозможно удалить отделение, так как не все палаты пустые'); abort; end; tbPalata.Next end; // палаты каскадно будут удаляться, если ни в одной из них не пациентов while not tbPalata.Bof do tbPalata.Delete end; procedure TFormMedSestra.tbPalataBeforePost(DataSet: TDataSet); begin if tbPalata.FieldByName('Kol_mest').AsInteger < tbPalata.FieldByName('Kol_pacient').AsInteger then begin windows.beep(500,200); windows.beep(300,200); windows.beep(200,200); ShowMessage('количество койкомест нельзя делать меньше, чем количество пациентов'); abort; end; PalSt:=tbPalata.State end; procedure TFormMedSestra.tbPalataAfterPost(DataSet: TDataSet); begin if PalSt=dsInsert then begin tbOtdel.Edit; tbOtdel.FieldByName('Kol_palat').AsInteger:= tbOtdel.FieldByName('Kol_palat').AsInteger+1; tbOtdel.Post; end; end; procedure TFormMedSestra.DBLookupComboBox1DropDown(Sender: TObject); begin // при выпадении списка, StaticText1 - черное на белом StaticText1.Font.Color:=clBlack; StaticText1.Color:=clWhite end; procedure TFormMedSestra.DBLookupComboBox1CloseUp(Sender: TObject); begin // при захлопывании списка, StaticText1 - белое на синем StaticText1.Font.Color:=clWhite; StaticText1.Color:=clHighLight end; procedure TFormMedSestra.DBLookupComboBox1Exit(Sender: TObject); begin // при потере фокуса, StaticText1 - черное на белом StaticText1.Font.Color:=clBlack; StaticText1.Color:=clWhite end; procedure TFormMedSestra.DBLookupComboBox1Enter(Sender: TObject); begin // при получении фокуса, StaticText1 - белое на синем StaticText1.Font.Color:=clWhite; StaticText1.Color:=clHighLight end; procedure TFormMedSestra.FormDeactivate(Sender: TObject); begin // при деактивации формы и если список в фокусе, StaticText1 - черное на белом if FormMedSestra.ActiveControl= DBLookupComboBox1 then begin StaticText1.Font.Color:=clBlack; StaticText1.Color:=clWhite end; end; procedure TFormMedSestra.FormActivate(Sender: TObject); begin // при активации формы и если список в фокусе, StaticText1 - белое на синем if FormMedSestra.ActiveControl= DBLookupComboBox1 then begin StaticText1.Font.Color:=clWhite; StaticText1.Color:=clHighLight end; end; procedure TFormMedSestra.FormCanResize(Sender: TObject; var NewWidth, NewHeight: Integer; var Resize: Boolean); begin NewWidth:=width end; Приложение C Листинг модуля «UnitPassword» procedure TFormPassword.FormShow(Sender: TObject); begin AlphaBlendValue:=0; Timer1.Enabled:=true; edit1.SetFocus; edit1.Clear end; procedure TFormPassword.Timer1Timer(Sender: TObject); begin if AlphaBlendValue<255 then AlphaBlendValue:=AlphaBlendValue+15 else Timer1.Enabled:=false end; Приложение D Листинг модуля «UnitFilter» procedure TFormFilter.EdFilterKeyPress(Sender: TObject; var Key: Char); begin if not (key in ['0'..'9',#8]) then key:=#0 end; procedure TFormFilter.btnFilterClick(Sender: TObject); var a:TDate; begin try a:=date-StrToInt(EdFilter.Text); except showMessage('укажите количество дней'); exit end; tbPacient2.Filter:= 'DataPostup<='+QuotedStr(DateToStr(a)); end; procedure TFormFilter.FormShow(Sender: TObject); begin tbPacient2.Open; tbPalata2.Open; end; procedure TFormFilter.FormClose(Sender: TObject; var Action: TCloseAction); begin tbPacient2.Close; tbPalata2.Close; end; procedure TFormFilter.btnFamilClick(Sender: TObject); begin tbPacient2.Filter:='Famil='+QuotedStr(EdFamil.Text); end; procedure TFormFilter.tbPacient2AfterScroll(DataSet: TDataSet); begin FormMedSestra.tbOtdel.Locate('Notdel',tbPacient2.FieldByName('lkNotdel2').AsInteger,[]); FormMedSestra.tbPalata.Locate('Npalat',tbPacient2.FieldByName('Npalat').AsInteger,[]); FormMedSestra.tbPacient.Locate('Nfamil',tbPacient2.FieldByName('Nfamil').AsInteger,[]); end; procedure TFormFilter.SpeedButton1Click(Sender: TObject); begin EdFamil.Enabled:=true; btnFamil.Enabled:=true; EdFilter.Enabled:=false; btnFilter.Enabled:=false end; procedure TFormFilter.SpeedButton2Click(Sender: TObject); begin EdFamil.Enabled:=false; btnFamil.Enabled:=false; EdFilter.Enabled:=true; btnFilter.Enabled:=true end; procedure TFormFilter.FormCanResize(Sender: TObject; var NewWidth, NewHeight: Integer; var Resize: Boolean); begin NewWidth:=Width end; |
РЕКЛАМА
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
БОЛЬШАЯ ЛЕНИНГРАДСКАЯ БИБЛИОТЕКА | ||
© 2010 |