четвер, 13 листопада 2025 р.

Лабораторна робота №8 Створення програм з використанням дати та часу.

   Лабораторна робота №8 Створення програм з використанням дати та часу. 

Мета: Навчитись створювати програми з використанням дати та часу.

Теоретичний матеріал посилання 

Завдання 1. Організувати введення дати народження  та сьогоднішньої дати. Провести розрахунок тривалості життя.

Завдання  2. Організувати введення двох дат та визначити часовий проміжок між цими датами.

Завдання  3 Ввести дати. Визначити день тижня. Скористатись формулами розрахунків "Як за датою обчислити день тижня?"посилання  (https://genomukr.com/rizne/26518-jak-za-datoju-obchisliti-den-tizhnja.html) .

Завдання  4 Визначити час роботи вашої програми після її запуску. Інформацію відобразити у нижньому рядку:  StatusBar .

Завдання  5 Написати програму визначення  дати Великодня. Скоритсатися алгоритмом Гауса для обчислення дати Великодня. Посилання на вікіпедію. Для перевірки правильності роботи програми скористайтеся таблицею у Вікіпедії (дивись посилання).


Приклад коду:

newDate := IncDay(EncodeDate (Year, Month, Day) , 14); //використовується модуль         DateUtils тут додаємо 14 днів EncodeDate створюю задану дату

form1.Label12.Caption:= DateToStr (newDate) ;

   //dt:= now;     // поточна дата

dt := form1.DateTimePicker1.Date;  //визначена дата тобто введена з компоненту DateTimePicker

form1.Label11.Caption:= DateToStr (dt) ; //виводимо дату

difference := DaysBetween(newDate, dt); //використовується модуль DateUtils тут різницю днів

if dt<newDate then  s:=''

                  else  begin s:='пройшло'; newdt:=dt; dt:=newDate; newDate:=newdt; end;//переставити дати тобто прйшов час або пусто якщо дати розташовано вірно


form1.Label13.Caption:= s+intToStr (difference )+ ' днів ' ;

  // Припустимо, що у вас є дві дати:

  //date1 := EncodeDate(2022, 1, 1); // перша дата

  //date2 := Now; // друга дата (поточна дата ≥ час)

  // «находимо різницю між датами в місцях та днях

  //monthsDifference := MonthsBetween(date1, date2);

  //daysDifference := DaysBetween(date1, IncMonth(date1, monthsDifference));

monthsDifference := MonthsBetween(newDate, dt);    //різниця у місяцях

daysDifference := DaysBetween(newDate, IncMonth(dt, monthsDifference)); //різниця у датах з урахуванням місяців

form1.Label15.Caption:=s+ ' кількість місяців: '+ IntToStr( monthsDifference)+ '   кількість днів: '+ IntToStr (daysDifference);


Введення та відображення дат та часу – компоненти DateTimePicker, MonthCalendar, Calendar

   Введення та відображення дат та часу – компоненти DateTimePicker, MonthCalendar, Calendar

Стандартний тип дата-час - TDateTime, визначений у модулі System, є дійсне  число типу Double, ціла частина якого задає число днів (у тому числі і негативне), що пройшли з 30 грудня 1899, а дробова частина - минулу частку поточного дня . Так, 35065.75 дає 1 січня 1996, 18.00. 

У модулі SysUtils визначено низку стандартних функцій роботи з параметрами типу дати-часу.

Матеріал посилання     опис модуля SysUtils,  розглянуті деякі функції на прикладах. наведено коди прикладів, наведено використання компонента  StatusBar , який знаходиться у вкладці Win32: ( зображено жовтим кольором у коді), розглянуто Компонент Delphi DataTimePicker розташований на сторінці Win32 Палітри компонентів. Він призначений для введення часу та дати, компоненти DateTimePicker, MonthCalendar, Calendar.


Додатково матеріал   ще один опис Процедур та функцій роботи з датою та часом

Модуль SysUtils (можливо трохи гірше описано чим у попередньому, зате коротко).


Зразок проведення обчислення: 

Знайти проміжок між двома датами:

procedure TForm1.Button2Click(Sender: TObject);

var

  aDate,bDate: TDate;

  diff : Double;

begin

   aDate:= form1.DateTimePicker2.Date; //перша дата

   bDate:= form1.DateTimePicker3.Date;  //друга дата

   diff := aDate-bDate ;                //різниця дат це число Double

   form1.Label17.Caption:= ('day2 - day1 = '+FloatToStr(diff)+' days') ;   //відобразимо дату

   form1.Label16.Caption:= ('day2 - day1 = '+FloatToStr(round(diff))+' days') ; //заокруглимо 

end;



// Знаходимо різницю між датами в місяцях та днях

  //monthsDifference := MonthsBetween(date1, date2);

  //daysDifference := DaysBetween(date1, IncMonth(date1, monthsDifference));

   monthsDifference := MonthsBetween(newDate, dt);    //різниця у місяцях

   daysDifference := DaysBetween(newDate, IncMonth(dt, monthsDifference));//різниця у датах з урахуванням місяців

   form1.Label15.Caption:=s+ 'Кількість місяців: '+ IntToStr( monthsDifference)+ '  Кількість днів: '+ IntToStr (daysDifference);


понеділок, 10 листопада 2025 р.

Лабораторна робота №7 Створення програм з використанням таблиці

      Компонент таблиця (матеріал 1),  матеріал 2 посилання 

Лабораторна робота №7 Створення програм з використанням таблиці

Мета: Навчитись створювати програми з використанням таблиць

Завдання 1.

Створити програму, яка буде  виконувати розрахунки у наведеній таблиці:

Посилання на завдання

Завдання 2 (на підвищену оцінку).

четвер, 6 листопада 2025 р.

Табличне подання даних

  

Компонент StringGrid призначений для відображення та зберігання текстової інформації у вигляді таблиці. Розташований він на вкладці Additional Палітри компонентів:

 

Таблиця – двомірне подання даних, упорядковане по стовпчикам та рядкам. Таблиці, зазвичай, мають заголовки. У зв'язку з цим таблиці поділяються на дві частини: фіксовану та робочу . Робоча частина може містити довільну кількість рядків та стовпців. Якщо вона не міститься в межах компонента, то в нього автоматично вбудовуються смуги прокручування.

Табличне подання можна використовуватиме введення та виведення даних, тобто. вміст комірок можна редагувати.

У Delphi використовуються два компоненти для представлення даних у вигляді таблиці: TStringGrid та TDrawGrid.

Матеріал посилання 1
                посилання 2

приклад коду:
begin
     Label1.Caption:=IntToStr(ACol);
     Label2.Caption:=IntToStr(ARow);
     if ACol=4 Then
        begin
          StringGrid1.Options:=StringGrid1.Options-[goEditing];
          label3.Caption:='заборона  редагування'
        end
              Else
        begin
          StringGrid1.Options:=StringGrid1.Options+[goEditing]; //встановимо редагування
          label3.Caption:='редагування'
        end;
     // StringGrid1.Cells[4,Arow]:=intToStr(StrToInt(StringGrid1.Cells[1,Arow]));//+StrToInt(StringGrid1.Cells[2,Arow])) ;
end;




procedure TForm1.StringGrid1MouseDown(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);

  var ACol,ARow:integer;
begin
   StringGrid1.MouseToCell(x,y,ACol,ARow); //отримуємо координати
   StringGrid1.Col:=ACol;
   StringGrid1.Row:=ARow;
   Label1.Caption:=IntToStr(Acol);  //для себе для орієнтування вибору колонки
   Label2.Caption:=IntToStr(ARow);  //для себе для орієнтування вибору рядка
    if StringGrid1.Col=4 Then
        begin
          StringGrid1.Options:=StringGrid1.Options-[goEditing];
          label3.Caption:='нет редактирования'
        end
              Else
        begin
          StringGrid1.Options:=StringGrid1.Options+[goEditing]; //встановимо редагування
          label3.Caption:='редактирования'
        end;
end;

понеділок, 3 листопада 2025 р.

Лабораторна робота № 6 Створення програми мовою delphi з використанням багатосторінкового інтерфейсу. Вкладки PageControl

   Лабораторна робота № 6 Створення програми мовою delphi з використанням багатосторінкового  інтерфейсу. Вкладки PageControl

Мета: Навчитись складати та реалізовувати програми у середовищі delphi.

Завдання до лабораторної роботи:
1 Створити програму, яка буде мати декілька сторінок/ вкладок (5 штук, наприклад: вкладки фізика, математика, інформатика, хімія, література, тощо ).
Для створення програми використати компонент  PageControl. 
Розмістити на сторінках різні компоненти. На двох сторінках передбачити матеріал, наприклад, декілька малюнків (нехай по 5 шт.), які не поміщаються на сторінці і їх перегляд можливо використовуючи прокрутку  ScrollBox — панель з прокруткою. 
До цих сторінок створити можливість (події) використати прокрутку мишки. (див приклад у теоретичному блоці).

Продемонструвати роботу програм.

Компонент MEMO

 Посилання на документ  https://docs.google.com/document/d/1kimMzsTwNXlaRCAX8taBtkqWz0BNyCRfqvfOin_kcV4/edit?usp=drive_link 

Завантажити у поле Memo із файлу:

 form1.Memo3.Lines.LoadFromFile('text.txt');

Добавити у поле Memo:

form1.Memo3.Lines.Append(form1.Edit1.Text);

Очистити поле Memo:

 Memo1.Lines.Clear;

Зберегти інформацію із поля Memo до файлу:

 form1.Memo3.Lines.SaveToFile('text.txt');

Вкладки PageControl

 Вкладки PageControl

 Компонент PageControl використовується для того, щоб можна було використовувати кілька що перекриває інші панелі (клас TTabSheet). Кожна панель вибирається пов'язаною з її закладкою і може містити, у свою чергу, свій набір розміщених на її компонентах. 

Посилання на матеріал

Матеріал 1

Матеріал 2 витяг з книги