Главная Случайная страница


Полезное:

Как сделать разговор полезным и приятным Как сделать объемную звезду своими руками Как сделать то, что делать не хочется? Как сделать погремушку Как сделать неотразимый комплимент Как сделать так чтобы женщины сами знакомились с вами Как сделать идею коммерческой Как сделать хорошую растяжку ног? Как сделать наш разум здоровым? Как сделать, чтобы люди обманывали меньше Вопрос 4. Как сделать так, чтобы вас уважали и ценили? Как сделать лучше себе и другим людям Как сделать свидание интересным?

Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






Практическое занятие 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 строки «Марка».

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

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

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

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

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

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

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

StringGrid1.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 значений полей таблицы:

memo2.Lines.Add(StringGrid1.Cells[2, ListBox 1.itemindex+1]);.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Memo1.Lines.Add('изолятор '+ ListBox1.Items[ListBox1.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 целочисленная переменная, в данном примере степень загрязнения атмосферы (ComboBox1.ItemIndex).

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

case ComboBox1.ItemIndex of

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

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

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

3:if ComboBox3.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)+ ' см/кВ, не менее');

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

Таблица 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);

memo2.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.

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

Вопросы для самопроверки

1. Как положить на форму компонент Panel?

2. Для чего служит компонент Panel?

3. Как изменить цвет компонента Panel?

4. Как поместить на панель компонент Label?

5. Как проверить, что компонент Label действительно находится на панели, а не просто на форме?

6. Для чего нужен компонент Label?

7. Как положить на форму компонент StringGrid (таблица строк)?

8. Для чего служит компонент StringGrid?

9. Как изменить цвет компонента StringGrid?

10. Как изменить число строк в строковой таблице StringGrid?

11. Как изменить число рядов в строковой таблице StringGrid?

12. Как создать заготовку процедуры создания формы?

13. Как записать названия верхних ячеек строковой таблицы в процедуру создания формы?

14. Как записать информацию в произвольную ячейку строковой таблицы?

15. К какому типу переменных относятся данные, содержащиеся в ячейках строковой таблицы?

16. Как вывести информацию в поле Memo из ячейки строковой таблицы?

17. Какими функциями следует воспользоваться, чтобы превратить данные строковой таблицы в переменные типа real и/или integer?

18. Как вывести в поле Memo строку, содержащую постоянную часть и часть, изменяющуюся в процессе работы программы?

19. Как проверить правильность ввода в программу значений переменных, взятых из ячеек строковой таблицы?

20. В каких случаях при выборе варианта действий используется оператор cаse?

21. Напишите структуру оператора cаse?

22. Как создать комментарий в тексте программы? Назовите три способа создания комментариев и назовите их область применения.

23. Назовите назначение функции trunk. Чему равно значение функции y:= trunk(8.786)?

24. Назовите назначение функции round. Чему равно значение функции y:= round(8.586)?

25. Сколько градаций степени загрязнения атмосферы принято в настоящее время?

26. Чем различаются степени загрязнения атмосферы?

27. Как связаны между собой максимальное рабочее напряжение и номинальное напряжение?

28. Что такое длина пути утечки изолятора?

29. Что такое коэффициента использования длины пути утечки и как он вычисляется для подвесных изоляторов?

30. Что такое нормированная удельная длина пути утечки изолятора?

31. Как определить значение нормированной удельной длины пути утечки изолятора?

32. По какой формуле определяется число подвесных изоляторов в гирлянде воздушной линии электропередачи?

 






Date: 2016-05-16; view: 108; Нарушение авторских прав

mydocx.ru - 2015-2019 year. (0.021 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию