Издательский дом ООО "Гейм Лэнд"ЖУРНАЛ ХАКЕР #75, МАРТ 2005 г.

Компонент для хакера

gh05t

Хакер, номер #075, стр. 075-106-4


Последняя процедура - всего лишь вызов каждой из вышеописанных функций в случае, если значение переменной-свойства установлено в True:

if FgetShutdown then GetShutdownPrivileges;

if FgetLoadDriver then GetLoadDriverPrivileges;

Свойства

Ну вот, события генерировать научились, теперь надо отобразить их и другие свойства в ObjectExplorer'e. Как отмечалось выше, чтобы переменные были видны в нем, необходимо расположить их в секции published. Но и этого недостаточно, надо еще указать, что наша переменная – не обычная, а свойство. Для этого перед ее именем надо поставить ключевое слово «property» и указать методы записи/чтения или переменные, куда будут записываться значения свойств. В общей сложности у нас получится что-то вроде этого:

Раздел published компонента

published

{ Published declarations }

property LoadDriverPrivileges: boolean read FgetLoadDriver write FgetLoadDriver;

property ShutdownPrivileges: boolean read FgetShutdown write FgetShutdown;

property OnGetLoadDriverPrivileges: TNotifyEvent read FOnGetLoadDriverPrivileges write FOnGetLoadDriverPrivileges;

property OnGetShutdownPrivileges: TNotifyEvent read FOnGetShutdownPrivileges write FOnGetShutdownPrivileges;

Как видишь, все, как я и говорил: ключевое слово, read и write. Здесь я использовал лишь способ записи значения напрямую. Но свойством можно манипулировать и в процедуре. Это реализуется вот так:

Установка значения свойства через процедуру

private

FNoZero: integer;

procedure SetNoZero (Value: integer);

//обязательно Value и обязательно integer;

{skipped}

published

property NoZero: integer read FNoZero write SetNoZero

end;

{skipped}

procedure TMyClass.SetNoZero (Value: integer);

begin

if value<>0 then FNoZero:=Value;

end;

Еще существует возможность создания свойств с вариантами выбора, то есть напротив свойства будет не простое поле ввода, а выпадающий список. Делается это объявлением нового типа - перечисления и указанием его в качестве типа какой-нибудь переменной:

Пример объявления свойства с выбором варианта

type

TMySetClass=(mscSet, mscUnset, mscUnknown);

TMyComponent=class

private

FSetVar: TMySetClass;

published

SetVar:TMySetClass read FSetVar write FSetVar;

end;

Иконка компонента

Установив свой хакерский компонент, ты увидишь очень невзрачную иконку - такие прилепляют к каждому компоненту, не имеющему своей картинки. Чтобы ее изменить, надо проделать кое-какие манипуляции. Запусти ImageEditor из поставки Delphi. Выбери File -> New -> Component Resourse File. Появится окошко с одним пунктом - Contents. Щелкни по этому пункту правой кнопкой мыши и выбери New -> Bitmap. Размеры задай 24х24, 16 цветов тоже вполне хватит. Появится несколько подуровней: Bitmap -> Bitmap1. Bitmap1 переименуй по имени нашего класса.

Теперь дважды щелкни по этому пункту. В появившемся графическом редакторе нарисуй что-нибудь. Затем закрывай все это дело и сохраняй результат в папке с модулем компонента и с тем же именем, что у компонента. Открой пакет с предыдущей установкой компонента и удали оттуда все модули. Скомпилируй, установи, сохрани все. Теперь, если ты заново установишь наше детище, то увидишь уже новую, собственноручно нарисованную иконку на панельке.

Назад на стр. 075-106-3  Содержание  Вперед на стр. 075-106-5