BSGrid — Создаём собственный DBgrid. Часть 1.

2010-06-13 papirosnik Delphi

Этот топик открывает цикл статей на тему создания собственных компонент Delphi.

Будем создавать собственный вариант компоненты DBGrid. Расширять её функционал, приближая его к платному EhGrid из библиотеки EhLiB.

В качестве среды разработки используется Embarcadero ® Delphi ® 2010. Выбор обусловлен тем, что компания Embarcadero® является правоприемницей Borland и теперь самостоятельно разрабатывает линейку продуктов Delphi и C++ Builder. Соответственно, созднаие компонент для среды C++ Builder будет практически аналогичным, поэтому отдельные нюансы рассматриваться не будут. Более того, компоненты разработанные в одной среде, можно успешно использовать в другой. Указанная версия Delphi является текущей на данный момент, имеет современную среду разработки, наконец-то полноценно поддерживает юникод-строки, вводит много полезных новшеств как в среду разработки, так и собственно в язык Delphi (Object Pascal).

Будем считать что Ваша среда установлена и корректно работает. Для создания новой компоненты (или нового компонента? — не принципиально, будем использовать так, как напишется :)) необходимо выбрать в главном меню программы Component->New VCL Component. Появится окно, предлагающее выбрать нам предка нашего нового компонента BSGrid. В качестве предка выбираем стандартный TDBGrid и жмём Next>>.
В очередном появившемся необходимо ввести имя нашего класса. Вводим TBSGrid (префикс T является стандартным по соглашению для типа, в данном случае у нас тип класса). Palette Page изменим со стандартного Sample на BS (BS я трактую как Bumper Soft — своего рода мой собственный лого — вы вольны выбрать любое другое имя). Это делать не обязательно, но мы хотим, чтобы все наши новые компоненты располагались на вкладке BS. В Unit name укажем файл, в которм будет располагаться исходный текст компоненты. Можно оставить предлагаемый по умолчанию, но лучше задать какой-то свой файл в определённой папке. Search path оставляем без изменений. Жмём Next>>.

Получаем окошко, в котором надо выбрать, в какой пакет размещать создаваемую компоненту:

  • Create Unit
  • Install to Existing Package
  • Install to New Package

Если идти по пути наименьшего сопротивления, то следует выбрать второй вариант. Но для нас будет более удобно, если все наши новые компоненты располагаются на отдельной вкладке, то и хранить их будем в отдельном пакете. Поэтому выбираем Install to New Package и жмём Next>>.

В очередном (нет — последнем :)) окошке вводим BS в поле Package name и в поле Description вбиваем произвольное описание для нашего пакета. Я ввёл Bumper Soft Components. Finish.

Тут же появляется окошко, предлагающее сделать Save BSGrid as… Ткните его в ту папку, куда вы хотите сохранить ваш модуль (можно в ту же, что мы задавали на начальном этапе). Происходит сохранение, мгновенная компиляция (за что хвала Embarcadero — Microsoft Visual Studio это компилировала бы минуты две :)) и — ву а ля…. мы получили что-то вроде этого:

BSGrid done!

Тут нам сказали, что у нас успешно завёлся новый пакет (package), в нём находится один компонент TBSGrid. Пока он полностью аналогичен стандартному TDBgrid. Но в открывшемся окне редактора мы наблюдаем модуль нашего нового компонента, готовый к дополнению. В следующей части этого цикла статей мы начнём придавать ему индивидуальные и полезные качества. А пока он выглядит просто как заготовка для правки:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
unit BSGrid;
 
interface
 
uses
SysUtils, Classes, Controls, Grids, DBGrids;
 
type
TBSGrid = class(TDBGrid)
private
{ Private declarations }
protected
{ Protected declarations }
public
{ Public declarations }
published
{ Published declarations }
end;
 
procedure Register;
 
implementation
 
procedure Register;
begin
RegisterComponents('BS', [TBSGrid]);
end;
 
end.

BSGrid, Bumper soft, DBGrid, Delphi, Embarcadero,

3 комментария to “BSGrid — Создаём собственный DBgrid. Часть 1.”


Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Powered by WordPress. Designed by elogi.