Главная

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

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

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

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

ТОР 5 статей:

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

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

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

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

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

КАТЕГОРИИ:






Практическое занятие 7




Работа с картинками в среде «Delphy»

Цель занятия

Знакомство студентов с компонентами Image, CheckBox, способами изменения параметров ввода из режима исполнения программы. Знакомство с типами заземляющих устройств, свойствами грунта и расчётом величины сопротивления растекания тока на землю промышленной частоты.

Задание 1

ЗапуститеДельфи. Измените заголовок формы на «Расчёт сопротивления заземлителя на частоте 50 Гц». Сохраните программу в папке практика 7. Проверьте число сохранённых файлов (должно быть не менее 6).

Поместите на форму компонент Panel, удалите её заголовок, измените её цвет на clInfoBk, измените размеры (1/4 по ширине и 2/3 по высоте формы) и переместите панель в левый верхний угол формы. Поместите на компонент Panel последовательно сверху вниз следующие компоненты:

1. label с названием «Тип грунта»;

2. ComboBox и создайте список грунтов (Items) в соответствии со столбцом 2 табл. 7.1;

Таблица 7.1. Типы грунтов и их удельные сопротивления

N Тип грунта Удельное сопротивление, r, Ом∙м
  Торф, ил, солончак, песок сильно увлажнённый  
  Чернозём, зола, глина, земля садовая, бетон  
  Мергель глинистый, суглинок, песок увлажнённый  
  Супесь, песок влажный  
  Гравий глинистый, песок слегка влажный, лёсс, гнейс  
  Песчаник, песок сухой  
  Щебень мокрый, базальт  
  Гранит  

 

3. label с названием «Тип заземлителя»;

4. ComboBox и создайте следующий список заземлителей (Items): вертикальный, вертикальный заглублённый, горизонтальный, контурный;

 

Рис. 7.1. Типы простых заземлителей

Сохраните рисунки четырёх заземлителей (см. рис. 7.1) в папке практика 7 с именами 1. bmp, 2. bmp, 3. bmp, 4. bmp. Если при выделении рисунка и нажатии правой кнопки мыши функция «сохранить рисунок как…» не поддерживается, то для выполнения операции сохранения рисунков сделайте следующее. Запустите какой-либо графический редактор, например, Paint из папки стандартных программ. Скопируйте в него рисунок и сохраните под указанным именем. Операцию повторите для всех рисунков. Убедитесь, что сохранённые рисунки 1. bmp, 2. bmp, 3. bmp, 4. bmp соответствует частям рис. 7.1.

5. шесть компонентов LabeledEdit из дополнительной палитры компонентов и измените их заголовки: «Длина (L), м»; «Диаметр (d), мм»; «Заглубление (h), м»; «Диаметр контура, м»; «Сторона a, м»; «Сторона b, м». В поле text каждого компонента введите числа, например 5;

6. компонент CheckBox из стандартной палитры компонентов;

7. компонент BitButton и измените его заголовок на Старт, а цвет шрифта на красный.

Положите на форму ниже панели отладочное поле Memo и вставьте линейки прокрутки.

Положите на форму справа от панели компонент Image и измените его размер так, чтобы он занимал оставшуюся часть формы. В свойство картинка Picture загрузите рисунок первого заземлителя.

Задание 2

Перейдите на окно кода программы, найдите раздел описания глобальных переменных (общих для всех процедур). Этот раздел должен содержать описание только var Form1: TForm1. Дополните этот раздел, добавив описание переменной rho:real;.

Двойным щелчком на форме создайте процедуру FormCreate. В теле процедуры запишите команды задания начальных значений номеров компонент ComboBox, значение переменной «rho», заголовки и видимость (свойство Visible:=True). Пример команд:

ComboBox1.ItemIndex:=0;

ComboBox2.ItemIndex:=0;

rho:= 25;

chk1.Checked:=True;

chk1.Caption:='Кольцевой';

LabeledEdit1.Visible:=True;

LabeledEdit2.Visible:=True;

LabeledEdit3.Visible:=True;

LabeledEdit4.Visible:=True;

LabeledEdit5.Visible:=True;

LabeledEdit6.Visible:=True;

Двойным щелчком на компоненте ComboBox 1 (типы грунтов) создайте процедуру ComboBox 1 .Change. В тело этой процедуры запишите значения, величин сопротивлений, которые соответствуют типам грунтов из табл. 7.1 по аналогии со следующим примером:

case ComboBox 1. ItemIndex of

0: rho:=25;

end; { Case }.

Тогда, при выборе первого типа грунта его удельное сопротивление примет значение 25 Ом*м. Чтобы ввести второе значение, нужно после строки 0: rho:=25; вставить строку 1: rho:=50; и т.д. для всех типов грунтов.

Двойным щелчком на кнопке старт создайте основную процедуру и вставьте в её тело проверочную строку

memo2.Lines.Add(cbb1.Items[cbb1.ItemIndex]+' rho = '+FloatToStr(rho)+' Ом*м');.

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

Задание 3

Двойным щелчком на компоненте ComboBox 2 (типы заземлителей) создайте процедуру ComboBox 2 .Change. В тело процедуры вставьте заготовку команды выбора:

case ComboBox 2 .itemindex of

0: begin

end; {0}

1: begin

end; {1}

2: begin

end; {2}

3: begin

end; {3}

end; { case – окончание процедуры выбора набора действий}

Операторные скобки begin end, стоящие после цифры 0 (1, 2 или 3), объединяют набор команд, записанных между ними, которые должны выполняться при выборе одного из значений списка ComboBox 2.

Например, при выборе первого типа заземлителя (ComboBox2.itemindex = 0) должен загрузиться первый рисунок и измениться видимость некоторых компонент панели:

case ComboBox2.itemindex of

0: begin

img1.Picture.LoadFromFile('1.bmp');

LabeledEdit1.Visible:=True;

LabeledEdit2.Visible:=True;

LabeledEdit3.Visible:=false;

LabeledEdit4.Visible:=false;

LabeledEdit5.Visible:=false;

LabeledEdit6.Visible:=false;

chk1.Visible:=false;

end; {0}

1: begin

end; {1}

2: begin

end; {2}

3: begin

end; {3}

end; {Case}

По приведённому примеру запишите последовательность действий при выборе 2, 3 и 4 типа заземлителя (ComboBox2.itemindex = 1,2 или 3).

Проверьте изменения на панели при изменении выбора заземлителя.

Двойным щелчком на компоненте CheckBox 1 (типы заземлителей) создайте процедуру CheckBox 1 Click. В тело процедуры впишите команды, которые должны выполняться при нажатии CheckBox 1:

procedure TForm1. CheckBox 1 Click(Sender: TObject);

begin

if chk1.Checked

then

begin

LabeledEdit4.Visible:=true;

LabeledEdit5.Visible:=false;

LabeledEdit6.Visible:=false;

chk1.Caption:='Кольцевой';

end

else

begin

LabeledEdit4.Visible:=false;

LabeledEdit5.Visible:=true;

LabeledEdit6.Visible:=True;

chk1.Caption:='Прямоугольный';

end;

end;

Проверьте работу программы.

Задание 4

В разделе описания типов переменных основной процедуры запишите 3 переменных с плавающей запятой (например, типа Real): var d, L, R:real;.

В тело основной процедуры впишите команды чтения данных с формы, формулы вычисления сопротивления и вывода величины сопротивления. Поскольку для разных типов заземлителей различаются как типы исходных данных, так и формулы вычисления, наборы команд также должны различаться. Для реализации возможности таких различий создайте в теле основной процедуры заготовку выбора набора команд (оператор типа case I of….end) по аналогии с примером из задания 3. Между открывающей и закрывающей операторными скобками, соответствующими первому значению типа заземлителя 0: begin … end; {0} запишите команды чтения данных из элементов LabeledEdit, формулу вычисления сопротивления и вывод величины сопротивления в поле Memo. Напоминание:

1. значения исходных данных находятся в полях text соответствующих компонентов LabeledEdit и относятся к переменным типа TCaption (строка WideString), а в программе нужны численные значения этих переменных, относящихся к переменным с плавающей запятой (собирательное название всех таких переменных – Float). По этой причине команда типа L:= LabeledEdit 1 .Text приведёт к возникновению ошибки [ Error ] Unit1.pas (30): Incompatible types: ' Real ' and ' TCaption '. Для преобразования строковой переменной в переменную с плавающей запятой служит функция StrToFloat (), а в круглых скобках указывается, какая строка преобразуется в число. Тогда правильная команда чтения значения должна иметь вид:

L: = StrToFloat (LabeledEdit 1 .Text);

2. Поскольку значение диаметра заземляющего устройства удобнее вводить в мм, а вычисления проводятся в м, то при записи команды чтения следует сразу же перевести значение диаметра из миллиметров в метры, умножив на 0,001 или разделив на 1000:

d: = StrToFloat (LabeledEdit 2 .Text)/1000;

3. После определения величин L и d, можно вычислять сопротивление заземляющего устройства, поскольку величина rho была определена ранее:

R:= rho /2/ L /pi*ln(4* L / d);

4. Для вывода значения сопротивления в поле Memo следует осуществить обратное преобразование из числа с плавающей запятой (Float) в строковую переменную (String). Эта операция часто осуществляется с помощью функции FloatToStr (R). Недостатком этой функции является то, что она выводит до 14 знаков после запятой, что, вообще говоря, является ошибкой. Более правильное представление результатов расчётов будет, если использовать функцию FloatToStrF (R, ffFixed, 7, 2). В этой функции прямо указывается, что будет использоваться фиксированная форма вывода (ffFixed), в которой на число отводится 7 знаков, а на десятичную часть числа 2 знака. Более подробно о других форматах представления чисел с помощью этой функции можно ознакомиться, подведя курсор к названию функции и нажимая Ctrl+F 1 (вызов справки, Help).

memo2.Lines.Add('Сопротивление заземления = '+ FloatToStrF (R, ffFixed, 7, 2)+ ' Ом');

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

Задание 5

По аналогии с заданием 4 дополните код основной процедуры вычислением сопротивления других типов простых заземлителей. Проверьте работу программы. При вводе информации для расчёта величины сопротивления заглублённого вертикального заземлителя величина h по определению не может быть меньше L /2 (см. рис. 7.1). Тем не менее, она может быть введена так, что значение 4 h - L станет меньше нуля, а логарифм отрицательного числа не существует, что приведёт к ошибке и остановке программы. Для предотвращения такого сорта ошибки следует после ввода h из LabeledEdit поставить условие: если h < L /2, тогда h:= L /2 + 0.2.

Задание 6

Рассчитайте значения сопротивления для различных типов заземлителей, значений длины, глубины заземления, диаметра проводов и прочего. Ответьте на вопрос: как влияют различные параметры на величину сопротивления заземления.

 






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

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