Політ: книга програмера  
0. Вступ
1. Особливості політівських програм
2. Події та їх обробники
3. Елементи керування: принципи, Button, Label, Check, Radio,
InpLine, PicCtl, Header, Progress, Track, TimerCtl, Notebook,
SpinEdit, PopupBtn, Switcher, MainMenu, Splitter, Memo, ListBox

Сайт Польоту
 

Елементи керування
Напис або мітка - Label (модуль Ctl)

Мітка - це просто якийсь текст у вікні, що ніяк не реагує на дії юзера (ну, майже ніяк :). За допомогою міток робляться підписи до інших елементів керування (полів вводу, лінійок, флажків тощо), різні пояснення, показується текст, який юзер не може редагувати. Так само, як і кнопки, політівські мітки мають досить багато різних властивостей.



Створення напису
Function Label_Create(Prog:PProg; VCaption:String; VPicture:Pointer;
  VStyle:TLabelStyle; VAlign:TAlign): PControl;
  • Prog - і так ясно :).
  • VCaption - текст напису. До речі, текст цей може мати більше одного рядка. Наприклад, у вікна "Настройки" всі написи справа - дворядкові. Щоб зробити мітку багаторядковою, треба на межах рядків підпису повсталяти символи #13. Наприклад: 'Швидкiсть клавiатури,'+#13+'курсору, гарячi клавiшi'.
  • VPicture - вказівник на картинку. Мітки теж можуть мати картинку, вона буде малюватися ліворуч від тексту. Nil - немає картинки. Напис з іконкою можна побачити у Файл-менеджері (поля із поточними шляхами зверху).
  • VStyle - стиль напису: lsNormal - звичайна мітка (чорний текст), lsDisabled - "недоступна" (звичайно сірий колір), lsComment - "пояснення" (звичайно білий колір), lsBeveled - напис у рамці та на темному фоні. Написи стилю lsDisabled використовуються, коли недоступний елемент керування, до якого стосується напис. Наприклад, подивіться панель настройки клавіатури, сторінку "Гарячі клавіші". Стиль lsComment використовується для написів-пояснень у вікні Настройок. Нарешті, мітки стиль lsBeveled можна також побачити у Файл-менеджері.
  • VAlign - вирівнювання тексту мітки: alLeft - по лівому краю, alCenter - по центру, alRight - по правому краю.


Малювання напису
Procedure Label_Paint(Me:PControl; VX1, VY1, VX2:Integer);
  • X1, X2 - координати X лівого та правого країв напису. Якщо напис не вміститься по ширині, від буде скорочений (наприклад, "Яскр...").
  • Y1 - коорд. Y верху напису. Висота написів залежить від кількості рядків (для однорядкових написів це 21 піксель), тому Y2 вказувати не треба. Зверніть увагу, що насправді напис малюється на 4 пікселі нижче вказаного Y1. Це зроблено для того, щоб було легше вертикально вирівнювати мітки з такими елементами, як кнопки, поля вводу тощо. Якщо ви робите поле вводу із підписом, просто дайте обом елементам однаковий Y1, і вони будуть ідеально вирівняні.


Змінити текст напису
Procedure Label_SetCaption(Me:PControl; 
  VCaption:String);
VCaption - новий текст. Раджу при цьому кількість рядків напису залишати такою, як і була.



Отримати текст напису
Function Label_GetCaption(Me:PControl): String;


Отримати картинку напису
Function Label_GetPicture(Me:PControl): Pointer;


Змінити стиль напису
Procedure Label_SetStyle(Me:PControl; 
  VStyle:TLabelStyle);
VStyle - новий стиль. Допускається зміна стилів лише між lsNormal, lsDisabled, lsComment. Наочний приклад зміни стилів (тобто, фактично, кольорів) написів можна побачити у вікні "Про Політ".



Зкопіювати текст напису в буфер
Procedure Label_CopyToClipboard(Me:PControl);


Як і з кнопкою, давайте зробимо програмку-приклад для напису. Пропоную взяти попередню програмку TestBtn та додати туди напис, яким ми будемо керувати за допомогою кнопки. Заводимо ще змінну:
LabTest: PControl;
Створюємо напис, відразу після створення кнопки:
LabTest:=Ctl.Label_Create(Me, 'Windows', Nil, lsBeveled, alCenter);
Малюємо його (після малювання кнопки):
Ctl.Label_Paint(LabTest, 10, 40, 100);
І обробник кліку на кнопці замінюємо на такий:
Procedure OnBtnTestClick(Me:PProg; Control:PControl);
Begin
  With Me^, TTestBtnData(Data^) Do
    If Ctl.Label_GetCaption(LabTest)='Windows'
      Then Ctl.Label_SetCaption(LabTest, 'mustdie')
      Else Ctl.Label_SetCaption(LabTest, 'Windows')
End;
Майже повна аналогія з керуванням кнопкою, бачите? Можна запускати.