git-svn-id: https://192.168.0.254/svn/Componentes.Terceros.DevExpressVCL@26 05c56307-c608-d34a-929d-697000501d7a
423 lines
14 KiB
ObjectPascal
423 lines
14 KiB
ObjectPascal
unit InspectorRLMain;
|
|
|
|
interface
|
|
|
|
uses
|
|
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
|
|
StdCtrls, ExtCtrls, dxCntner, dxInspct, Grids, DBGrids, Db, DBTables,
|
|
dxInspRw, ComCtrls, Buttons, DBCtrls, dxDBInsp, dxDBInRw, Menus,
|
|
dxPSCore, dxPSdxInsLnk, dxPSdxDBInsLnk, dxPSGlbl, dxPSUtl, dxPSEngn,
|
|
{dxPSPrVwAdv,} // enable for use of ExpressBars in PrintPreview
|
|
dxPrnPg, dxBkgnd, dxWrap, dxPrnDev, ImgList, dxExEdtr, dxPSCompsProvider,
|
|
dxPSFillPatterns, dxPSEdgePatterns;
|
|
|
|
type
|
|
TInspectorRLMainForm = class(TForm)
|
|
Panel1: TPanel;
|
|
Splitter1: TSplitter;
|
|
Panel2: TPanel;
|
|
DBGrid1: TDBGrid;
|
|
Panel3: TPanel;
|
|
Panel4: TPanel;
|
|
ImageList: TImageList;
|
|
GroupBox1: TGroupBox;
|
|
chbColumnSizing: TCheckBox;
|
|
chbEditing: TCheckBox;
|
|
chbTabs: TCheckBox;
|
|
chbTabThrough: TCheckBox;
|
|
chbAutoWidth: TCheckBox;
|
|
chbCancelOnExit: TCheckBox;
|
|
Label1: TLabel;
|
|
edMinColumnWidth: TEdit;
|
|
UpDown1: TUpDown;
|
|
rgPaintStyle: TRadioGroup;
|
|
BColor: TButton;
|
|
BFont: TButton;
|
|
FontDialog: TFontDialog;
|
|
ColorDialog: TColorDialog;
|
|
BGridColor: TButton;
|
|
chbDragDrop: TCheckBox;
|
|
chbCustomDraw: TCheckBox;
|
|
Image1: TImage;
|
|
dsContacts: TDataSource;
|
|
tProducts: TTable;
|
|
tProductsID: TIntegerField;
|
|
tProductsNAME: TStringField;
|
|
tProductsDescription: TStringField;
|
|
dxDBInspector: TdxDBInspector;
|
|
dxDBInspectorFirstName: TdxInspectorDBMaskRow;
|
|
dxDBInspectorLastName: TdxInspectorDBMaskRow;
|
|
dxDBInspectorCompany: TdxInspectorDBMaskRow;
|
|
dxDBInspectorPrefix: TdxInspectorDBMaskRow;
|
|
dxDBInspectorTitle: TdxInspectorDBMaskRow;
|
|
dxDBInspectorAddress: TdxInspectorDBMaskRow;
|
|
dxDBInspectorCity: TdxInspectorDBMaskRow;
|
|
dxDBInspectorZipCode: TdxInspectorDBMaskRow;
|
|
dxDBInspectorSource: TdxInspectorDBMaskRow;
|
|
dxDBInspectorPurchaseDate: TdxInspectorDBDateRow;
|
|
dxDBInspectorHomePhone: TdxInspectorDBMaskRow;
|
|
dxDBInspectorFaxPhone: TdxInspectorDBMaskRow;
|
|
dxDBInspectorSpouse: TdxInspectorDBMaskRow;
|
|
dxDBInspectorOccupation: TdxInspectorDBMaskRow;
|
|
dxDBInspectorDescription: TdxInspectorBlobRow;
|
|
dxDBInspectorproduct: TdxInspectorLookupRow;
|
|
dxDBInspectorCustName: TdxInspectorDBRow;
|
|
dxDBInspectorImage: TdxInspectorBlobRow;
|
|
DBNavigator1: TDBNavigator;
|
|
chbFlat: TCheckBox;
|
|
chbEnterThrough: TCheckBox;
|
|
dxDBInspectorRow23: TdxInspectorDBButtonRow;
|
|
dxDBInspectorCustomer: TdxInspectorDBCheckRow;
|
|
dxDBInspectorPaymentType: TdxInspectorDBImageRow;
|
|
dxDBInspectorPaymentAmount: TdxInspectorDBCalcRow;
|
|
dxDBInspectorState: TdxInspectorDBPickRow;
|
|
chbNoCancel: TCheckBox;
|
|
chbDrawEndEllipsis: TCheckBox;
|
|
tContacts: TTable;
|
|
tContactsID: TAutoIncField;
|
|
tContactsProductID: TIntegerField;
|
|
tContactsFirstName: TStringField;
|
|
tContactsLastName: TStringField;
|
|
tContactsCompany: TStringField;
|
|
tContactsPrefix: TStringField;
|
|
tContactsTitle: TStringField;
|
|
tContactsAddress: TStringField;
|
|
tContactsCity: TStringField;
|
|
tContactsState: TStringField;
|
|
tContactsZipCode: TStringField;
|
|
tContactsSource: TStringField;
|
|
tContactsCustomer: TStringField;
|
|
tContactsPurchaseDate: TDateField;
|
|
tContactsHomePhone: TStringField;
|
|
tContactsFaxPhone: TStringField;
|
|
tContactsPaymentType: TStringField;
|
|
tContactsSpouse: TStringField;
|
|
tContactsOccupation: TStringField;
|
|
tContactsPaymentAmount: TBCDField;
|
|
tContactsDescription: TMemoField;
|
|
tContactsproduct: TStringField;
|
|
tContactsCustName: TStringField;
|
|
chbShowRowHint: TCheckBox;
|
|
tContactsPicture: TGraphicField;
|
|
tContactsCurrency: TCurrencyField;
|
|
tContactsTime: TTimeField;
|
|
tContactsHyperLink: TStringField;
|
|
dxComponentPrinter1: TdxComponentPrinter;
|
|
dxComponentPrinter1Link1: TdxDBInspectorReportLink;
|
|
BDesign: TSpeedButton;
|
|
BPreview: TSpeedButton;
|
|
BPrint: TSpeedButton;
|
|
procedure dxDBInspectorRow23EditButtonClick(Sender: TObject);
|
|
procedure chbColumnSizingClick(Sender: TObject);
|
|
procedure FormCreate(Sender: TObject);
|
|
procedure rgPaintStyleClick(Sender: TObject);
|
|
procedure edMinColumnWidthKeyDown(Sender: TObject; var Key: Word;
|
|
Shift: TShiftState);
|
|
procedure UpDown1Changing(Sender: TObject; var AllowChange: Boolean);
|
|
procedure BColorClick(Sender: TObject);
|
|
procedure BFontClick(Sender: TObject);
|
|
procedure BGridColorClick(Sender: TObject);
|
|
procedure dxDBInspectorDragOver(Sender, Source: TObject; X, Y: Integer;
|
|
State: TDragState; var Accept: Boolean);
|
|
procedure dxDBInspectorDragDrop(Sender, Source: TObject; X,
|
|
Y: Integer);
|
|
procedure chbDragDropClick(Sender: TObject);
|
|
procedure Image1DragOver(Sender, Source: TObject; X, Y: Integer;
|
|
State: TDragState; var Accept: Boolean);
|
|
procedure Image1DragDrop(Sender, Source: TObject; X, Y: Integer);
|
|
procedure dxDBInspectorDrawCaption(Sender: TdxInspectorRow;
|
|
ACanvas: TCanvas; ARect: TRect; var AText: String; AFont: TFont;
|
|
var AColor: TColor; var ADone: Boolean);
|
|
procedure chbCustomDrawClick(Sender: TObject);
|
|
procedure DBGrid1ColEnter(Sender: TObject);
|
|
procedure chbFlatClick(Sender: TObject);
|
|
procedure chbShowRowHintClick(Sender: TObject);
|
|
procedure tContactsCalcFields(DataSet: TDataSet);
|
|
procedure BDesignClick(Sender: TObject);
|
|
procedure BPreviewClick(Sender: TObject);
|
|
procedure BPrintClick(Sender: TObject);
|
|
procedure dxComponentPrinter1Link1CustomDrawCaption(
|
|
Sender: TBasedxReportLink; ARow: TdxInspectorRow; ACanvas: TCanvas;
|
|
ABoundsRect, AClientRect: TRect; var AText: String;
|
|
var AColor: TColor; AFont: TFont; var ATextAlignX: TdxTextAlignX;
|
|
var ATextAlignY: TdxTextAlignY; var ADone: Boolean);
|
|
private
|
|
FlagLoading: Boolean;
|
|
procedure CustomDraw(Sender: TdxInspectorRow; var AColor: TColor; AFont: TFont);
|
|
public
|
|
{ Public declarations }
|
|
end;
|
|
|
|
var
|
|
InspectorRLMainForm: TInspectorRLMainForm;
|
|
|
|
implementation
|
|
|
|
uses InspectorRLDialog;
|
|
|
|
{$R *.DFM}
|
|
|
|
procedure TInspectorRLMainForm.dxDBInspectorRow23EditButtonClick(Sender: TObject);
|
|
begin
|
|
InspectorRLDialogForm := TInspectorRLDialogForm.Create(nil);
|
|
try
|
|
InspectorRLDialogForm.ShowModal;
|
|
finally
|
|
InspectorRLDialogForm.Free;
|
|
end;
|
|
end;
|
|
|
|
procedure TInspectorRLMainForm.FormCreate(Sender: TObject);
|
|
begin
|
|
tProducts.DataBaseName := ExtractFilePath(Application.ExeName) + '..\..\Data\';
|
|
tProducts.Open;
|
|
tContacts.DataBaseName := tProducts.DataBaseName;
|
|
tContacts.Open;
|
|
// check boxes
|
|
FlagLoading := True;
|
|
try
|
|
chbColumnSizing.Checked := dioColumnSizing in dxDBInspector.Options;
|
|
chbEditing.Checked := dioEditing in dxDBInspector.Options;
|
|
chbTabs.Checked := dioTabs in dxDBInspector.Options;
|
|
chbTabThrough.Checked := dioTabThrough in dxDBInspector.Options;
|
|
chbAutoWidth.Checked := dioAutoWidth in dxDBInspector.Options;
|
|
chbCancelOnExit.Checked := dioCancelOnExit in dxDBInspector.Options;
|
|
chbEnterThrough.Checked := dioEnterThrough in dxDBInspector.Options;
|
|
chbNoCancel.Checked := dioNoCancel in dxDBInspector.Options;
|
|
chbDrawEndEllipsis.Checked := dioDrawEndEllipsis in dxDBInspector.Options;
|
|
finally
|
|
FlagLoading := False;
|
|
end;
|
|
// other
|
|
rgPaintStyle.ItemIndex := Integer(dxDBInspector.PaintStyle);
|
|
UpDown1.Position := dxDBInspector.MinColumnWidth;
|
|
Image1.ControlStyle := Image1.ControlStyle + [csDisplayDragImage];
|
|
chbShowRowHint.Checked := dxDBInspector.ShowRowHint;
|
|
end;
|
|
|
|
procedure TInspectorRLMainForm.chbColumnSizingClick(Sender: TObject);
|
|
begin
|
|
if FlagLoading then Exit;
|
|
// Change Options
|
|
if TCheckBox(Sender).Checked then
|
|
dxDBInspector.Options := dxDBInspector.Options + [TdxDBInspectorOption(TabOrder - chbColumnSizing.TabOrder)]
|
|
else
|
|
dxDBInspector.Options := dxDBInspector.Options - [TdxDBInspectorOption(TabOrder - chbColumnSizing.TabOrder)];
|
|
end;
|
|
|
|
procedure TInspectorRLMainForm.rgPaintStyleClick(Sender: TObject);
|
|
begin
|
|
dxDBInspector.PaintStyle := TdxInspectorPaintStyle(rgPaintStyle.ItemIndex);
|
|
end;
|
|
|
|
procedure TInspectorRLMainForm.edMinColumnWidthKeyDown(Sender: TObject; var Key: Word;
|
|
Shift: TShiftState);
|
|
var
|
|
b: Boolean;
|
|
begin
|
|
case Key of
|
|
VK_RETURN: UpDown1Changing(nil, b);
|
|
VK_ESCAPE: edMinColumnWidth.Text := IntToStr(dxDBInspector.MinColumnWidth);
|
|
end;
|
|
end;
|
|
|
|
procedure TInspectorRLMainForm.UpDown1Changing(Sender: TObject;
|
|
var AllowChange: Boolean);
|
|
begin
|
|
UpDown1.OnChanging := nil;
|
|
dxDBInspector.MinColumnWidth := StrToInt(edMinColumnWidth.Text);
|
|
UpDown1.Position := dxDBInspector.MinColumnWidth;
|
|
edMinColumnWidth.Text := IntToStr(dxDBInspector.MinColumnWidth);
|
|
UpDown1.OnChanging := UpDown1Changing;
|
|
end;
|
|
|
|
procedure TInspectorRLMainForm.BColorClick(Sender: TObject);
|
|
begin
|
|
if ColorDialog.Execute then
|
|
dxDBInspector.Color := ColorDialog.Color;
|
|
end;
|
|
|
|
procedure TInspectorRLMainForm.BFontClick(Sender: TObject);
|
|
begin
|
|
if FontDialog.Execute then
|
|
dxDBInspector.Font.Assign(FontDialog.Font);
|
|
end;
|
|
|
|
procedure TInspectorRLMainForm.BGridColorClick(Sender: TObject);
|
|
begin
|
|
if ColorDialog.Execute then
|
|
dxDBInspector.GridColor := ColorDialog.Color;
|
|
end;
|
|
|
|
procedure TInspectorRLMainForm.dxDBInspectorDragOver(Sender, Source: TObject; X,
|
|
Y: Integer; State: TDragState; var Accept: Boolean);
|
|
var
|
|
hTest : TdxInspectorHitTest;
|
|
begin
|
|
if Source = dxDBInspector then
|
|
begin
|
|
Accept:= True;
|
|
if dxDBInspector.DragNode = nil then
|
|
begin
|
|
Accept:= False;
|
|
Exit;
|
|
end;
|
|
hTest := dxDBInspector.GetHitTestInfoAt(X, Y);
|
|
case hTest of
|
|
ihtIndent, ihtButton, ihtDisplayLabel : dxDBInspector.DragCursor := 1;
|
|
ihtLabel, ihtColumnEdge : dxDBInspector.DragCursor := 2;
|
|
ihtNowhere : dxDBInspector.DragCursor := 3;
|
|
end;
|
|
end
|
|
else
|
|
Accept:= False;
|
|
end;
|
|
|
|
procedure TInspectorRLMainForm.dxDBInspectorDragDrop(Sender, Source: TObject; X,
|
|
Y: Integer);
|
|
var
|
|
AItem, AnItem: TdxInspectorNode;
|
|
AttachMode: TdxInspectorNodeAttachMode;
|
|
HT: TdxInspectorHitTest;
|
|
begin
|
|
if Source = dxDBInspector then
|
|
with dxDBInspector do
|
|
begin
|
|
HT := GetHitTestInfoAt(X, Y);
|
|
AnItem := GetNodeAt(X, Y);
|
|
if HT in [ihtNowhere, ihtColumnEdge, ihtIndent, ihtButton, ihtLabel, ihtDisplayLabel] then
|
|
begin
|
|
AttachMode := inaAddChild;
|
|
if HT in [ihtLabel] then
|
|
AttachMode := inaAddChild
|
|
else if HT = ihtNowhere then
|
|
begin
|
|
AnItem := Items[0];
|
|
AttachMode := inaAdd;
|
|
end
|
|
else
|
|
if HT in [ihtIndent, ihtButton, ihtDisplayLabel] then AttachMode := inaInsert;
|
|
AItem := DragNode;
|
|
// move rows in DBInspector
|
|
if (AItem <> nil) and (AnItem <> nil) then
|
|
begin
|
|
AItem.MoveTo(AnItem, AttachMode);
|
|
end;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
procedure TInspectorRLMainForm.chbDragDropClick(Sender: TObject);
|
|
begin
|
|
with (SEnder as TCheckBox) do
|
|
if Checked then
|
|
dxDBInspector.DragMode := dmAutomatic
|
|
else dxDBInspector.DragMode := dmManual;
|
|
end;
|
|
|
|
procedure TInspectorRLMainForm.Image1DragOver(Sender, Source: TObject; X, Y: Integer;
|
|
State: TDragState; var Accept: Boolean);
|
|
begin
|
|
Accept := True;
|
|
dxDBInspector.DragCursor := 4;
|
|
end;
|
|
|
|
procedure TInspectorRLMainForm.Image1DragDrop(Sender, Source: TObject; X, Y: Integer);
|
|
begin
|
|
if Source = dxDBInspector then
|
|
with dxDBInspector do
|
|
begin
|
|
if DragNode <> nil then
|
|
DragNode.Free;
|
|
end;
|
|
end;
|
|
|
|
procedure TInspectorRLMainForm.dxDBInspectorDrawCaption(Sender: TdxInspectorRow;
|
|
ACanvas: TCanvas; ARect: TRect; var AText: String; AFont: TFont;
|
|
var AColor: TColor; var ADone: Boolean);
|
|
begin
|
|
CustomDraw(Sender, AColor, AFont);
|
|
end;
|
|
|
|
procedure TInspectorRLMainForm.chbCustomDrawClick(Sender: TObject);
|
|
begin
|
|
dxDBInspector.Refresh;
|
|
end;
|
|
|
|
procedure TInspectorRLMainForm.DBGrid1ColEnter(Sender: TObject);
|
|
begin
|
|
dxDBInspector.FocusedField := DBGrid1.SelectedField;
|
|
end;
|
|
|
|
procedure TInspectorRLMainForm.chbFlatClick(Sender: TObject);
|
|
begin
|
|
dxDBInspector.Flat := not dxDBInspector.Flat;
|
|
end;
|
|
|
|
procedure TInspectorRLMainForm.chbShowRowHintClick(Sender: TObject);
|
|
begin
|
|
dxDBInspector.ShowRowHint := chbShowRowHint.Checked;
|
|
end;
|
|
|
|
procedure TInspectorRLMainForm.tContactsCalcFields(DataSet: TDataSet);
|
|
begin
|
|
tcontactsCustName.Value := tcontactsFirstName.Value + ' ' + tcontactsLastName.Value;
|
|
end;
|
|
|
|
procedure TInspectorRLMainForm.BDesignClick(Sender: TObject);
|
|
begin
|
|
dxComponentPrinter1.DesignReport(nil);
|
|
end;
|
|
|
|
procedure TInspectorRLMainForm.BPreviewClick(Sender: TObject);
|
|
begin
|
|
dxComponentPrinter1.Preview(True, nil);
|
|
end;
|
|
|
|
procedure TInspectorRLMainForm.BPrintClick(Sender: TObject);
|
|
begin
|
|
dxComponentPrinter1.Print(True, nil, nil);
|
|
end;
|
|
|
|
procedure TInspectorRLMainForm.dxComponentPrinter1Link1CustomDrawCaption(
|
|
Sender: TBasedxReportLink; ARow: TdxInspectorRow; ACanvas: TCanvas;
|
|
ABoundsRect, AClientRect: TRect; var AText: String; var AColor: TColor;
|
|
AFont: TFont; var ATextAlignX: TdxTextAlignX;
|
|
var ATextAlignY: TdxTextAlignY; var ADone: Boolean);
|
|
begin
|
|
CustomDraw(ARow, AColor, AFont);
|
|
end;
|
|
|
|
procedure TInspectorRLMainForm.CustomDraw(Sender: TdxInspectorRow; var AColor: TColor; AFont: TFont);
|
|
begin
|
|
if not chbCustomDraw.Checked then Exit;
|
|
if Sender.Node.Count > 0 then
|
|
begin
|
|
AFont.Style := [fsBold];
|
|
if Sender.Node.Focused then
|
|
AFont.Color := clBlue;
|
|
AColor := clAqua;
|
|
end
|
|
else
|
|
if Sender.Node.Parent <> nil then
|
|
begin
|
|
AFont.Style := [fsItalic];
|
|
AColor := clLime;
|
|
if Sender.Node.Focused then
|
|
AFont.Color := clBlue;
|
|
end
|
|
else
|
|
if Sender.Node.Focused then
|
|
if (dxDBInspector.PaintStyle <> ipsSimple) then
|
|
AFont.Color := clNavy;
|
|
end;
|
|
|
|
|
|
initialization
|
|
Screen.Cursors[1] := LoadCursor(HInstance, 'DRAG_INSERT');
|
|
Screen.Cursors[2] := LoadCursor(HInstance, 'DRAG_ADDCHILD');
|
|
Screen.Cursors[3] := LoadCursor(HInstance, 'DRAG_ADD');
|
|
Screen.Cursors[4] := LoadCursor(HInstance, 'DRAG_KILL');
|
|
|
|
end.
|