Час в панелі стану C + + Builder

Нашим останнім прикладом в екскурсі в VCL стане дещо, у чому багато програмісти потребують своїх додатках, але лише деякі здатні здійснити У багатьох додатках існує необхідність відображати поточний час <Невеселий каламбур вийшов - Примеч. перев.> в одній із секцій панелі стану (status bar) Хоча зазвичай робочий стіл Windows 95/NT відображає його в нижньому правому куті, це відбувається не завжди Користувачі, які змінили у себе робочий стіл так, що час на ньому не показується, очікують, що ваш додаток має надати їм цю інформацію CBuilder дозволяє здійснити їх бажання настільки легко, що для вас не може бути ніяких виправдань, якщо ви все ж не підете їм назустріч і не покладете годинник в вашу програму У цьому прикладі ми якраз і розглянемо процес відображення поточного часу в панелі стану Коли ми його напишемо, ви дізнаєтеся достатньо для того, щоб відображати все що захочете в панелі стану під час виконання

Ви знайдете вихідний код програми, що відображає час в панелі стану, в директорії

Chapter4/TimeInAStatusBar доданого до книги компакт-диска

На рис 414 показана форма, яку ми будемо використовувати в цьому прикладі Як ви бачите, на формі знаходяться панель стану, таймер (timer) і три поля редагування Поля редагування знаходяться там виключно для того, щоб показати вам, що код, який ми збираємося додати для форми, не матиме ніякого впливу на ефективність і хід виконання програми Встановіть інтервал таймера рівним 1000 мілісекунд (одиниця виміру часу для таймера – мілісекунди, так що вам треба просто ввести в поле відповідної властивості 1000), тобто одній секунді У цьому додатку секунди будуть відображатися, хоча, можливо, вам потрібні тільки години і хвилини Як ви побачите далі, це залежить тільки від вас

Рис 414 Приклад програми з годинником на панелі стану

Додайте дві секції (panel) в компонент панель стану Першу секцію зробіть рівною приблизно двом третинам ширини панелі стану, а другий розтягніть так, щоб вона зайняла все залишився на панелі стану місце Цю другу секцію ми і збираємося використовувати для відображення часу, так що переконаєтеся, що вона досить широка, щоб на ній помістилися значення повних годин, хвилин і секунд поточного часу

Після того, як всі властивості форми встановлені, додайте в форму обробник події Timer

Ця подія відбуватиметься щоразу, коли закінчиться черговий інтервал таймера

Незважаючи на те, що немає ніяких гарантій того, що ця подія буде відбуватися точно раз в секунду, для наших цілей це цілком підійде Наступ події Timer може бути затримано, якщо система занадто сильно завантажена або якщо у чогось ще є більш високий пріоритет за розпорядженням обчислювальними ресурсами машини

Додайте наступний код в обробник події Timer1Timer (що є імям події за замовчуванням, яке зявиться, якщо ви двічі клацніть на подію Timer в Object Inspector):

void __fastcall TForm1::Timer1Timer(TObject *Sender)

{

StatusBar-&gtPanels-&gtItems[1]-&gtText  = Now()TimeString()

}

От і все, ось і весь приклад Властивість Panels панелі стану містить обєкти, які представляють окремі секції відображення панелі стану Усередині властивості Panels властивість Items містить інформацію про кожній секції, включаючи, як ми бачимо з коду, і інформацію про текст, що відображується в секції Скомпілюйте і запустіть додаток, і ви побачите поточний час на панелі стану

Чи не правда вражає, що таке нікчемна кількість коду здатне виробити такий потужний ефект Це найкращий приклад заснованої на компонентах розробки додатку, який тільки можна придумати Написавши одну-єдину рядок коду, ми отримали закінчене додаток, що відображає поточний час на панелі стану

Джерело: Теллес М – Borland C + + Builder Бібліотека програміста – 1998

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*