Издательский дом ООО "Гейм Лэнд"СПЕЦВЫПУСК ЖУРНАЛА ХАКЕР #65, АПРЕЛЬ 2006 г.

удобный визуальный комбайн

ВИТАЛИЙ ИЖЕВСКИЙ

Спецвыпуск: Хакер, номер #065, стр. 065-062-4


[компонентный подход] предоставляет явные преимущества. А что делать, если нет нужного или если то, что есть, не обеспечивает желательный функционал программы?

Выход 1

Интернет просто кишит разного рода компонентами, а форумы — соответствующими темами по Delphi. Трудно выбрать нужное из такой массы или найти компонент именно под используемую версию. К тому же, если ты воспользовался сторонними компонентами, программа начинает работать так, как хотел разработчик компонентов, а не как хотел ты. Тебе достанутся ошибки разработчика, его неоптимальный код, его тормоза в работе программы и т.д. Не обольщайся, идеальных программ просто не бывает — их разрабатывают люди.

Выход 2

Неужели руки большинства разработчиков растут настолько криво? Что, нельзя уже и собственными компонентами обзавестись? Конечно, на такой случай никто не станет изобретать велосипед, но бывает, что не удается найти именно велосипед. В Delphi используется обычная объектная модель и каждый компонент является потомком какого-нибудь базового класса. Работает нормальная наследуемость свойств и методов, их переопределение. Приведем простенький пример создания собственного компонента (в конце концов, все не так сложно). Запускаешь Delphi for Microsoft Win32. Выбираешь тип проекта: Delphi Projects\Delphi Files-> Component...

Появляется окно выбора компонента, потомком которого будет наш собственный компонент. Мы хотим просто добавить некое свойство MyInt к стандартному набору свойств компонента TButton — выбираем его и указываем, на какой вкладке палитры компонентов должен быть помещен новый компонент.

unit Button1;

interface

uses

SysUtils, Classes, Controls, StdCtrls;

type

TMyButton = class(TButton)

private

{ Private declarations }

FMyInt: Integer;

procedure SetMyInt(const Value: Integer);

function GetMyInt: Integer;

protected

{ Protected declarations }

public

{ Public declarations }

published

{ Published declarations }

property MyInt:Integer read GetMyInt write SetMyInt;

end;

procedure Register;

implementation

procedure Register;

begin

RegisterComponents('Samples', [TMyButton]);

end;

function TMyButton.GetMyInt: Integer;

begin

result := FMyInt;

end;

procedure TMyButton.SetMyInt(const Value: Integer);

begin

FMyInt := Value;

end;

end.

Компилируем проект через <Shift>+<F9> или Project\Build Paqckage1. В директории, выставленной по умолчанию для новых проектов, появится файл Package1.bpl. Теперь закрыть все и открыть меню Component\Install Packages. Добавить путь к указанному файлу, нажать вездесущую кнопку ОК. Теперь, если будет создан новый проект для Win32 и если будет открыта вкладка Samples, то можно поместить на форму компонент MyButton, уже содержащий новое свойство MyInt.

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