вівторок, 28 лютого 2017 р.

Lazarus. Урок 15. Калькулятор як у Windows. Частина 1.

Привіт! Сьогодні ми повертаємось до калькулятора, але на цей раз наших знань повинно вистачити на калькулятор схожий до калькулятора з ОС Windows. Варто відзначити, що ми будемо говорити про калькулятор з ОС Windows XP. І сьогодні подивимось чи був попередній калькулятор пекельними? Тож давайте створимо проект та в дизайнері форми побудуємо наш "справжній" калькулятор, який буде працювати за принципом оригіналу. 

Інтерфейс калькулятора

Для нашого калькулятора нам потрібно 17 кнопок і одне текстове поле. Тому додаємо їх на форму та формуємо інтерфейс.
А ще для зручності у кожної кнопки, я б рекомендував змінити властивість Name, так, щоб було зручніше розуміти, що це за кнопка. (Клацніть по зображенню та зверніть увагу на значення властивості Name )

Кнопку "1" я назвав btn_1  і тд. Кнопки, що означає дію додавання op_plus і тд.
Тепер мабуть час запустити оригінал і подивитись як він працює. 
Але для зручності і простоти я пропонує подивитись на його роботу на прикладі 
111 + 11 =
А на додачу порахуйте скільки кліків "мишкою" Вам доведеться зробити, щоб побачити результат. Порахували? У мене вийшло 7. А у Вас? Після 7-го кліку на "екрані" ми повинні побачити 122.
Давайте розберемо чому сім?
1-й клік (по кнопці 1) - на "екрані" з’явилась цифра 1.
2-й клік (по кнопці 1) - на "екрані" бачимо 11.
3-й клік (по кнопці 1) - на "екрані" - 111
4-й клік (по кнопці +) - "нічого" не відбулось бо на екрані так і залишилось 111... Але чи дійсно нічого?
5-й клік (по кнопці 1) - і на екрані з’являється 1. Чому так? (Я думаю зрозуміло, що ця одиниця, це перша цифра нашого другого числа - 11.)
6-й клік (по кнопці 1) - на екрані бачимо 11
7-й клік (по кнопці =) і ми повинні побачити результат 122.

Починаємо спочатку

Отож зробивши 1-й чи 5-й клік в текстовому полі Edit1 ми повинні побачити цифру 1. Як це зробити? Легко скажете Ви і будете праві якщо під цими словами розумітимете команду:

Edit1.Text:='1';
Але записавши цю команду до обробника події OnClick для кнопки "1"  ми, повторивши клацання по тій же кнопці "1" не отримаємо на екрані число 11. Бо кожного разу, коли ми клацнемо по кнопці "1" вміст текстового поля Edit1 або правильніше значення властивості Text буде присвоюватись 1. 
Але пригадавши попередні уроки ми можемо сказати, що для того, щоб у текстовому полі ми могли отримати 11, 111, 1111 при натисканні лише однієї кнопки ми можемо скористатись правилом: "До того, що вже є, додай ще". А розшифрувати його можна так:
Edit1.Text:=Edit1.Text+'1';
І дійсно такий код буде до вже існуючого значення в Edit1 приклеювати праворуч ще одну 1.

Тому мерщій до справи і перевіряти цю маленьку частинку частинку нашого калькулятора. А заодно пригадайте яка властивість текстового поля дозволить вирівняти текст по правому краю. І не забудьте зберегти проект. У окремій папці. Під назвою calc.

Не поспішайте прописувати код для решти цифр. Краще поміркуйте про те, що повинно виконатись коли ми зробимо 4-й клік, а ще цікавіше, що буде, коли ми зробимо наш 5-й клік і як до цього причетні команди описані вище.
Але про це вже у наступному пості.