Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
Работа с готовыми базами данных ⇐ ПредыдущаяСтр 6 из 6
1. Проектирование интерфейса программы Запустите Дельфи и создайте новое приложение. Поместите на форму следующие компоненты: MainMenu (из Standard), Table (из BDE), DataSourse (из DataAccess), OpenDialog (из Dialogs). Все эти компоненты не будут видны в режиме исполнения и на форме могут располагаться где угодно. Настройте взаимодействие между вторым и третьим компонентами. Для этого выделите Table1. В окне инспектора объектов найдите свойство DataBaseName и из выпадающего списка выберете псевдоним таблицы (Standard2). В свойстве TableName выберете имя таблицы данных. Свойство Active измените на True (истина). Если все указанные операции были выполнены, то это означает, что связь компонента Table1 с выбранной таблицей данных установлена успешно (рис. 9, а). Выделите DataSourse1 и выберете в свойстве DataSet в выпадающем списке Table1 (рис. 9, б). Создайте главное меню с одним главным заголовком «Файл» с подзаголовком в нём «Открыть базу». Положите на форму компонент PageControl (из Win32) для создания многостраничных приложений и растяните его на всю форму, оставив между верхом компонента и строкой меню полосу в 3 ряда точек. Щелкните правой кнопкой мыши на компоненте PageControl1 и выберите левой кнопкой мыши подменю New Page. Всё поле PageControl1 заполнит компонент TabSheet1 (первая страница), с одноименной надписью на закладке сверху. Создайте вторую страницу аналогичным образом. Заголовки (Caption) этих элементов замените на другие, например, «Выборка» и «Вся база». Перейдите на страницу с названием «Вся база» и положите сверху на компонент TabSheet2 компонент DBGrids (из Data Controls), изменив размеры на всю возможную площадь. В свойстве DataSourse выберите DataSourse1. На второй странице появится вся база данных, таблица которой была указана в свойстве TableName компонента Table1. Для запрета редактирования базы, нажав на + слева от свойства Options, свойству dgEditing установите False (рис. 9, в). Рис. 9. Вид инспектора объектов после настройки Для выбора АВН, удовлетворяющих заданным условиям, перейдите на первую страницу с названием «Выборка». Поместите на форму компонент Panel (из Standard) и сотрите заголовок панели (свойство Caption сделайте пустым). Будем делать выбор АВН (силовых выключателей) по номинальному напряжению, номинальному току и току короткого замыкания. Поместите на форму три элемента ComboBox (см. рис. 10) и в их свойстве Visible (видимый – это свойство определяет, что этот элемент будет видимым во время исполнения программы или не будет видимым) установите значение False (компонент не будет видим). Поместите на форму компонент GroupBox (из Standard) и измените его заголовок на «Выбор по условию». Поместите на него три компонента CheckBox, заголовки которых замените на «Номинальное напряжение, кВ», «Номинальный ток, А» и «Ном. Ток отключения, кА». Красиво и быстро расположить кнопки можно следующим образом. При нажатой кнопке Shift последовательно нажмите левой кнопкой мыши на каждый из трех компонентов типа CheckBox. Они все окажутся выделенными одновременно. Выберите команду Edit/Align… (выравнивание) и в появившемся окне выравнивания (Alignment) в элементе RadioGroup с заголовком Horizontal (горизонтальное) выберете тип выравнивания, например, Left Sides (по левой стороне). Указатель выбора (точка) переместится в нужную позицию, показывая, тип горизонтального выравнивания. Вертикальное выравнивание выберите, например, Space equally (равное расстояние между компонентами) и подтвердите выбор нажатием OK. Выделенные компоненты расположатся симметрично и будут идеально выровнены по левой стороне. При ручном выравнивании на эту операцию уйдет существенно больше времени с худшим качеством выравнивания. Соответствующие компоненты ComboBox расположите рядом с кнопками CheckBox. Положите на панель кнопку Рис. 10. Фрагмент страницы «Выборка» (Button) и замените её заголовок, например, на «Начать». Положите на эту страницу формы компонент строковой таблицы StringGrid (из Additional). Установите количество колонок 5 в свойстве ColCount (число колонок) и число строк в свойстве RowCount ( число рядов). Установите линейки прокрутки в свойстве ScrollBars. Измените размеры таблицы. Положите на форму компонент ListBox. 2. Ввод кода программы Дважды щелкните левой кнопкой мыши на форме. В заготовке процедуры кода впишите следующий код procedure TForm1.FormCreate(Sender: TObject); Begin StringGrid1.Cells[0, 0]: ='Фирма производитель'; StringGrid1.Cells[1, 0]: ='Марка'; StringGrid1.Cells[2, 0]: ='Uном, кВ'; StringGrid1.Cells[3, 0]: ='Iном, А'; StringGrid1.Cells[4, 0]: ='Iном.отключения, А'; end; Этот фрагмент будет выводить заголовки полей строковой таблицы, в которую будут выводиться часть значений параметров АВН, удовлетворяющих заданным условиям. Код загрузки новой таблицы базы данных можно написать следующим образом. В меню подайте команду Файл/Открыть базуи в заготовке процедуры кода впишите следующее: procedure TForm1.N2Click(Sender: TObject); Begin Table1.Active: =false; if OpenDialog1.Execute then Table1.TableName: =OpenDialog1.FileName; Table1.Active: =true; end; Изменение состояния видимости элемента выбора ComboBox в зависимости от условий выбора можно оформить следующим образом. Дважды щелкните левой кнопкой мыши на CheckBox1 (Номинальное напряжение) и окне кода программы заполните процедуру, как показано ниже: procedure TForm1.CheckBox1Click(Sender: TObject); Begin if CheckBox1.Checked Then begin ComboBox1.Visible: =true; ComboBox1.ItemIndex: =0 end else ComboBox1.Visible: =false; end; В этом фрагменте одновременно с установкой видимости элемента выбора делается установка на выбор первого элемента из списка шкалы номинальных напряжений, которую следует ввести в список ComboBox1. Аналогично следует ввести коды процедуры видимости второго и третьего условий выбора TForm1.CheckBox2Click и TForm1.CheckBox3Click. Их можно просто скопировать из первой процедуры и вставить во вторую и третью, изменив только номера 1 на 2 и 3, соответственно, во всех местах процедур, кроме заголовков, которые автоматически возникают при двойном щелчке на CheckBox2 и CheckBox3. В элемент ComboBox2 введите список номинальных токов выключателей, а в ComboBox3 – список номинальных токов отключения. В режиме выполнения программы в каждом из элементов выбора можно выбрать соответствующие параметры АВН. Фрагмент выбора по всем трем условиям объединён на рис. 11. Выбор может быть сделан только в режиме выполнения, когда этот элемент выбран для анализа содержимого базы данных по этому условию. Если галочка в соответствующем условии выбора не стоит, то и элемент не видим, и выбор по нему никак не сделаешь.
Рис. 11. Выпадающие списки Фрагмент программы для выбора АВН по условиям приведён ниже: procedure TForm1.Button1Click(Sender: TObject); function CheckConditions: boolean; {Функция проверки условий выбора} var l1, l2, l3: boolean; Begin if CheckBox1.Checked = false {Если нет проверки Uном} then l1: =true {1 условие истинно – исключаться АВН по нему не будет} elseif ComboBox1.ItemIndex=0 {Действия, если проверка по Uном включ.} then l1: = Table1.FieldValues['Unom']< = 10.5 else if ComboBox1.ItemIndex = ComboBox1.ComponentCount-1 then l1: = Table1.FieldValues['Unom'] > 1100 else l1: = (Table1.FieldValues['Unom'] > StrToFloat(ComboBox1.Items[ComboBox1.ItemIndex-1])) and (Table1.FieldValues['Unom'] < StrToFloat(ComboBox1.Items[ComboBox1.ItemIndex+1])); if CheckBox2.Checked = false {Если нет проверки Iном} then l2: =true {2 условие истинно – исключаться АВН по нему не будет} //если проверка по Iном включена и если условие - номинальный ток //из таблицы базы данных меньше заданного в компоненте ComboBox2, //то второму условию (l2) присваивается значение ложь else l2: =Table1.FieldValues['Inom'] > = StrToFloat(ComboBox2.Items[ComboBox2.ItemIndex]); if CheckBox3.Checked = false then l3: =true else l3: =Table1.FieldValues['Inomotkl'] > = StrToFloat(ComboBox3.Items[ComboBox3.ItemIndex]); result: =l1 and l2 and l3; end; {function CheckCondition} var l: boolean; i, j: integer; Begin for i: =0 to 4 do for j: =1 to 130 do StringGrid1.Cells[i, j]: =''; ListBox1.Clear; Table1.First; {Переход на первую запись базы данных} j: =1; for i: =1 to Table1.RecordCount do {Цикл до конца базы} begin l: =CheckConditions; if l then begin StringGrid1.Cells[0, j]: =Table1.FieldValues['Firma']; ListBox1.Items.Add(Table1.FieldValues['Marka']); StringGrid1.Cells[1, j]: =Table1.FieldValues['Marka']; StringGrid1.Cells[2, j]: =FloatToStrF(Table1.FieldValues['Unom'], ffFixed, 4, 1); StringGrid1.Cells[3, j]: =FloatToStrF(Table1.FieldValues['Inom'], ffFixed, 5, 1); StringGrid1.Cells[4, j]: =FloatToStrF(Table1.FieldValues['Inomotkl'], ffFixed, 4, 1); j: =j+1; end; {if} Table1.Next; {Переход на следующую запись базы данных} end; {Конец цикла просмотра базы} end; {procedure TForm1.Button1Click} После ввода кода сохраните программу в своём отдельном каталоге для этой программы, подав команду File/Save all. Убедитесь, что в этом каталоге находятся не менее 6 файлов. Запустите программу на исполнение и выполните отладку программы. Выполните различные варианты выбора АВН по заданным условиям и убедитесь, что программа работает без сбоев. При выполнении расчета баланса РУ при проектировании формы в свойстве DataBaseName компонента Table1 следует выбрать Файлы Excel, а в свойстве TableName таблицу с получасовыми данными по различным присоединениям РУ. При выборе таблицы появится окно пароля доступа к базе (Database Login). Если пароль не был изменен, то попробуйте ввести в поле имени пользователя (User Name) имя создателей SYSDBA, а в поле пароля (Password) пароль разработчиков – masterkey. Если по указанному паролю вход не получается, то обратитесь к преподавателю. Разберитесь в структуре таблицы Excel и напишите код программы подсчета баланса РУ с выводом получасовых (3 минутных, часовых, суточных, месячных) значений на график. Проанализируйте полученные графики баланса электроэнергии РУ и сделайте вывод о потерях энергии и точности измерений. Дайте предложения по совершенствованию ситуации с учетом энергии по данному РУ. Порядок выполнения работы 1. Прочитать описание и проделать самостоятельно различные пункты описания работы, добившись достаточной скорости проектирования. 2. Получить задание у преподавателя на расчет баланса электроэнергии по какому-либо РУ подстанции и выбор оборудования по заданным параметрам. 3. Написать и отладить программы. Провести анализ баланса электроэнергии. Получить список оборудования, удовлетворяющего заданным параметрам. Отчет по лабораторной работе состоит в двух работающих программах, соответствующих заданию преподавателя, сохраненных в каталоге lab6\1\ и lab6\2\. Всего в каждом каталоге должно находиться минимум семь файлов. Контрольные вопросы 1. Для чего нужна программа BDEAdministrator? 2. Как создать свой псевдоним баз данных в BDEAdministrator? 3. Как записать путь к каталогу баз данных и сохранить свой псевдоним в списке возможных псевдонимов? 4. Для чего нужна программа Database Desktop? 5. Как создать шаблон таблицы базы данных? 6. Как скопировать структуру таблицы с другой таблицы базы данных? 7. Как ввести тип поля для данных integer, real, char, string и т.п.? 8. Как редактировать готовую таблицу в BDEAdministrator? 9. Какие компоненты нужно поместить на форму, чтобы получить доступ к базам данных? 10 Как установить связь с какой-либо таблицей баз данных? 11. По какому признаку можно узнать, что связь с таблицей базы данных уставлена успешно? 12. Как получить доступ к таблице данных из элемента DBGrids? 13. Как создать многостраничное приложение? 14. Для чего нужен компонент Panel? 15. Как объединить несколько компонентов CheckBox в одну группу? 16. Как написать процедуру, реагирующую на щелчок мыши на каком-либо компоненте, например, на CheckBox? 17. Как взять какое-либо значение из поля базы данных в программу? 18. Как записать данные в ячейку строковой таблицы StringGrid? 19. Каково назначение функции RecordCount? 20. Как перейти на первую запись базы, на следующую и просмотреть последовательно всю базу данных? Оглавление
Александр Евгеньевич Усачев Лабораторные работы 1 - 6 по курсу «Применение ЭВМ в высоковольтной электроэнергетике» (Кафедра электрических станций КГЭУ)
Редактор издательского отдела Н.Г.Приклонская Изд.лиц. №155 от 30.10.95 Темплан издания КГЭУ 2001г. Подписано к печати Формат 60х84/16 Гарнитура «Times» Вид печати РОМ Бумага “Business’ Физ.печ.л. Усл.печ.л. Уч.-изд.л. Тираж 300 Заказ Издательский отдел КГЭУ 430066, Казань, Красносельская, 51 Типография КГЭУ 430066, Казань, Красносельская, 51.
Популярное:
|
Последнее изменение этой страницы: 2016-05-28; Просмотров: 705; Нарушение авторского права страницы