git-svn-id: https://192.168.0.254/svn/Componentes.Terceros.DevExpressVCL@8 05c56307-c608-d34a-929d-697000501d7a
986 lines
36 KiB
ObjectPascal
986 lines
36 KiB
ObjectPascal
unit CustomDrawTableViewDemoMain;
|
|
|
|
{$I ..\..\cxVer.inc}
|
|
|
|
interface
|
|
|
|
uses
|
|
{$IFDEF DELPHI6}
|
|
Variants,
|
|
{$ENDIF}
|
|
Jpeg,
|
|
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
|
|
Dialogs, cxControls, cxLookupGrid, cxLookupDBGrid, cxGridCustomTableView,
|
|
cxGridTableView, cxGridDBTableView, cxGridLevel, cxGridCustomView, cxGrid,
|
|
cxMaskEdit, StdCtrls, ExtCtrls, cxContainer, cxEdit, cxTextEdit, cxDropDownEdit,
|
|
cxDBEdit, cxStyles, Menus, ActnList, ImgList, ComCtrls, cxLookAndFeels,
|
|
cxGraphics, ToolWin, cxGridCustomPopupMenu, cxGridPopupMenu,
|
|
DB, cxBlobEdit, cxCustomData, cxFilter, cxData, cxDBData, cxClasses, cxLookAndFeelPainters,
|
|
cxDataStorage, cxTimeEdit, cxImageComboBox, DemoUtils;
|
|
|
|
type
|
|
TCustomDrawTableViewDemoMainForm = class(TForm)
|
|
mmMain: TMainMenu;
|
|
miAbout: TMenuItem;
|
|
miFile: TMenuItem;
|
|
miOptions: TMenuItem;
|
|
miExit: TMenuItem;
|
|
sbMain: TStatusBar;
|
|
lbDescrip: TLabel;
|
|
miSeparator1: TMenuItem;
|
|
miLookFeel: TMenuItem;
|
|
miKind: TMenuItem;
|
|
miFlat: TMenuItem;
|
|
miStandard: TMenuItem;
|
|
miUltraFlat: TMenuItem;
|
|
miNativeStyle: TMenuItem;
|
|
OpenDialog: TOpenDialog;
|
|
FontDialog: TFontDialog;
|
|
cxgCars: TcxGrid;
|
|
tvCars: TcxGridDBTableView;
|
|
lvCars: TcxGridLevel;
|
|
lvOrders: TcxGridLevel;
|
|
tvOrders: TcxGridDBTableView;
|
|
miCustomDrawStylesEditor: TMenuItem;
|
|
tvCarsTrademark: TcxGridDBColumn;
|
|
tvCarsModel: TcxGridDBColumn;
|
|
tvCarsHP: TcxGridDBColumn;
|
|
tvCarsLiter: TcxGridDBColumn;
|
|
tvCarsCyl: TcxGridDBColumn;
|
|
tvCarsTransmissSpeedCount: TcxGridDBColumn;
|
|
tvCarsMPG_City: TcxGridDBColumn;
|
|
tvCarsMPG_Highway: TcxGridDBColumn;
|
|
tvCarsCategory: TcxGridDBColumn;
|
|
tvCarsDescription: TcxGridDBColumn;
|
|
tvCarsPicture: TcxGridDBColumn;
|
|
tvCarsPrice: TcxGridDBColumn;
|
|
tvOrdersPurchaseDate: TcxGridDBColumn;
|
|
tvOrdersTime: TcxGridDBColumn;
|
|
tvOrdersPaymentType: TcxGridDBColumn;
|
|
tvOrdersPaymentAmount: TcxGridDBColumn;
|
|
tvOrdersQuantity: TcxGridDBColumn;
|
|
imPaymentType: TImageList;
|
|
imIndicatorImages: TImageList;
|
|
LookAndFeelController: TcxLookAndFeelController;
|
|
procedure miAboutClick(Sender: TObject);
|
|
procedure miExitClick(Sender: TObject);
|
|
procedure miNativeStyleClick(Sender: TObject);
|
|
procedure miLookAndFeelKindClick(Sender: TObject);
|
|
procedure tvCarsCustomDrawCell(Sender: TcxCustomGridTableView;
|
|
ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo;
|
|
var ADone: Boolean);
|
|
procedure FormCreate(Sender: TObject);
|
|
procedure FormDestroy(Sender: TObject);
|
|
procedure FormShow(Sender: TObject);
|
|
procedure tvOrdersCustomDrawCell(Sender: TcxCustomGridTableView;
|
|
ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo;
|
|
var ADone: Boolean);
|
|
procedure miCustomDrawEditorClick(Sender: TObject);
|
|
procedure tvCarsCustomDrawColumnHeader(Sender: TcxGridTableView;
|
|
ACanvas: TcxCanvas; AViewInfo: TcxGridColumnHeaderViewInfo;
|
|
var ADone: Boolean);
|
|
procedure tvCarsCustomDrawFooterCell(Sender: TcxGridTableView;
|
|
ACanvas: TcxCanvas; AViewInfo: TcxGridColumnHeaderViewInfo;
|
|
var ADone: Boolean);
|
|
procedure tvCarsCustomDrawPartBackground(Sender: TcxCustomGridTableView;
|
|
ACanvas: TcxCanvas; AViewInfo: TcxCustomGridCellViewInfo;
|
|
var ADone: Boolean);
|
|
procedure tvOrdersCustomDrawColumnHeader(Sender: TcxGridTableView;
|
|
ACanvas: TcxCanvas; AViewInfo: TcxGridColumnHeaderViewInfo;
|
|
var ADone: Boolean);
|
|
procedure tvOrdersCustomDrawFooterCell(Sender: TcxGridTableView;
|
|
ACanvas: TcxCanvas; AViewInfo: TcxGridColumnHeaderViewInfo;
|
|
var ADone: Boolean);
|
|
procedure tvOrdersCustomDrawPartBackground(Sender: TcxCustomGridTableView;
|
|
ACanvas: TcxCanvas; AViewInfo: TcxCustomGridCellViewInfo;
|
|
var ADone: Boolean);
|
|
procedure tvCarsCustomDrawGroupCell(Sender: TcxCustomGridTableView;
|
|
ACanvas: TcxCanvas; AViewInfo: TcxGridTableCellViewInfo;
|
|
var ADone: Boolean);
|
|
procedure tvOrdersCustomDrawGroupCell(Sender: TcxCustomGridTableView;
|
|
ACanvas: TcxCanvas; AViewInfo: TcxGridTableCellViewInfo;
|
|
var ADone: Boolean);
|
|
procedure tvCarsCustomDrawIndicatorCell(Sender: TcxGridTableView;
|
|
ACanvas: TcxCanvas; AViewInfo: TcxCustomGridIndicatorItemViewInfo;
|
|
var ADone: Boolean);
|
|
procedure tvOrdersCustomDrawIndicatorCell(Sender: TcxGridTableView;
|
|
ACanvas: TcxCanvas; AViewInfo: TcxCustomGridIndicatorItemViewInfo;
|
|
var ADone: Boolean);
|
|
private
|
|
FCustomDrawingStyle: TCustomDrawingStyleArr;
|
|
FColorScheme: TColorSchemes;
|
|
FSkyBitmap, FEgyptBitmap, FMyFaceBitmap, FTileBitmap: TBitMap;
|
|
FGridBrushMasterCell,
|
|
FGridBrushMasterGroupCell,
|
|
FGridBrushMasterFooterCell,
|
|
FGridBrushMasterColumnHeader,
|
|
FGridBrushMasterIndicatorCell,
|
|
FGridBrushMasterPartBackground,
|
|
|
|
FGridBrushDetailCell,
|
|
FGridBrushDetailGroupCell,
|
|
FGridBrushDetailFooterCell,
|
|
FGridBrushDetailColumnHeader,
|
|
FGridBrushDetailIndicatorCell,
|
|
FGridBrushDetailPartBackground: TBrush;
|
|
FBitMap: TBitMap;
|
|
FFonts: TFonts;
|
|
FBkImages: TBkImages;
|
|
FIndicatorImageIndex: array [0..1] of Integer;
|
|
function GetIndicatorImageIndex(AViewType: TViewType): Integer;
|
|
procedure SetIndicatorImageIndex(AViewType: TViewType;
|
|
const Value: Integer);
|
|
protected
|
|
procedure SetCustomDrawingStyle(AViewType: TViewType; ACustomDrawArea: TCustomDrawArea; const Value: TCustomDrawingStyle);
|
|
function GetCustomDrawingStyle(AViewType: TViewType; ACustomDrawArea: TCustomDrawArea): TCustomDrawingStyle;
|
|
|
|
procedure SetCustomDrawingStyles;
|
|
|
|
function GetCustomBkImage(AViewType: TViewType; ACustomDrawArea: TCustomDrawArea): TBkImage;
|
|
procedure SetCustomBkImage(AViewType: TViewType; ACustomDrawArea: TCustomDrawArea; AValue: TBkImage);
|
|
|
|
function GetCustomColorScheme(AViewType: TViewType; ACustomDrawArea: TCustomDrawArea): TColorScheme;
|
|
procedure SetCustomColorScheme(AViewType: TViewType; ACustomDrawArea: TCustomDrawArea; const Value: TColorScheme);
|
|
|
|
procedure SetUserDefineBitmap(AViewType: TViewType; ACustomDrawArea: TCustomDrawArea; const Value: TBitmap);
|
|
function GetFont(AViewType: TViewType; ACustomDrawArea: TCustomDrawArea): TFont;
|
|
procedure SetFont(AViewType: TViewType; ACustomDrawArea: TCustomDrawArea; const Value: TFont);
|
|
procedure InitFonts;
|
|
public
|
|
property CustomDrawingStyle[AViewType: TViewType; ACustomDrawArea: TCustomDrawArea]: TCustomDrawingStyle read GetCustomDrawingStyle write SetCustomDrawingStyle;
|
|
property CustomBkImage[AViewType: TViewType; ACustomDrawArea: TCustomDrawArea]: TBkImage read GetCustomBkImage write SetCustomBkImage;
|
|
property CustomColorScheme[AViewType: TViewType; ACustomDrawArea: TCustomDrawArea]: TColorScheme read GetCustomColorScheme write SetCustomColorScheme;
|
|
property UserDefindedBitmap[AViewType: TViewType; ACustomDrawArea: TCustomDrawArea]: TBitmap write SetUserDefineBitmap;
|
|
property Fonts[AViewType: TViewType; ACustomDrawArea: TCustomDrawArea]: TFont read GetFont write SetFont;
|
|
property IndicatorImageIndex[AViewType: TViewType]:Integer read GetIndicatorImageIndex write SetIndicatorImageIndex;
|
|
end;
|
|
|
|
var
|
|
CustomDrawTableViewDemoMainForm: TCustomDrawTableViewDemoMainForm;
|
|
|
|
implementation
|
|
|
|
{$R *.dfm}
|
|
|
|
uses
|
|
cxGridCommon, CustomDrawTableViewDemoData, CustomDrawTableViewDemoStylesEditor,
|
|
AboutDemoForm;
|
|
|
|
procedure TCustomDrawTableViewDemoMainForm.InitFonts;
|
|
var
|
|
I, J: Integer;
|
|
begin
|
|
for I:=0 to High(FFonts) do
|
|
for J:=0 to High(FFonts[I]) do
|
|
FFonts[I, J] := TFont.Create;
|
|
end;
|
|
|
|
procedure TCustomDrawTableViewDemoMainForm.FormCreate(Sender: TObject);
|
|
begin
|
|
InitFonts;
|
|
|
|
FSkyBitmap := TBitMap.Create;
|
|
|
|
LoadImageFromRes(FSkyBitmap, 'SKY');
|
|
|
|
FEgyptBitmap := TBitmap.Create;
|
|
LoadImageFromRes(FEgyptBitmap, 'EGYPT');
|
|
|
|
FMyFaceBitmap := TBitmap.Create;
|
|
LoadImageFromRes(FMyFaceBitmap, 'MYFACE');
|
|
|
|
FTileBitmap := TBitmap.Create;
|
|
LoadImageFromRes(FTileBitmap, 'TILE');
|
|
|
|
FBitMap := TBitMap.Create;
|
|
SetCustomDrawingStyles;
|
|
end;
|
|
|
|
procedure TCustomDrawTableViewDemoMainForm.FormDestroy(Sender: TObject);
|
|
var
|
|
i, J: Integer;
|
|
begin
|
|
for I:=0 to High(FFonts) do
|
|
for J:=0 to High(FFonts[I]) do
|
|
FFonts[I, J].Free;
|
|
FBitMap.Free;
|
|
FEgyptBitmap.Free;
|
|
FMyFaceBitmap.Free;
|
|
FTileBitmap.Free;
|
|
FSkyBitmap.Free;
|
|
|
|
FGridBrushMasterCell.Free;
|
|
FGridBrushMasterGroupCell.Free;
|
|
FGridBrushMasterFooterCell.Free;
|
|
FGridBrushMasterColumnHeader.Free;
|
|
FGridBrushMasterIndicatorCell.Free;
|
|
FGridBrushMasterPartBackground.Free;
|
|
|
|
FGridBrushDetailCell.Free;
|
|
FGridBrushDetailGroupCell.Free;
|
|
FGridBrushDetailFooterCell.Free;
|
|
FGridBrushDetailColumnHeader.Free;
|
|
FGridBrushDetailIndicatorCell.Free;
|
|
FGridBrushDetailPartBackground.Free;
|
|
end;
|
|
|
|
procedure TCustomDrawTableViewDemoMainForm.miAboutClick(Sender: TObject);
|
|
begin
|
|
ShowAboutDemoForm;
|
|
end;
|
|
|
|
procedure TCustomDrawTableViewDemoMainForm.tvCarsCustomDrawCell(
|
|
Sender: TcxCustomGridTableView; ACanvas: TcxCanvas;
|
|
AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean);
|
|
var
|
|
ARec: TRect;
|
|
ATextToDraw, val: String;
|
|
AIsVertical: Boolean;
|
|
begin
|
|
ATextToDraw := AViewInfo.GridRecord.DisplayTexts[AViewInfo.Item.Index];
|
|
ARec := AViewInfo.Bounds;
|
|
ACanvas.Canvas.Font.Assign(FFonts[Integer(vtMaster), Integer(cdaCell)]);
|
|
case FCustomDrawingStyle[Integer(vtMaster), Integer(cdaCell)] of
|
|
cdsBkImage:
|
|
begin
|
|
ACanvas.Brush.Bitmap := nil;
|
|
ACanvas.Brush.Assign(FGridBrushMasterCell);
|
|
ACanvas.FillRect(ARec);
|
|
ACanvas.Brush.Bitmap := nil;
|
|
end;
|
|
cdsGradient:
|
|
begin
|
|
AIsVertical := (FColorScheme[Integer(vtMaster), Integer(cdaCell)] = csGrey) or (FColorScheme[Integer(vtMaster), Integer(cdaCell)] = csGold);
|
|
DrawGradient(ACanvas.Canvas, ARec, ColorScheme[Integer(FColorScheme[Integer(vtMaster), Integer(cdaCell)]), 1], ColorScheme[Integer(FColorScheme[Integer(vtMaster), Integer(cdaCell)]), 0], 40, AIsVertical)
|
|
end;
|
|
cdsDependOnData:
|
|
begin
|
|
ACanvas.Canvas.Brush.Style := bsSolid;
|
|
ACanvas.Canvas.Brush.Color := clBlueLight;
|
|
|
|
val := VarAsType(AViewInfo.GridRecord.DisplayTexts[tvCarsCategory.Index], varString);
|
|
if val = 'SPORTS' then
|
|
ACanvas.Canvas.Font.Color := clRed
|
|
else
|
|
if val = 'SALOON' then
|
|
ACanvas.Canvas.Font.Color := clBlue
|
|
else
|
|
if val = 'TRUCK' then
|
|
ACanvas.Canvas.Font.Color := clGreen;
|
|
ACanvas.Canvas.FillRect(ARec);
|
|
end;
|
|
end;
|
|
|
|
SetBkMode(ACanvas.Canvas.Handle, TRANSPARENT);
|
|
ADone := not (FCustomDrawingStyle[Integer(vtMaster), Integer(cdaCell)] in [cdsDefaultDrawing, cdsDependOnData]);
|
|
if ADone then
|
|
begin
|
|
InflateRect(ARec, -cxGridCellTextOffset, -cxGridCellTextOffset);
|
|
ACanvas.DrawText(ATextToDraw, ARec, 0);
|
|
end;
|
|
end;
|
|
|
|
procedure TCustomDrawTableViewDemoMainForm.tvCarsCustomDrawGroupCell(
|
|
Sender: TcxCustomGridTableView; ACanvas: TcxCanvas;
|
|
AViewInfo: TcxGridTableCellViewInfo; var ADone: Boolean);
|
|
var
|
|
ARec: TRect;
|
|
ATextToDraw: String;
|
|
AIsVertical: Boolean;
|
|
begin
|
|
ATextToDraw := AViewInfo.Text;
|
|
ARec := AViewInfo.Bounds;
|
|
ACanvas.Canvas.Font.Assign(FFonts[Integer(vtMaster), Integer(cdaGroupCell)]);
|
|
case FCustomDrawingStyle[Integer(vtMaster), Integer(cdaGroupCell)] of
|
|
cdsBkImage:
|
|
begin
|
|
ACanvas.Brush.Bitmap := nil;
|
|
ACanvas.Brush.Assign(FGridBrushMasterGroupCell);
|
|
ACanvas.FillRect(ARec);
|
|
ACanvas.Brush.Bitmap := nil;
|
|
end;
|
|
cdsGradient:
|
|
begin
|
|
AIsVertical := (FColorScheme[Integer(vtMaster), Integer(cdaGroupCell)] = csGrey) or (FColorScheme[Integer(vtMaster), Integer(cdaGroupCell)] = csGold);
|
|
DrawGradient(ACanvas.Canvas, ARec, ColorScheme[Integer(FColorScheme[Integer(vtMaster), Integer(cdaGroupCell)]), 1], ColorScheme[Integer(FColorScheme[Integer(vtMaster), Integer(cdaGroupCell)]), 0], 40, AIsVertical)
|
|
end;
|
|
end;
|
|
|
|
ADone := not (FCustomDrawingStyle[Integer(vtMaster), Integer(cdaGroupCell)] in [cdsDefaultDrawing]);
|
|
if ADone then
|
|
begin
|
|
SetBkMode(ACanvas.Canvas.Handle, TRANSPARENT);
|
|
ARec.Left := ARec.Left + (AViewInfo.RecordViewInfo.ExpandButtonBounds.Right - AViewInfo.RecordViewInfo.ExpandButtonBounds.Left) + 10;
|
|
ARec.Top := ARec.Top + cxGridCellTextOffset;
|
|
ACanvas.DrawText(ATextToDraw, ARec, 0);
|
|
end;
|
|
end;
|
|
|
|
procedure TCustomDrawTableViewDemoMainForm.tvCarsCustomDrawIndicatorCell(
|
|
Sender: TcxGridTableView; ACanvas: TcxCanvas;
|
|
AViewInfo: TcxCustomGridIndicatorItemViewInfo; var ADone: Boolean);
|
|
var
|
|
ARec: TRect;
|
|
AIsVertical: Boolean;
|
|
AIndicatorKind: TcxIndicatorKind;
|
|
X, Y: Integer;
|
|
begin
|
|
ARec := AViewInfo.Bounds;
|
|
ACanvas.Canvas.Font.Assign(FFonts[Integer(vtMaster), Integer(cdaIndicatorCell)]);
|
|
|
|
if not (AViewInfo is TcxGridIndicatorRowItemViewInfo) then
|
|
AIndicatorKind := ikNone
|
|
else
|
|
AIndicatorKind := TcxGridIndicatorRowItemViewInfo(AViewInfo).IndicatorKind;
|
|
|
|
case FCustomDrawingStyle[Integer(vtMaster), Integer(cdaIndicatorCell)] of
|
|
cdsBkImage:
|
|
begin
|
|
ACanvas.Brush.Bitmap := nil;
|
|
ACanvas.Brush.Assign(FGridBrushMasterIndicatorCell);
|
|
ACanvas.FillRect(ARec);
|
|
ACanvas.Brush.Bitmap := nil;
|
|
end;
|
|
cdsGradient:
|
|
begin
|
|
AIsVertical := (FColorScheme[Integer(vtMaster), Integer(cdaIndicatorCell)] = csGrey) or (FColorScheme[Integer(vtMaster), Integer(cdaIndicatorCell)] = csGold);
|
|
DrawGradient(ACanvas.Canvas, ARec, ColorScheme[Integer(FColorScheme[Integer(vtMaster), Integer(cdaGroupCell)]), 1], ColorScheme[Integer(FColorScheme[Integer(vtMaster), Integer(cdaIndicatorCell)]), 0], 40, AIsVertical)
|
|
end;
|
|
end;
|
|
if AIndicatorKind <> ikNone then
|
|
begin
|
|
with imIndicatorImages, ARec do
|
|
begin
|
|
X := (Left + Right - Width) div 2;
|
|
Y := (Top + Bottom - Height) div 2;
|
|
end;
|
|
imIndicatorImages.Draw(ACanvas.Canvas, X, Y, IndicatorImageIndex[vtMaster], True);
|
|
end;
|
|
|
|
ADone := not (FCustomDrawingStyle[Integer(vtMaster), Integer(cdaIndicatorCell)] in [cdsDefaultDrawing]);
|
|
end;
|
|
|
|
procedure TCustomDrawTableViewDemoMainForm.miExitClick(Sender: TObject);
|
|
begin
|
|
Close;
|
|
end;
|
|
|
|
procedure TCustomDrawTableViewDemoMainForm.miNativeStyleClick(Sender: TObject);
|
|
begin
|
|
with LookAndFeelController do
|
|
begin
|
|
NativeStyle := not NativeStyle;
|
|
(Sender as TMenuItem).Checked := NativeStyle;
|
|
end;
|
|
end;
|
|
|
|
procedure TCustomDrawTableViewDemoMainForm.miLookAndFeelKindClick(Sender: TObject);
|
|
begin
|
|
LookAndFeelController.Kind := TcxLookAndFeelKind(TMenuItem(Sender).MenuIndex);
|
|
(Sender as TMenuItem).Checked := True;
|
|
end;
|
|
|
|
procedure TCustomDrawTableViewDemoMainForm.FormShow(Sender: TObject);
|
|
begin
|
|
CustomDrawTableViewDemoStylesEditorForm.Show;
|
|
end;
|
|
|
|
procedure TCustomDrawTableViewDemoMainForm.tvOrdersCustomDrawCell(
|
|
Sender: TcxCustomGridTableView; ACanvas: TcxCanvas;
|
|
AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean);
|
|
var
|
|
ARec: TRect;
|
|
ATextToDraw: String;
|
|
AIsVertical: Boolean;
|
|
val: String;
|
|
begin
|
|
ATextToDraw := AViewInfo.GridRecord.DisplayTexts[AViewInfo.Item.Index];
|
|
ARec := AViewInfo.Bounds;
|
|
ACanvas.Canvas.Font.Assign(FFonts[Integer(vtDetail), Integer(cdaCell)]);
|
|
case FCustomDrawingStyle[Integer(vtDetail), Integer(cdaCell)] of
|
|
cdsBkImage:
|
|
begin
|
|
ACanvas.Brush.Bitmap := nil;
|
|
ACanvas.Brush.Assign(FGridBrushDetailCell);
|
|
ACanvas.Canvas.FillRect(ARec);
|
|
ACanvas.Brush.Bitmap := nil;
|
|
end;
|
|
cdsGradient:
|
|
begin
|
|
AIsVertical := (FColorScheme[Integer(vtDetail), Integer(cdaCell)] = csGrey) or (FColorScheme[Integer(vtDetail), Integer(cdaCell)] = csGold);
|
|
DrawGradient(ACanvas.Canvas, ARec, ColorScheme[Integer(FColorScheme[Integer(vtDetail), Integer(cdaCell)]), 1], ColorScheme[Integer(FColorScheme[Integer(vtDetail), Integer(cdaCell)]), 0], 40, AIsVertical)
|
|
end;
|
|
cdsDependOnData:
|
|
begin
|
|
ACanvas.Canvas.Brush.Style := bsSolid;
|
|
ACanvas.Canvas.Brush.Color := clBlueLight;
|
|
|
|
val := VarAsType(AViewInfo.GridRecord.DisplayTexts[tvOrdersPaymentType.Index], varString);
|
|
if val = 'Master Card' then
|
|
ACanvas.Canvas.Font.Color := clRed
|
|
else
|
|
if val = 'American Express' then
|
|
ACanvas.Canvas.Font.Color := clBlue
|
|
else
|
|
if val = 'Cash' then
|
|
ACanvas.Canvas.Font.Color := clGreen;
|
|
if val = 'Visa Card' then
|
|
ACanvas.Canvas.Font.Color := clFuchsia;
|
|
ACanvas.Canvas.FillRect(ARec);
|
|
end;
|
|
end;
|
|
|
|
SetBkMode(ACanvas.Canvas.Handle, TRANSPARENT);
|
|
|
|
ADone := not (FCustomDrawingStyle[Integer(vtDetail), Integer(cdaCell)] in [cdsDefaultDrawing, cdsDependOnData]);
|
|
if ADone then
|
|
begin
|
|
InflateRect(ARec, -cxGridCellTextOffset, -cxGridCellTextOffset);
|
|
ACanvas.DrawText(ATextToDraw, ARec, 0);
|
|
end;
|
|
end;
|
|
|
|
procedure TCustomDrawTableViewDemoMainForm.tvOrdersCustomDrawGroupCell(
|
|
Sender: TcxCustomGridTableView; ACanvas: TcxCanvas;
|
|
AViewInfo: TcxGridTableCellViewInfo; var ADone: Boolean);
|
|
var
|
|
ARec: TRect;
|
|
ATextToDraw: String;
|
|
AIsVertical: Boolean;
|
|
begin
|
|
ATextToDraw := AViewInfo.Text;
|
|
ARec := AViewInfo.Bounds;
|
|
ACanvas.Canvas.Font.Assign(FFonts[Integer(vtDetail), Integer(cdaGroupCell)]);
|
|
case FCustomDrawingStyle[Integer(vtDetail), Integer(cdaGroupCell)] of
|
|
cdsBkImage:
|
|
begin
|
|
ACanvas.Brush.Bitmap := nil;
|
|
ACanvas.Brush.Assign(FGridBrushDetailGroupCell);
|
|
ACanvas.Canvas.FillRect(ARec);
|
|
ACanvas.Brush.Bitmap := nil;
|
|
end;
|
|
cdsGradient:
|
|
begin
|
|
AIsVertical := (FColorScheme[Integer(vtDetail), Integer(cdaGroupCell)] = csGrey) or (FColorScheme[Integer(vtDetail), Integer(cdaGroupCell)] = csGold);
|
|
DrawGradient(ACanvas.Canvas, ARec, ColorScheme[Integer(FColorScheme[Integer(vtDetail), Integer(cdaGroupCell)]), 1], ColorScheme[Integer(FColorScheme[Integer(vtDetail), Integer(cdaGroupCell)]), 0], 40, AIsVertical)
|
|
end;
|
|
end;
|
|
|
|
SetBkMode(ACanvas.Canvas.Handle, TRANSPARENT);
|
|
|
|
ADone := not (FCustomDrawingStyle[Integer(vtDetail), Integer(cdaGroupCell)] in [cdsDefaultDrawing]);
|
|
if ADone then
|
|
begin
|
|
ARec.Left := ARec.Left + (AViewInfo.RecordViewInfo.ExpandButtonBounds.Right - AViewInfo.RecordViewInfo.ExpandButtonBounds.Left) + 10;
|
|
ARec.Top := ARec.Top + cxGridCellTextOffset;
|
|
ACanvas.DrawText(ATextToDraw, ARec, 0);
|
|
end;
|
|
end;
|
|
|
|
procedure TCustomDrawTableViewDemoMainForm.tvOrdersCustomDrawIndicatorCell(
|
|
Sender: TcxGridTableView; ACanvas: TcxCanvas;
|
|
AViewInfo: TcxCustomGridIndicatorItemViewInfo; var ADone: Boolean);
|
|
var
|
|
ARec: TRect;
|
|
AIsVertical: Boolean;
|
|
AIndicatorKind: TcxIndicatorKind;
|
|
X, Y: Integer;
|
|
begin
|
|
ARec := AViewInfo.Bounds;
|
|
ACanvas.Canvas.Font.Assign(FFonts[Integer(vtDetail), Integer(cdaIndicatorCell)]);
|
|
|
|
if not (AViewInfo is TcxGridIndicatorRowItemViewInfo) then
|
|
AIndicatorKind := ikNone
|
|
else
|
|
AIndicatorKind := TcxGridIndicatorRowItemViewInfo(AViewInfo).IndicatorKind;
|
|
|
|
case FCustomDrawingStyle[Integer(vtDetail), Integer(cdaIndicatorCell)] of
|
|
cdsBkImage:
|
|
begin
|
|
ACanvas.Brush.Bitmap := nil;
|
|
ACanvas.Brush.Assign(FGridBrushDetailIndicatorCell);
|
|
ACanvas.FillRect(ARec);
|
|
ACanvas.Brush.Bitmap := nil;
|
|
end;
|
|
cdsGradient:
|
|
begin
|
|
AIsVertical := (FColorScheme[Integer(vtDetail), Integer(cdaIndicatorCell)] = csGrey) or (FColorScheme[Integer(vtDetail), Integer(cdaIndicatorCell)] = csGold);
|
|
DrawGradient(ACanvas.Canvas, ARec, ColorScheme[Integer(FColorScheme[Integer(vtDetail), Integer(cdaGroupCell)]), 1], ColorScheme[Integer(FColorScheme[Integer(vtDetail), Integer(cdaIndicatorCell)]), 0], 40, AIsVertical)
|
|
end;
|
|
end;
|
|
if AIndicatorKind <> ikNone then
|
|
begin
|
|
with imIndicatorImages, ARec do
|
|
begin
|
|
X := (Left + Right - Width) div 2;
|
|
Y := (Top + Bottom - Height) div 2;
|
|
end;
|
|
imIndicatorImages.Draw(ACanvas.Canvas, X, Y, IndicatorImageIndex[vtDetail], True);
|
|
end;
|
|
|
|
ADone := not (FCustomDrawingStyle[Integer(vtDetail), Integer(cdaIndicatorCell)] in [cdsDefaultDrawing]);
|
|
end;
|
|
|
|
procedure TCustomDrawTableViewDemoMainForm.miCustomDrawEditorClick(
|
|
Sender: TObject);
|
|
begin
|
|
CustomDrawTableViewDemoStylesEditorForm.Show;
|
|
end;
|
|
|
|
procedure TCustomDrawTableViewDemoMainForm.SetCustomDrawingStyle(
|
|
AViewType: TViewType; ACustomDrawArea: TCustomDrawArea;
|
|
const Value: TCustomDrawingStyle);
|
|
begin
|
|
if FCustomDrawingStyle[Integer(AViewType), Integer(ACustomDrawArea)] <> Value then
|
|
begin
|
|
FCustomDrawingStyle[Integer(AViewType), Integer(ACustomDrawArea)] := Value;
|
|
case AViewType of
|
|
vtMaster:
|
|
begin
|
|
tvCars.LayoutChanged(False);
|
|
tvCars.Painter.Invalidate;
|
|
end;
|
|
vtDetail:
|
|
begin
|
|
tvOrders.LayoutChanged(False);
|
|
tvOrders.Painter.Invalidate;
|
|
end;
|
|
end;
|
|
end
|
|
end;
|
|
|
|
function TCustomDrawTableViewDemoMainForm.GetCustomDrawingStyle(
|
|
AViewType: TViewType;
|
|
ACustomDrawArea: TCustomDrawArea): TCustomDrawingStyle;
|
|
begin
|
|
Result := FCustomDrawingStyle[Integer(AViewType), Integer(ACustomDrawArea)];
|
|
end;
|
|
|
|
procedure TCustomDrawTableViewDemoMainForm.SetCustomDrawingStyles;
|
|
var
|
|
i, j: Integer;
|
|
begin
|
|
FGridBrushMasterCell := TBrush.Create;
|
|
FGridBrushMasterGroupCell := TBrush.Create;
|
|
FGridBrushMasterFooterCell := TBrush.Create;
|
|
FGridBrushMasterColumnHeader := TBrush.Create;
|
|
FGridBrushMasterIndicatorCell := TBrush.Create;
|
|
FGridBrushMasterPartBackground := TBrush.Create;
|
|
|
|
FGridBrushDetailCell := TBrush.Create;
|
|
FGridBrushDetailGroupCell := TBrush.Create;
|
|
FGridBrushDetailFooterCell := TBrush.Create;
|
|
FGridBrushDetailColumnHeader := TBrush.Create;
|
|
FGridBrushDetailIndicatorCell := TBrush.Create;
|
|
FGridBrushDetailPartBackground := TBrush.Create;
|
|
FIndicatorImageIndex[Integer(vtMaster)] := 0;
|
|
FIndicatorImageIndex[Integer(vtDetail)] := 0;
|
|
for i:=0 to 1 do
|
|
for j:=0 to 5 do
|
|
FBkImages[1, j] := bkiTile;
|
|
|
|
FGridBrushMasterCell.Bitmap := FTileBitmap;
|
|
FGridBrushMasterGroupCell.Bitmap := FTileBitmap;
|
|
FGridBrushMasterColumnHeader.Bitmap := FTileBitmap;
|
|
FGridBrushMasterFooterCell.Bitmap := FTileBitmap;
|
|
FGridBrushMasterIndicatorCell.Bitmap := FTileBitmap;
|
|
FGridBrushMasterPartBackground.Bitmap := FTileBitmap;
|
|
FGridBrushDetailCell.Bitmap := FTileBitmap;
|
|
FGridBrushDetailGroupCell.Bitmap := FTileBitmap;
|
|
FGridBrushDetailColumnHeader.Bitmap := FTileBitmap;
|
|
FGridBrushDetailFooterCell.Bitmap := FTileBitmap;
|
|
FGridBrushDetailIndicatorCell.Bitmap := FTileBitmap;
|
|
FGridBrushDetailPartBackground.Bitmap := FTileBitmap;
|
|
|
|
FColorScheme[Integer(vtMaster), 0] := csBlue;
|
|
FColorScheme[Integer(vtDetail), 1] := csBlue;
|
|
for i:=0 to 1 do
|
|
for j:=0 to 5 do
|
|
FCustomDrawingStyle[i, j] := cdsGradient;
|
|
end;
|
|
|
|
procedure TCustomDrawTableViewDemoMainForm.tvCarsCustomDrawColumnHeader(
|
|
Sender: TcxGridTableView; ACanvas: TcxCanvas;
|
|
AViewInfo: TcxGridColumnHeaderViewInfo; var ADone: Boolean);
|
|
var
|
|
ARec: TRect;
|
|
ATextToDraw: String;
|
|
AIsVertical: Boolean;
|
|
begin
|
|
ATextToDraw := AViewInfo.Text;
|
|
ARec := AViewInfo.Bounds;
|
|
ACanvas.Canvas.Font.Assign(FFonts[Integer(vtMaster), Integer(cdaColumnHeader)]);
|
|
case FCustomDrawingStyle[Integer(vtMaster), Integer(cdaColumnHeader)] of
|
|
cdsBkImage:
|
|
begin
|
|
ACanvas.Brush.Bitmap := nil;
|
|
ACanvas.Brush.Assign(FGridBrushMasterColumnHeader);
|
|
ACanvas.FillRect(ARec);
|
|
ACanvas.Brush.Bitmap := nil;
|
|
end;
|
|
cdsGradient:
|
|
begin
|
|
AIsVertical := (FColorScheme[Integer(vtMaster), Integer(cdaColumnHeader)] = csGrey) or (FColorScheme[Integer(vtMaster), Integer(cdaColumnHeader)] = csGold);
|
|
DrawGradient(ACanvas.Canvas, ARec, ColorScheme[Integer(FColorScheme[Integer(vtMaster), Integer(cdaColumnHeader)]), 1], ColorScheme[Integer(FColorScheme[Integer(vtMaster), Integer(cdaColumnHeader)]), 0], 40, AIsVertical)
|
|
end;
|
|
end;
|
|
|
|
InflateRect(ARec, -cxGridCellTextOffset, -cxGridCellTextOffset);
|
|
SetBkMode(ACanvas.Canvas.Handle, TRANSPARENT);
|
|
ACanvas.DrawText(ATextToDraw, ARec, 0);
|
|
|
|
ADone := FCustomDrawingStyle[Integer(vtMaster), Integer(cdaColumnHeader)] <> cdsDefaultDrawing;
|
|
end;
|
|
|
|
procedure TCustomDrawTableViewDemoMainForm.tvCarsCustomDrawFooterCell(
|
|
Sender: TcxGridTableView; ACanvas: TcxCanvas;
|
|
AViewInfo: TcxGridColumnHeaderViewInfo; var ADone: Boolean);
|
|
var
|
|
ARec: TRect;
|
|
ATextToDraw: String;
|
|
AIsVertical: Boolean;
|
|
begin
|
|
ATextToDraw := AViewInfo.Text;
|
|
ARec := AViewInfo.Bounds;
|
|
ACanvas.Canvas.Font.Assign(FFonts[Integer(vtMaster), Integer(cdaFooterCell)]);
|
|
case FCustomDrawingStyle[Integer(vtMaster), Integer(cdaFooterCell)] of
|
|
cdsBkImage:
|
|
begin
|
|
ACanvas.Brush.Bitmap := nil;
|
|
ACanvas.Brush.Assign(FGridBrushMasterFooterCell);
|
|
ACanvas.Canvas.FillRect(ARec);
|
|
ACanvas.Brush.Bitmap := nil;
|
|
end;
|
|
cdsGradient:
|
|
begin
|
|
AIsVertical := (FColorScheme[Integer(vtMaster), Integer(cdaFooterCell)] = csGrey) or (FColorScheme[Integer(vtMaster), Integer(cdaFooterCell)] = csGold);
|
|
DrawGradient(ACanvas.Canvas, ARec, ColorScheme[Integer(FColorScheme[Integer(vtMaster),
|
|
Integer(cdaFooterCell)]), 1], ColorScheme[Integer(FColorScheme[Integer(vtMaster), Integer(cdaFooterCell)]), 0], 40, AIsVertical)
|
|
end;
|
|
end;
|
|
|
|
InflateRect(ARec, -cxGridCellTextOffset, -cxGridCellTextOffset);
|
|
SetBkMode(ACanvas.Canvas.Handle, TRANSPARENT);
|
|
ACanvas.DrawText(ATextToDraw, ARec, 0);
|
|
|
|
ADone := FCustomDrawingStyle[Integer(vtMaster), Integer(cdaFooterCell)] <> cdsDefaultDrawing;
|
|
end;
|
|
|
|
procedure TCustomDrawTableViewDemoMainForm.tvCarsCustomDrawPartBackground(
|
|
Sender: TcxCustomGridTableView; ACanvas: TcxCanvas;
|
|
AViewInfo: TcxCustomGridCellViewInfo; var ADone: Boolean);
|
|
var
|
|
ARec: TRect;
|
|
AIsVertical: Boolean;
|
|
begin
|
|
ARec := AViewInfo.Bounds;
|
|
ACanvas.Canvas.Font.Assign(FFonts[Integer(vtMaster), Integer(cdaPartBackground)]);
|
|
case FCustomDrawingStyle[Integer(vtMaster), Integer(cdaPartBackground)] of
|
|
cdsBkImage:
|
|
begin
|
|
ACanvas.Brush.Bitmap := nil;
|
|
ACanvas.Brush.Assign(FGridBrushMasterPartBackground);
|
|
ACanvas.Canvas.FillRect(ARec);
|
|
ACanvas.Brush.Bitmap := nil;
|
|
end;
|
|
cdsGradient:
|
|
begin
|
|
AIsVertical := (FColorScheme[Integer(vtMaster), Integer(cdaPartBackground)] = csGrey) or
|
|
(FColorScheme[Integer(vtMaster), Integer(cdaPartBackground)] = csGold);
|
|
DrawGradient(ACanvas.Canvas, ARec, ColorScheme[Integer(FColorScheme[Integer(vtMaster), Integer(cdaPartBackground)]), 1],
|
|
ColorScheme[Integer(FColorScheme[Integer(vtMaster), Integer(cdaPartBackground)]), 0], 40, AIsVertical)
|
|
end;
|
|
end;
|
|
|
|
ADone := FCustomDrawingStyle[Integer(vtMaster), Integer(cdaPartBackground)] <> cdsDefaultDrawing;
|
|
end;
|
|
|
|
procedure TCustomDrawTableViewDemoMainForm.tvOrdersCustomDrawColumnHeader(
|
|
Sender: TcxGridTableView; ACanvas: TcxCanvas;
|
|
AViewInfo: TcxGridColumnHeaderViewInfo; var ADone: Boolean);
|
|
var
|
|
ARec: TRect;
|
|
ATextToDraw: String;
|
|
AIsVertical: Boolean;
|
|
begin
|
|
ATextToDraw := AViewInfo.Text;
|
|
ARec := AViewInfo.Bounds;
|
|
ACanvas.Canvas.Font.Assign(FFonts[Integer(vtDetail), Integer(cdaColumnHeader)]);
|
|
case FCustomDrawingStyle[Integer(vtDetail), Integer(cdaColumnHeader)] of
|
|
cdsBkImage:
|
|
begin
|
|
ACanvas.Brush.Bitmap := nil;
|
|
ACanvas.Brush.Assign(FGridBrushDetailColumnHeader);
|
|
ACanvas.Canvas.FillRect(ARec);
|
|
ACanvas.Brush.Bitmap := nil;
|
|
end;
|
|
cdsGradient:
|
|
begin
|
|
AIsVertical := (FColorScheme[Integer(vtDetail), Integer(cdaColumnHeader)] = csGrey) or
|
|
(FColorScheme[Integer(vtDetail), Integer(cdaColumnHeader)] = csGold);
|
|
DrawGradient(ACanvas.Canvas, ARec, ColorScheme[Integer(FColorScheme[Integer(vtDetail), Integer(cdaColumnHeader)]), 1],
|
|
ColorScheme[Integer(FColorScheme[Integer(vtDetail), Integer(cdaColumnHeader)]), 0], 40, AIsVertical);
|
|
end;
|
|
cdsDependOnData:
|
|
begin
|
|
ACanvas.Canvas.Brush.Style := bsSolid;
|
|
ACanvas.Canvas.Brush.Color := clBlueLight;
|
|
ACanvas.Canvas.FillRect(ARec);
|
|
end;
|
|
end;
|
|
|
|
InflateRect(ARec, -cxGridCellTextOffset, -cxGridCellTextOffset);
|
|
SetBkMode(ACanvas.Canvas.Handle, TRANSPARENT);
|
|
ACanvas.DrawText(ATextToDraw, ARec, 0);
|
|
|
|
ADone := FCustomDrawingStyle[Integer(vtDetail), Integer(cdaColumnHeader)] <> cdsDefaultDrawing;
|
|
end;
|
|
|
|
procedure TCustomDrawTableViewDemoMainForm.tvOrdersCustomDrawFooterCell(
|
|
Sender: TcxGridTableView; ACanvas: TcxCanvas;
|
|
AViewInfo: TcxGridColumnHeaderViewInfo; var ADone: Boolean);
|
|
var
|
|
ARec: TRect;
|
|
ATextToDraw: String;
|
|
AIsVertical: Boolean;
|
|
begin
|
|
ATextToDraw := AViewInfo.Text;
|
|
ARec := AViewInfo.Bounds;
|
|
ACanvas.Canvas.Font.Assign(FFonts[Integer(vtDetail), Integer(cdaFooterCell)]);
|
|
case FCustomDrawingStyle[Integer(vtDetail), Integer(cdaFooterCell)] of
|
|
cdsBkImage:
|
|
begin
|
|
ACanvas.Brush.Bitmap := nil;
|
|
ACanvas.Brush.Assign(FGridBrushDetailFooterCell);
|
|
ACanvas.Canvas.FillRect(ARec);
|
|
ACanvas.Brush.Bitmap := nil;
|
|
end;
|
|
cdsGradient:
|
|
begin
|
|
AIsVertical := (FColorScheme[Integer(vtDetail), Integer(cdaFooterCell)] = csGrey) or
|
|
(FColorScheme[Integer(vtDetail), Integer(cdaFooterCell)] = csGold);
|
|
DrawGradient(ACanvas.Canvas, ARec, ColorScheme[Integer(FColorScheme[Integer(vtDetail), Integer(cdaFooterCell)]), 1],
|
|
ColorScheme[Integer(FColorScheme[Integer(vtDetail), Integer(cdaFooterCell)]), 0], 40, AIsVertical)
|
|
end;
|
|
end;
|
|
|
|
InflateRect(ARec, -cxGridCellTextOffset, -cxGridCellTextOffset);
|
|
SetBkMode(ACanvas.Canvas.Handle, TRANSPARENT);
|
|
ACanvas.DrawText(ATextToDraw, ARec, 0);
|
|
|
|
ADone := FCustomDrawingStyle[Integer(vtDetail), Integer(cdaFooterCell)] <> cdsDefaultDrawing;
|
|
end;
|
|
|
|
procedure TCustomDrawTableViewDemoMainForm.tvOrdersCustomDrawPartBackground(
|
|
Sender: TcxCustomGridTableView; ACanvas: TcxCanvas;
|
|
AViewInfo: TcxCustomGridCellViewInfo; var ADone: Boolean);
|
|
var
|
|
ARec: TRect;
|
|
AIsVertical: Boolean;
|
|
begin
|
|
ARec := AViewInfo.Bounds;
|
|
ACanvas.Canvas.Font.Assign(FFonts[Integer(vtDetail), Integer(cdaPartBackground)]);
|
|
case FCustomDrawingStyle[Integer(vtDetail), Integer(cdaPartBackground)] of
|
|
cdsBkImage:
|
|
begin
|
|
ACanvas.Brush.Bitmap := nil;
|
|
ACanvas.Brush.Assign(FGridBrushDetailPartBackground);
|
|
ACanvas.Canvas.FillRect(ARec);
|
|
ACanvas.Brush.Bitmap := nil;
|
|
end;
|
|
cdsGradient:
|
|
begin
|
|
AIsVertical := (FColorScheme[Integer(vtDetail), Integer(cdaPartBackground)] = csGrey) or
|
|
(FColorScheme[Integer(vtDetail), Integer(cdaPartBackground)] = csGold);
|
|
DrawGradient(ACanvas.Canvas, ARec, ColorScheme[Integer(FColorScheme[Integer(vtDetail), Integer(cdaPartBackground)]),1],
|
|
ColorScheme[Integer(FColorScheme[Integer(vtDetail), Integer(cdaPartBackground)]), 0], 40, AIsVertical)
|
|
end;
|
|
end;
|
|
|
|
ADone := FCustomDrawingStyle[Integer(vtDetail), Integer(cdaPartBackground)] <> cdsDefaultDrawing;
|
|
end;
|
|
|
|
function TCustomDrawTableViewDemoMainForm.GetCustomBkImage(
|
|
AViewType: TViewType; ACustomDrawArea: TCustomDrawArea): TBkImage;
|
|
begin
|
|
Result := FBkImages[Integer(AViewType), Integer(ACustomDrawArea)];
|
|
end;
|
|
|
|
procedure TCustomDrawTableViewDemoMainForm.SetCustomBkImage(
|
|
AViewType: TViewType; ACustomDrawArea: TCustomDrawArea; AValue: TBkImage);
|
|
function GetImage: TBitMap;
|
|
begin
|
|
Result := nil;
|
|
case AValue of
|
|
bkiTile: Result := FTileBitmap;
|
|
bkiSky: Result := FSkyBitmap;
|
|
bkiEgypt: Result := FEgyptBitmap;
|
|
bkiMyFace: Result := FMyFaceBitmap;
|
|
end;
|
|
end;
|
|
begin
|
|
if AValue <> bkiUserDefined then
|
|
begin
|
|
if FBkImages[Integer(AViewType), Integer(ACustomDrawArea)] <> AValue then
|
|
begin
|
|
FBkImages[Integer(AViewType), Integer(ACustomDrawArea)] := AValue;
|
|
case AViewType of
|
|
vtMaster:
|
|
begin
|
|
case ACustomDrawArea of
|
|
cdaCell: FGridBrushMasterCell.Bitmap := GetImage;
|
|
cdaGroupCell: FGridBrushMasterGroupCell.Bitmap := GetImage;
|
|
cdaColumnHeader: FGridBrushMasterColumnHeader.Bitmap := GetImage;
|
|
cdaFooterCell: FGridBrushMasterFooterCell.Bitmap := GetImage;
|
|
cdaIndicatorCell: FGridBrushMasterIndicatorCell.Bitmap := GetImage;
|
|
cdaPartBackGround: FGridBrushMasterPartBackGround.Bitmap := GetImage;
|
|
end;
|
|
tvCars.LayoutChanged(False);
|
|
tvCars.Painter.Invalidate;
|
|
end;
|
|
vtDetail:
|
|
begin
|
|
case ACustomDrawArea of
|
|
cdaCell: FGridBrushDetailCell.Bitmap := GetImage;
|
|
cdaGroupCell: FGridBrushDetailGroupCell.Bitmap := GetImage;
|
|
cdaColumnHeader: FGridBrushDetailColumnHeader.Bitmap := GetImage;
|
|
cdaFooterCell: FGridBrushDetailFooterCell.Bitmap := GetImage;
|
|
cdaIndicatorCell: FGridBrushDetailIndicatorCell.Bitmap := GetImage;
|
|
cdaPartBackGround: FGridBrushDetailPartBackGround.Bitmap := GetImage;
|
|
end;
|
|
tvOrders.LayoutChanged(False);
|
|
tvOrders.Painter.Invalidate;
|
|
end;
|
|
end;
|
|
end;
|
|
end
|
|
else
|
|
begin
|
|
FBkImages[Integer(AViewType), Integer(ACustomDrawArea)] := AValue;
|
|
case AViewType of
|
|
vtMaster:
|
|
begin
|
|
tvCars.LayoutChanged(False);
|
|
tvCars.Painter.Invalidate;
|
|
end;
|
|
vtDetail:
|
|
begin
|
|
tvOrders.LayoutChanged(False);
|
|
tvOrders.Painter.Invalidate;
|
|
end;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
function TCustomDrawTableViewDemoMainForm.GetCustomColorScheme(
|
|
AViewType: TViewType; ACustomDrawArea: TCustomDrawArea): TColorScheme;
|
|
begin
|
|
Result := FColorScheme[Integer(AViewType), Integer(ACustomDrawArea)];
|
|
end;
|
|
|
|
procedure TCustomDrawTableViewDemoMainForm.SetCustomColorScheme(
|
|
AViewType: TViewType; ACustomDrawArea: TCustomDrawArea;
|
|
const Value: TColorScheme);
|
|
begin
|
|
if FColorScheme[Integer(AViewType), Integer(ACustomDrawArea)] <> Value then
|
|
begin
|
|
FColorScheme[Integer(AViewType), Integer(ACustomDrawArea)] := Value;
|
|
case AViewType of
|
|
vtMaster:
|
|
begin
|
|
tvCars.LayoutChanged(False);
|
|
tvCars.Painter.Invalidate;
|
|
end;
|
|
vtDetail:
|
|
begin
|
|
tvOrders.LayoutChanged(False);
|
|
tvOrders.Painter.Invalidate;
|
|
end;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
procedure TCustomDrawTableViewDemoMainForm.SetUserDefineBitmap(
|
|
AViewType: TViewType; ACustomDrawArea: TCustomDrawArea;
|
|
const Value: TBitmap);
|
|
begin
|
|
case AViewType of
|
|
vtMaster:
|
|
begin
|
|
case ACustomDrawArea of
|
|
cdaCell: FGridBrushMasterCell.Bitmap := Value;
|
|
cdaGroupCell: FGridBrushMasterGroupCell.Bitmap := Value;
|
|
cdaColumnHeader: FGridBrushMasterColumnHeader.Bitmap := Value;
|
|
cdaFooterCell: FGridBrushMasterFooterCell.Bitmap := Value;
|
|
cdaIndicatorCell: FGridBrushMasterIndicatorCell.Bitmap := Value;
|
|
cdaPartBackGround: FGridBrushMasterPartBackGround.Bitmap := Value;
|
|
end;
|
|
end;
|
|
vtDetail:
|
|
begin
|
|
case ACustomDrawArea of
|
|
cdaCell: FGridBrushDetailCell.Bitmap := Value;
|
|
cdaGroupCell: FGridBrushDetailGroupCell.Bitmap := Value;
|
|
cdaColumnHeader: FGridBrushDetailColumnHeader.Bitmap := Value;
|
|
cdaFooterCell: FGridBrushDetailFooterCell.Bitmap := Value;
|
|
cdaIndicatorCell: FGridBrushDetailIndicatorCell.Bitmap := Value;
|
|
cdaPartBackGround: FGridBrushDetailPartBackGround.Bitmap := Value;
|
|
end;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
function TCustomDrawTableViewDemoMainForm.GetFont(AViewType: TViewType;
|
|
ACustomDrawArea: TCustomDrawArea): TFont;
|
|
begin
|
|
Result := FFonts[Integer(AViewType), Integer(ACustomDrawArea)];
|
|
end;
|
|
|
|
procedure TCustomDrawTableViewDemoMainForm.SetFont(AViewType: TViewType;
|
|
ACustomDrawArea: TCustomDrawArea; const Value: TFont);
|
|
begin
|
|
FFonts[Integer(AViewType), Integer(ACustomDrawArea)].Assign(Value);
|
|
case AViewType of
|
|
vtMaster:
|
|
begin
|
|
tvCars.LayoutChanged(False);
|
|
tvCars.Painter.Invalidate;
|
|
end;
|
|
vtDetail:
|
|
begin
|
|
tvOrders.LayoutChanged(False);
|
|
tvOrders.Painter.Invalidate;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
function TCustomDrawTableViewDemoMainForm.GetIndicatorImageIndex(
|
|
AViewType: TViewType): Integer;
|
|
begin
|
|
Result := FIndicatorImageIndex[Integer(AViewType)];
|
|
end;
|
|
|
|
procedure TCustomDrawTableViewDemoMainForm.SetIndicatorImageIndex(
|
|
AViewType: TViewType; const Value: Integer);
|
|
begin
|
|
if FIndicatorImageIndex[Integer(AViewType)] <> Value then
|
|
begin
|
|
FIndicatorImageIndex[Integer(AViewType)] := Value;
|
|
case AViewType of
|
|
vtMaster:
|
|
begin
|
|
tvCars.LayoutChanged(False);
|
|
tvCars.Painter.Invalidate;
|
|
end;
|
|
vtDetail:
|
|
begin
|
|
tvOrders.LayoutChanged(False);
|
|
tvOrders.Painter.Invalidate;
|
|
end;
|
|
end;
|
|
end
|
|
end;
|
|
|
|
end.
|
|
|