Главная

Популярная публикация

Научная публикация

Случайная публикация

Обратная связь

ТОР 5 статей:

Методические подходы к анализу финансового состояния предприятия

Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века

Ценовые и неценовые факторы

Характеристика шлифовальных кругов и ее маркировка

Служебные части речи. Предлог. Союз. Частицы

КАТЕГОРИИ:






Практическое занятие 5. Работа с таблицами в среде «Delphy»




Работа с таблицами в среде «Delphy»

Цель занятия

Знакомство студентов табличным представлением данных, ввод и вывод информации из файлов в таблицы.

Задание 1

Запустите Дельфи. Положите на форму компонент Panel из стандартной палитры компонентов. Удалите заголовок панели и (поле Caption должно быть пустым) и измените цвет панели на clSkyBlue или clMoneyGreen. Измените размер панели: по вертикали размер панели увеличьте до размера формы, а по горизонтали до ¼ формы. Поместите панель в левую часть формы. Положите на панель следующие компоненты.

1. Компонент Label (метка, надпись) из стандартной палитры компонентов поместите в верхнем левом углу панели. В поле его заголовка напишите «Степень загрязнения атмосферы», а размер шрифта сделайте 10.

2. Компонент ComboBox поместите под меткой. В поле Text напишите «уровень загрязнений не выбран». В свойстве Items создайте четыре степени загрязнения атмосферы (4 строки: степень загрязнения 1; степень загрязнения 2; степень загрязнения 3; степень загрязнения 4).

3. Компонент Label (метка, надпись) из стандартной палитры компонентов поместите под компонентом ComboBox. В поле его заголовка напишите «Тип подвесного изолятора», а размер шрифта сделайте 10.

4. Компонент ComboBox поместите под меткой. В поле Text напишите «тип изолятора не выбран». В свойстве Items создайте 6 пустых строк.

5. Компонент ListBox поместите под компонентом ComboBox.

6. Компонент Label (метка, надпись) из стандартной палитры компонентов поместите под компонентом ListBox. В поле его заголовка напишите «Номинальное напряжение, кВ», а размер шрифта сделайте 10.

7. Компонент ComboBox поместите под меткой. В поле Text напишите «Напряжение не выбрано». В свойстве Items создайте список значений номинальных напряжений.

8. Компонент Button (BitButton, SpeedButton). В поле его заголовка напишите «Старт» («расчёт», «начали» и т.п.), цвет шрифта измените на clBlue, а размер шрифта сделайте 14.

Положите на форму справа от панели компонент Label. В поле его заголовка напишите «Таблица характеристик изоляторов», сделайте цвет шрифта clHighLight, а размер шрифта 14.

Положите на форму (ниже метки) компонент StringGrid (таблица строк или сетка строк) из дополнительной палитры компонентов. В поле количества строк (RowCount) и количества столбцов (ColCount) поставьте числа 7.

Положите на форму компонент Memo ниже таблицы и в свойстве ScrollBar (линейки прокрутки) выберите ssBoth (обе).

Сохраните программу в папке практика 5 (если такой папки в Вашей папке информационных технологий нет, то перед сохранением заготовки программы создайте папку с названием практика 5). Убедитесь, что в Вашей папке «практика 5» содержится не менее 6 файлов.

Запустите программу в режим исполнения, исправьте возможные ошибки, убедитесь в возможности правильного выбора в компонентах ComboBox и закройте режим исполнения.

Задание 2

Создайте заготовку процедуры создания формы (procedure TForm1.FormCreate) двойным щелчком на любом месте формы, которое не занято компонентами. В теле процедуры (после открывающей операторной скобки begin) вставьте оператор присвоения первой верхней ячейки имеющей номера по горизонтали и вертикали 0,0 строки «Марка».

StringGrid 1.Cells[0,0]:='Марка';.

Запустите программу в режим исполнения, исправьте возможные ошибки, убедитесь, что действительно в таблице появилась строка Марка, и закройте режим исполнения.

Вставьте оператор присвоения значению второй верхней ячейки таблицы (номера по горизонтали и вертикали 1,0) строку «H, мм».

StringGrid 1.Cells[1,0]:=' H, мм ';.

Запустите программу в режим исполнения, исправьте возможные ошибки, убедитесь, что действительно в таблице появилась строка Марка, и закройте режим исполнения.

Аналогичным способом вставьте значения «D, мм» «d, мм» «Lут, мм», «Р, кН», «Масса, кг».

Вставьте оператор присвоения значению первой ячейки второй строки значение марки первого изолятора из таблицы 5.1:

StringGrid 1.Cells[0,1]:='ПС 70Д'; и проверьте работу программы.

Вставьте 6 операторов присвоения ячейкам второй строки значений характеристик 1го изолятора из таблицы 5.1 и проверьте работу программы.

Аналогичным образом введите в таблицу данные ещё 3 произвольных изоляторов из таблицы 5.1 и проверьте работу программы. Вид изоляторов и обозначение таблицы 5.1 приведены на рис.5.1.

Таблица 5.1. Характеристики подвесных изоляторов

Марка N рис Высота H, мм Диаметр D, мм Диаметр стержня, d, мм Длина пути утечки Lут, мм, не менее Разрушающая механическая нагрузка, Р,кН, не менее Масса, кг
ПС 70Д а           3,5
ПС 120А б           5,4
ПС 160Б в           7,7
ПС 210Б г           8,3
ПС 160 д           9,3
ПС 300 д           12,0
ПС 400 д           16,0
ПС 300Б е           11,5
ПС 400А д           15,9
Подвесные фарфоровые изоляторы
ПФ 70В ж           4,8
ПФ 160В в           8,6
ПФ200А и           12,8
Подвесные изоляторы для районов с загрязненной атмосферой
ПФГ 70Б             4,7
ПСГ 70А к           5,2
ПСГ 120А л           7,3
ПСГ 160А           11,0

Рис. 5.1. Подвесные изоляторы типа: а) ПС 70Д; б) ПС 120А; в) ПС 160Б; г) ПС 210Б; д) ПС 160 (300, 400, 400А); е) ПС 300Б; ж) ПФ 70В; з) ПФ 160А; и) ПФ 200А; к) ПСГ 70А; л) ПСГ 120А

Длиной пути утечки (L ут, мм) называется длина (минимальная) по поверхности изолятора между его верхней («шапка») и нижней («стержень») металлическими частями.

Запишите в поля Items компонентов ComboBox и ListBox марки всех изоляторов введённых в StringGrid по примеру:

lst1.Items [0]:= StringGrid1.Cells [0,1];

lst1.Items [1]:= StringGrid1.Cells [0,2]; и проверьте работу программы.

Задание 3

Создайте заготовку процедуры вычисления числа подвесных изоляторов в гирлянде (procedure TForm1.Button1Click) двойным щелчком на кнопке Button1.

В теле процедуры запишите отладочную команду вывода в поле Memo значений полей таблицы:

memo 2 .Lines.Add (StringGrid 1 .Cells [2, ListBox 1 .itemindex +1]);.

Проверьте работу процедуры: перейдите в режим исполнения, выделите какой-либо изолятор в поле ListBox 1 и нажмите кнопку Button1. Исправьте ошибки и перейдите в режим проектирования программы.

При выводе информации в поле Memo по команде memo 2 .Lines.Add () в круглых скобках должна стоять только одна строка. Часто бывает нужно детализировать выводимую информацию. Так в выше написанной команде в поле Memo появится значение ячейки таблицы StringGrid 1, у которой столбец имеет номер 2, а номер строки на 1 больше номера в списке ListBox 1. При таком способе вывода непонятно, из какой ячейки получено значение, а значит что не понятно, правильно ли работает обращение к ячейкам таблицы. Исправить этот недостаток можно, если перед выводом значения ячейки вывести её номер. Для этого понадобится 3 строковые переменные:

1) строка, с не меняющейся частью: ΄ячейка[2, ΄ (2 – номер столбца);

2) строка, содержащая номер строки таблицы. Поскольку номер строки таблицы является целым числом (например, типа integer, byte …), которое на 1 больше номера марки изолятора в списке ListBox 1, перед выводом в поле Memo его следует преобразовать в строку командой IntToStr (ListBox 1 .itemindex +1);

3) строка с неизменной частью: ΄]΄ (закрывающая квадратная скобка).

Эти три строки объединяются в одну командами конкатенации (сложение строк) и ставятся перед выводом содержимого соответствующей ячейки таблицы. Измените строку вывода в поле Memo так, чтобы было понятно значение какой ячейки выводится: в круглые скобки следует вставить строку ΄ячейка[2, ΄+ IntToStr (ListBox 1 .itemindex +1)+΄] = ΄+ StringGrid 1 .Cells [2, ListBox 1 .itemindex +1].

Проверьте работу процедуры.

Измените команды вывода так, чтобы в первой строке вывода в поле Memo появилась строка с названиями Марка, H, мм, D, мм, Lут, мм.

Во второй и последующих строках вывода должны появиться фактические значения полей изолятора Марка, H, мм, D, мм, Lут, мм. Число строк вывода должно совпадать с количеством изоляторов в таблице StringGrid 1. Обратите внимание при написании команд вывода в поле Memo, что число элементов в таблице и списке вывода не совпадает. Отладьте работу процедуры.

Превратите отладочные строки вывода в поле Memo в комментарий.

В разделе описания переменных процедуры Button1Click опишите переменные Ky, D, Ly, Unom, Lef как переменные с плавающей запятой, а переменную Nizol как целочисленную переменную.

Запишите оператор присвоения значений переменной Unom:

Unom:= StrToFloat(ComboBox 3 .Items [ ComboBox 3 .ItemIndex ]);

и выведите результаты этой операции в поле Memo:

memo 1 .Lines.Add('Unom = '+FloatToStr (Unom) + ' кВ');.

Проверьте правильность присвоения значений переменной Unom, выбирая по очереди все величины номинального напряжения.

Запишите оператор присвоения значений переменной D:

D:= StrToFloat(StringGrid 1 .Cells [2, ListBox 1 .itemindex +1]); и выведите значение диаметра изолятора в Memo.

Memo1.Lines.Add('изолятор '+ ListBox 1.Items[ ListBox 1.itemindex]+ ' D = '+FloatToStr(D)+' мм');.

Проверьте правильность присвоения значений переменной D, выбирая по очереди все марки изоляторов в ListBox. Не забывайте перед нажатием кнопки старт выбрать значение номинального напряжения и марки трасформатора.

Напишите аналогичным образом операторы ввода в программу и проверки переменной Ly (длины пути утечки). Проверьте правильность присвоения значений переменной Ly, выбирая по очереди все марки изоляторов в ListBox. После отладки программы все отладочные команды вывода в Memo превратите в комментарии.

Напишите оператор вычисления коэффициента использования длины пути утечки: Ky:=1+0.5*(Lу / D -1); и выведите полученное значение в Memo. Проверьте правильность вычислений Ky для всех изоляторов. После проверки отладочный вывод в Memo закомментируйте.

Напишите оператор присвоения значений переменной Lef (удельная эффективная длина пути утечки, которая нормирует требуемую длину пути утечки в зависимости от степени загрязнения атмосферы и номинального напряжения см. табл. 5.2)

Для выполнения такого присвоения можно использовать условный оператор типа case I of <значения величины выбора I и операторы присвоения> end; I целочисленная переменная, в данном примере степень загрязнения атмосферы (ComboBox 1. ItemIndex).

Пример кода программы и проверки значений таблицы 5.2:

case ComboBox 1.ItemIndex of

0:if ComboBox 3.itemindex > 6 then Lef:=1.6 else Lef:=1.9;

1:if ComboBox 3.itemindex > 6 then Lef:=2 else Lef:=2.35;

2:if ComboBox 3.itemindex > 6 then Lef:=2.5 else Lef:=3;

3:if ComboBox 3.itemindex > 6 then Lef:=3.1 else Lef:=3.4;

end;{case}

memo2.Lines.Add(cbb1.Items[cbb1.ItemIndex]+ ' Unom = '+FloatToStr(Unom)+' кВ'+' Lef = '+FloatToStr(Lef)+ ' см/кВ, не менее');

Проверьте правильность ввода в программу значений удельной эффективной длины пути утечки для всех степеней загрязнения и номинальных напряжений. При проверке не забывайте выбирать значения ComboBox 1 и ComboBox 3. Исправьте ошибки и закомментируйте отладочную команду вывода.

Таблица 5.2. Удельная эффективная длина пути утечки

Степень загрязнения , см/кВ (не менее) при номинальном напряжении, кВ
до 35 включительно 110 ÷ 750
  1,9 1,6
  2,35 2,0
  3,0 2,5
  3,5 3,1

 

Напишите вычисление числа изоляторов по формуле:

Код программы вычисления и вывода в поле Memo

Nizol:= 1+ Trunc (Lef*Unom *1.15* ky / Ly *10);

memo 2. Lines.Add ('Число изоляторов в гирлянде= '+ IntToStr (Nizol));

memo2.Lines.Add (' ');.

Функция trunc (число типа float) отсекает дробную часть, превращая его в целое. Например, trunc (6.99) = 6, как и trunc (6.01) = 6. Существует другая функция преобразования чисел с дробными частями в целые. Это функция round (число типа float) - функция округления по обычным математическим правилам. Так round (6.5) = 7, а round (6.495) = 6. Поскольку при вычислении числа изоляторов в гирлянде по формуле Lef*Unom *1.15* ky / Ly *10 получается число с дробной частью (тип float), которое следует принимать равное ближайшему большему. В этой формуле предполагается, что максимальное рабочее напряжение превышает номинальное напряжение на 15% (Uраб.макс = Unom *1.15). Хотя это несколько завышенное значение и более точное значение определяется по таблице 5.3, в некоторых случаях можно воспользоваться приведённым выше соотношением.

Таблица 5.3. Связь между номинальным напряжением

и максимальным рабочим напряжениями

U, кВ   РЕЖИМ НЕЙТРАЛИ
и з о л и р о в а н н а я з а з е м л е н н а я
U ном, кB                        
U раб, кВ 3,5 6,9 11,5   40,5              
                           

 

Множитель 10 в формуле служит для перевода длины пути утечки в миллиметрах (таб. 5.1) в сантиметры, для согласования с данными табл. 5.2.

Изменяя марку изоляторов гирлянды, номинальное напряжение и степень загрязнения атмосферы проанализируйте, как число изоляторов гирлянды зависит от их значений.

 






Не нашли, что искали? Воспользуйтесь поиском:

vikidalka.ru - 2015-2024 год. Все права принадлежат их авторам! Нарушение авторских прав | Нарушение персональных данных