Редагування властивості у діалоговому вікні

Щоб проілюструвати використання діалогового вікна для редагування властивості, розширимо функціональні можливості компонента TddgRunButton, створення якого описано в розділі 11 Розробка компонентів VCL. При встановленні значення властивості CommandLine у ​​вікні інспектора об'єктів користувачеві буде достатньо клацнути на кнопці з трьома крапками, щоб відкрити діалогове вікно Open File і вибрати в ньому файл для роботи з компонентом TddgRunButton.

Текст компоненту TddgRunButton наведено у лістингу 11.13 глави 11, “Розробка компонентів VCL”. Не повністю повторюватимемо його тут, а лише звернемо увагу на кілька моментів. Властивість TddgRunButton.CommandLine визначено як такий, що має тип TCommandLine. Цей тип визначено так:

TCommandLine = type string;

Листинг 12.6. RunBtnPE.pas - модуль TCommandLineProperty

Windows, Messages, SysUtils, Classes, Graphics, Controls,Forms, Dialogs, StdCtrls, Buttons, DesignEditors, DesignIntf, TypInfo;

його можливості для редагування рядків. >

function GetAttributes: TPropertyAttributes; override;

procedure Edit; override;

function TCommandLineProperty.GetAttributes: TPropertyAttributes;

Result: = [paDialog]; // Відображення діалогового вікна

end; // У методі Edit.

отримує ім'я файлу, що виконується, присвоюється властивості. >

OpenDialog.Filter := 'Executeable Files*.EXE';

if OpenDialog.Execute then

OpenDialog.Free // Звільнити екземпляр класу TOpenDialog.

Таблиця 12.3. Прапори TPropertyAttribute

paValueList Повертає список значень властивості. Метод GetValue() заповнює список. Праворуч від значення властивості знаходиться кнопка із зображенням стрілки, спрямованої вниз.Застосовується для таких властивостей, як TForm.BorderStyle, і таких груп цілочислових констант, як TColor і TCharSet

paSubProperties Підпорядковані властивості відображаються з відступом нижче поточної властивості у форматі ієрархічної структури. Атрибут paValueList також має бути встановлений. Встановлюється для властивостей типу “множина” або типу “клас”, таких як TOpenDialog.Options та TForm.Font

paDialog З'являється кнопка з трьома крапками, по клацанню на якій метод Edit() викликає діалогове вікно. Застосовується для властивостей на зразок TForm.Font

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

paAutoUpdate Метод SetValue() викликається при кожній зміні якості. Якщо цей прапор не встановлений, SetValue() викликається при натисканні клавіші або при виході з властивості у вікні інспектора об'єктів. Використовується для таких властивостей, як TForm.Caption

paFullWidthName Повідомляє інспектору об'єктів про те, що це значення не потребує додаткового представлення, а отже, його ім'я слід відображати, використовуючи всю ширину вікна інспектора об'єктів

paSortList Інспектор об'єктів сортує список, що повертається

paReadOnly Значення властивості не може бути змінено

paRevertable Властивості можна повернути його колишнє значення. Але деякі властивості, наприклад вкладені (такі як TFont), відновленню не підлягають

Встановлення атрибуту paDialog для якості типу

Оскільки компонент TCommandLineProperty використовується для відображення діалогового вікна, необхідно повідомити інспектора об'єктів про цю можливість,встановивши атрибут paDialog у методі TCommandLineProperty.GetAttributes(). У такому випадку праворуч від значення властивості CommandLine у ​​вікні інспектора об'єктів з'явиться кнопка з трьома крапками. Якщо користувач клацне на цій кнопці, то буде викликано метод TCommandLineProperty.Edit().

RegisterComponents('DDG', [TddgRunButton]); RegisterPropertyEditor(TypeInfo(TCommandLine), TddgRunButton,

Пам'ятайте про те, що до розділу uses необхідно додати модулі DsgnIntf ​​та

Джерело: Тейксейра, Стів, Пачеко, Ксав'є. Borland Delphi 6. Посібник розробника. : Пров. з англ. - М.: Видавничий дім "Вільямс", 2002. - 1120 с. : іл. - Парал. тит. англ.