МОУ СОШ №3 г. Осташков Тверская обл.
  
 
 
 
 

Мини-проекты в Delphi

Проект «Решение задачи по физике»

В этом проекте будут использованы для рисунка TPaintBox, ввода данных, TEdit, а TTextLabel для пояснений и вывода результата. Задача: На столе находится груз массой m1, соединенный переброшенным через блок с грузом массой m2. С каким ускорением будут двигаться грузы? Чему равна сила натяжения? Чертеж тела, силы оси координат предварительно необходимо сделать на бумаге. Пропускаем решение. Его результат:
  
Готовим форму. Располагаем на ней TPaintBox, c размерами Width = 400, Height = 300. 3 панели TGroupBox, Для объектов GroupBox свойство Caption “Дано”, “Найти”, “Ответ”. На кнопке – “Решить”. На первой из них 3 TEdit изменив и свойство Name на “m1wind”, “m2wind”, “trwind”. Рядом слева 3 TTextLabel с текстами: “Масса тела”, “Масса груза”, “Коэффициент трения”. Во второй панели текст для TextLabel – “Ускорение, силу тяжести”. В третьей панели TextLabel сменив имя Name на “Answer”.
Теперь нужно записать все основные процедуры. Объект TPaintBox имеет метод Canvas, который позволяет не только загружать готовые рисунки, но и создавать их используя геометрические примитивы: точка, линия прямоугольник, эллипс и т.д.
Часть рисунка должна появиться после запуска программы. Для этого создается процедура создания формы: OnCreate. В ней задается штриховка Brush.Style:=bsBDiagonal; и цвет Brush.Color:=33333; Вычерчиваются прямоугольником стол, тела, и блок. Создаются надписи для обозначения тел.

 

Объявляем глобальную константу перед этой процедурой const g=9.8;
Все остальное выполняется после клика по кнопке. Это вычерчивание векторов с надписями, чтение данных из трех Edit, вычисление и вывод результатов в TextLabel с именем Answer. В ней объявляем переменные для масс m1, m2, коэффициента трения  mu и результатов a, T. code необходима для функции Val.

procedure Button1OnClick;
   var m1,m2,mu,a,T:real;
         code:  integer;
begin
   With PaintBox1 do
       begin
          Pen.Width:=2;
          Line(50,75,250,75);
          Line(50,75,60,77);Line(50,75,60,73);
          Line(250,75,240,77);Line(250,75,240,73);
          TextOut(30,50,'F');  TextOut(36,55,'тр');TextOut(250,50,'T');
          Line(125,5,125,145);Line(125,5,123,15);Line(125,5,127,15);
          Line(125,145,123,135);  Line(125,145,127,135);
          TextOut(135,5,'N'); TextOut(135,135,'m  g');TextOut(145,145,'1');
          Line(325,125,325,225);Circle(325,175,3);
          Line(325,125,323,135);Line(325,125,327,135);
          Line(325,225,323,215);Line(325,225,327,215);
         TextOut(340,225,'m   g');TextOut(348,235,'2');TextOut(340,125,'T');
      end;
      Val(m1wind.Text,m1,code);
      Val(m2wind.Text,m2,code);
      Val(trwind.Text,mu,code);
      a:=(m2-mu*m1)/(m1+m2)*g;
      a:=Round(a*100)/100;
      T:=m2*(g-a);
      T:=Round(T*100)/100;
      if a>0 then
        Answer.Caption:='a='+FloatToStr(a)+' м/с^2,  T='+FloatToStr(T)+' H'
        else 
           Answer.Caption:='Тела  не будут двигаться!';
end; 

Стандартная процедура Round и коэффициент 100 позволяют округлить результаты до двух знаков после запятой, Pen.Width – устанавливает толщину линии (пера), процедура TextOut выводит в указанные координаты нужный текст.

 

 

 

 

 

 

 

 

 

 

 

 


 
О мини-проектах
Неуловимая кнопка
Вещий камень
Перетаскивание фигур
Секундомер
Градусы-радианы
Мультик
Падение тела
Прозрачная форма
Регионы
Шарик за мышкой
Таймер
Расписание уроков
Записная книжка
Задача по физике
Определение зачеркнутой цифры
Использование Microsoft Agent в Delphi
 Арифметика
 
 
 
 
 
 
 
 
 
 
 
 
 
 
             
Hosted by uCoz