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