Чтение онлайн

ЖАНРЫ

Советы по Delphi. Версия 1.4.3 от 1.1.2001

Озеров Валентин

Шрифт:

public

 property Canvas;

 function CellRect(ACol, ARow: Longint): TRect;

 property Col;

 property Row;

procedure Register;

implementation

procedure Register;

begin

 RegisterComponents('VUBudget', [TDBGridVUB]);

end;

function TDBGridVUB.CellRect(ACol, ARow: Longint): TRect;

begin

 Result := inherited CellRect(ACol, ARow);

end;

end.

Пример Drag and Drop

между двумя Dbgrid

Delphi 3

Данный пример компонента и демонстрационный проект показывают простой путь осуществления операции "drag and drop" (перетащи и брось) между двумя полями различных табличных сеток.

Запустите Delphi 3 (с незначительными изменениями данный код может работать и в Delphi 1-2).

Активизируйте File|New|Unit. Скопируйте приведенный ниже модуль MyDBGrid во вновь созданный модуль. Сделайте File|Save As. Сохраните модуль как MyDBGrid.pas.

Выберите пункт меню Component|Install Component. Переключитесь на страницу Info New Package. Поместите MyDBGrid.pas в поле редактирования "Unit file name" (имя файла модуля). Назовите модуль MyPackage.dpk. Ответьте Yes на вопрос Delphi 3 о необходимости сборки и установки пакета. Нажмите OK на сообщение Delphi 3 о необходимости включения VCL30.DPL. После этого пакет будет собран и установлен. Теперь компонент TMyDBGrid будет отображен в Палитре Компонентов в группе "Samples". Закройте редактор пакетов и сохраните пакет.

Выберите пункт меню File|New Application. Щелкните правой кнопкой мыши на форме (Form1) и выберите View As Text. Скопируйте приведенный ниже исходный код формы GridU1 в Form1. Щелкните правой кнопкой мыши на форме и выберите View As Form. Убедитесь в активности ваших таблиц. Скопируйте расположенный ниже модуль GridU1 в ваш модуль Unit1.

Выберите пункт меню File|Save Project As. Сохраните модуль как GridU1.pas. Сохраните проект как GridProj.dpr.

Теперь запустите проект и наслаждайтесь функцией Drag and Drop между двумя табличными сетками.

Модуль MyDBGrid

unit MyDBGrid;

interface

uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, Grids, DBGrids;

type TMyDBGrid = class(TDBGrid)

private

 { Private declarations }

 FOnMouseDown: TMouseEvent;

protected

 { Protected declarations }

 procedure MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); override;

published

 { Published declarations }

 property Row;

 property OnMouseDown read FOnMouseDown write FOnMouseDown;

end;

procedure Register;

implementation

procedure TMyDBGrid.MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Integer);

begin

 if Assigned(FOnMouseDown) then FOnMouseDown(Self, Button, Shift, X, Y);

 inherited MouseDown(Button, Shift, X, Y);

end;

procedure Register;

begin

 RegisterComponents('Samples', [TMyDBGrid]);

end;

end.

Модуль GridU1

unit GridU1;

interface

uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, Db, DBTables, Grids, DBGrids, MyDBGrid, StdCtrls;

type TForm1 = class(TForm)

 MyDBGrid1: TMyDBGrid;

 Table1: TTable;

 DataSource1: TDataSource;

 Table2: TTable;

 DataSource2: TDataSource;

 MyDBGrid2: TMyDBGrid;

 procedure MyDBGrid1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);

 procedure MyDBGrid1DragOver(Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean);

 procedure MyDBGrid1DragDrop(Sender, Source: TObject; X, Y: Integer);

private

 { Private declarations }

public

 { Public declarations }

end;

var Form1: TForm1;

implementation

{$R *.DFM}

Поделиться с друзьями: