Редагувати властивості у вікні Інспектора Об'єктів можна двома способами. Один полягає в наданні користувачу можливості редагування властивості як рядки тексту. Інший вимагає створення спеціального діалогового вікна, в якому і виконується редагування властивості. У деяких випадках потрібно використовувати обидва способи для редагування одного властивості.
2. Редагування властивості як тексту.
3. Редагування властивості в діалоговому вікні (необов'язковий етап).
function GetAttributes: TPropertyAttributes; override;
function GetValue. String; override;
procedure Edit; override;
Розглянемо по порядку методи нового класу.
Функція GetAttributes додає до успадкованого безлічі атрибути paDialog (з'являється кнопка «...») і paReadOnly (властивість не можна редагувати безпосередньо в інспектор об'єктів, а тільки в діалозі, що викликається через кнопку «...»):
function THintProperty.GetAttributes: TPropertyAttributes;
Result: = inherited GetAttributes + [paDialog, paReadOnly];
Функція GetValue замінює "неправильні" символи # 10 і # 13 (переклад каретки і перехід на новий рядок) на символ ">":
function THintProperty.GetValue. string;
for i: = 1 to Byte (result [0]) do
if result [i]<#32 then result[i]:='>';
Процедура Edit викликає діалог для введення рядків підказки. Діалог можна було б намалювати свій власний, однак можна скористатися вже готовим. Кілька різних діалогів лежить в директорії X: \ DELPHI \ SOURCE \ LIB. Скористаємося модулем STREDIT.PAS, в якому є необхідний діалог редагування рядків:
with HintEditDlg do