{*******************************************************************} { } { Developer Express Visual Component Library } { ExpressPrinting System COMPONENT SUITE } { } { Copyright (C) 1998-2009 Developer Express Inc. } { ALL RIGHTS RESERVED } { } { The entire contents of this file is protected by U.S. and } { International Copyright Laws. Unauthorized reproduction, } { reverse-engineering, and distribution of all or any portion of } { the code contained in this file is strictly prohibited and may } { result in severe civil and criminal penalties and will be } { prosecuted to the maximum extent possible under the law. } { } { RESTRICTIONS } { } { THIS SOURCE CODE AND ALL RESULTING INTERMEDIATE FILES } { (DCU, OBJ, DLL, ETC.) ARE CONFIDENTIAL AND PROPRIETARY TRADE } { SECRETS OF DEVELOPER EXPRESS INC. THE REGISTERED DEVELOPER IS } { LICENSED TO DISTRIBUTE THE EXPRESSPRINTINGSYSTEM AND } { ALL ACCOMPANYING VCL CONTROLS AS PART OF AN } { EXECUTABLE PROGRAM ONLY. } { } { THE SOURCE CODE CONTAINED WITHIN THIS FILE AND ALL RELATED } { FILES OR ANY PORTION OF ITS CONTENTS SHALL AT NO TIME BE } { COPIED, TRANSFERRED, SOLD, DISTRIBUTED, OR OTHERWISE MADE } { AVAILABLE TO OTHER INDIVIDUALS WITHOUT EXPRESS WRITTEN CONSENT } { AND PERMISSION FROM DEVELOPER EXPRESS INC. } { } { CONSULT THE END USER LICENSE AGREEMENT FOR INFORMATION ON } { ADDITIONAL RESTRICTIONS. } { } {*******************************************************************} unit dxPSLbxLnk; interface {$I cxVer.inc} uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ComCtrls, ExtCtrls, checklst, ImgList, dxPSGlbl, dxPSCore, dxPSBaseGridLnk, dxPSGrLnks, cxControls, cxContainer, cxEdit, cxCheckBox, Menus, cxLookAndFeelPainters, cxButtons, cxTextEdit, cxLabel, cxPC, cxGraphics, cxMaskEdit, cxDropDownEdit, cxColorComboBox, cxLookAndFeels; type TdxListBoxPaintOption = (lbxpoBorder, lbxpoHorzLines); TdxListBoxPaintOptions = set of TdxListBoxPaintOption; TCustomdxListBoxReportLinkControl = class(TdxCustomListBoxReportLink) private FOptions: TdxListBoxPaintOptions; FPaintItemsGraphics: Boolean; FTransparentGraphics: Boolean; function GetOptions: TdxListBoxPaintOptions; procedure SetOptions(Value: TdxListBoxPaintOptions); procedure SetPaintItemsGraphics(Value: Boolean); procedure SetTransparentGraphics(Value: Boolean); protected procedure AssignData(ACol, ARow: Integer; ADataItem: TAbstractdxReportCellData); override; function GetDataItemClass(ACol: Integer; ARow: Integer = 0): TdxReportCellDataClass; override; procedure InternalRestoreDefaults; override; function IsDrawBorder: Boolean; override; function IsDrawHorzLines: Boolean; override; procedure SetDrawMode(Value: TdxGridDrawMode); override; function GetCellHasImage(ACol, ARow: Integer): Boolean; override; function GetCellImage(ACol, ARow: Integer): TGraphic; override; function GetCellImageTransparent(ACol, ARow: Integer): Boolean; override; public procedure Assign(Source: TPersistent); override; property Options: TdxListBoxPaintOptions read GetOptions write SetOptions default [lbxpoBorder..lbxpoHorzLines]; property PaintItemsGraphics: Boolean read FPaintItemsGraphics write SetPaintItemsGraphics default False; property TransparentGraphics: Boolean read FTransparentGraphics write SetTransparentGraphics default False; end; TdxListBoxReportLink = class(TCustomdxListBoxReportLinkControl) private function GetListBox: TListBox; public property ListBox: TListBox read GetListBox; published property AutoWidth; property Color; property EndEllipsis; property EvenColor; property EvenFont; property Font; property OddColor; property OddFont; property Options; property Multiline; property PaintItemsGraphics; property RowAutoHeight; property ScaleFonts; property SupportedCustomDraw; property Transparent; property TransparentGraphics; property UseCustomPageBreaks; property UseHorzDelimiters; property UseVertDelimiters; property Width; property OnCustomDrawItem; property OnGetCustomPageBreaks; property OnInitializeItem; end; TdxLBxReportLinkDesignWindow = class(TStandarddxReportLinkDesignWindow) pnlPreview: TPanel; PageControl1: TcxPageControl; tshOptions: TcxTabSheet; tshColor: TcxTabSheet; tshFont: TcxTabSheet; tshBehaviors: TcxTabSheet; lblShow: TcxLabel; lblPreview: TcxLabel; imgGrid: TImage; chbxTransparentGraphics: TcxCheckBox; chbxShowHorzLines: TcxCheckBox; chbxShowBorders: TcxCheckBox; chbxPaintItemGraphics: TcxCheckBox; Bevel4: TcxLabel; stTransparent: TcxLabel; lblGridLinesColor: TcxLabel; lblEvenColor: TcxLabel; lblDrawMode: TcxLabel; lblColor: TcxLabel; cxLabel1: TcxLabel; chbxTransparent: TcxCheckBox; ccbxGridLineColor: TcxColorComboBox; ccbxEvenColor: TcxColorComboBox; ccbxColor: TcxColorComboBox; cbxDrawMode: TcxComboBox; edFont: TcxTextEdit; edEvenFont: TcxTextEdit; btnFont: TcxButton; btnEvenFont: TcxButton; lblSelection: TcxLabel; lblMiscellaneous: TcxLabel; imgMiscellaneous: TImage; Image3: TImage; chbxRowAutoHeight: TcxCheckBox; chbxOnlySelected: TcxCheckBox; chbxAutoWidth: TcxCheckBox; ilPreview: TcxImageList; procedure chbxOnlySelectedClick(Sender: TObject); procedure ccbxColorChange(Sender: TObject); procedure btnFontClick(Sender: TObject); procedure pbxPreviewPaint(Sender: TObject); procedure chbxPaintItemGraphicsClick(Sender: TObject); procedure chbxTransparentClick(Sender: TObject); procedure lblComboClick(Sender: TObject); procedure chbxShowBordersClick(Sender: TObject); procedure cbxDrawModeClick(Sender: TObject); procedure chbxRowAutoHeightClick(Sender: TObject); procedure chbxTransparentGraphicsClick(Sender: TObject); procedure PageControl1Change(Sender: TObject); procedure chbxAutoWidthClick(Sender: TObject); procedure stTransparentClick(Sender: TObject); procedure cbxDrawModePropertiesDrawItem(AControl: TcxCustomComboBox; ACanvas: TcxCanvas; AIndex: Integer; const ARect: TRect; AState: TOwnerDrawState); private FItemCount: Integer; FPaintWidth: Integer; FPaintHeight: Integer; FPreviewBox: TCustomPanel; FPreviewFont: TFont; FRectHeight: Integer; FRectWidth: Integer; procedure CreateControls; function GetReportLink: TCustomdxListBoxReportLinkControl; procedure CMDialogChar(var message: TCMDialogChar); message CM_DIALOGCHAR; protected procedure DoInitialize; override; {$IFDEF DELPHI7} function GetPreviewHost: TCustomPanel; override; {$ENDIF} procedure LoadStrings; override; procedure PaintPreview(ACanvas: TCanvas; R: TRect); override; procedure UpdateControlsState; override; procedure UpdatePreview; override; public constructor Create(AOwner: TComponent); override; destructor Destroy; override; property ReportLink: TCustomdxListBoxReportLinkControl read GetReportLink; end; const dxDefaultListBoxPaintOptions: TdxListBoxPaintOptions = [Low(TdxListBoxPaintOption)..High(TdxListBoxPaintOption)]; dxListBoxStrings: array[0..5] of string = ('Sample Text Row #1', 'Sample Text Row #2', 'Sample Text Row #3', 'Sample Text Row #4', 'Sample Text Row #5', 'Sample Text Row #6'); implementation {$R *.DFM} uses CommCtrl, cxClasses, dxExtCtrls, dxPSRes, dxPrnDev, dxPSUtl; {$IFNDEF DELPHI6} type TCustomListBoxAccess = class(TCustomListBox); {$ENDIF} { CustomListBox Helpers } function ListBoxGetMultiSelect(ACustomListBox: TCustomListBox): Boolean; begin {$IFDEF DELPHI6} Result := ACustomListBox.MultiSelect; {$ELSE} Result := TCustomListBoxAccess(ACustomListBox).MultiSelect; {$ENDIF} end; { TCustomdxListBoxReportLinkControl } procedure TCustomdxListBoxReportLinkControl.Assign(Source: TPersistent); begin inherited; if Source is TCustomdxListBoxReportLinkControl then begin Options := TCustomdxListBoxReportLinkControl(Source).Options; PaintItemsGraphics := TCustomdxListBoxReportLinkControl(Source).PaintItemsGraphics; end; end; procedure TCustomdxListBoxReportLinkControl.AssignData(ACol, ARow: Integer; ADataItem: TAbstractdxReportCellData); var Obj: TObject; begin inherited; if ADataItem is TdxReportCellImage then with TdxReportCellImage(ADataItem) do begin ImageTransparent := TransparentGraphics; MakeSpaceForEmptyImage := True; Obj := CustomListBox.Items.Objects[ARow]; if Obj is TGraphic then Image := TGraphic(Obj); end; end; function TCustomdxListBoxReportLinkControl.GetDataItemClass(ACol: Integer; ARow: Integer = 0): TdxReportCellDataClass; begin if PaintItemsGraphics then Result := TdxReportCellImage else Result := inherited GetDataItemClass(ACol, ARow); end; procedure TCustomdxListBoxReportLinkControl.InternalRestoreDefaults; begin inherited; Options := dxDefaultListBoxPaintOptions; {[Low(TdxListBoxPaintOptions)..High(TdxListBoxPaintOptions)]} PaintItemsGraphics := False; TransparentGraphics := False; end; function TCustomdxListBoxReportLinkControl.IsDrawBorder: Boolean; begin Result := lbxpoBorder in Options; end; function TCustomdxListBoxReportLinkControl.IsDrawHorzLines: Boolean; begin Result := lbxpoHorzLines in Options; end; procedure TCustomdxListBoxReportLinkControl.SetDrawMode(Value: TdxGridDrawMode); begin if Value > gdmOddEven then Value := gdmOddEven; inherited SetDrawMode(Value); end; function TCustomdxListBoxReportLinkControl.GetCellHasImage(ACol, ARow: Integer): Boolean; begin if PaintItemsGraphics then try Result := CustomListBox.Items.Objects[ARow] is TGraphic; except Result := False; end else Result := False; end; function TCustomdxListBoxReportLinkControl.GetCellImage(ACol, ARow: Integer): TGraphic; begin Result := TGraphic(CustomListBox.Items.Objects[ARow]); end; function TCustomdxListBoxReportLinkControl.GetCellImageTransparent(ACol, ARow: Integer): Boolean; begin Result := TransparentGraphics;; end; function TCustomdxListBoxReportLinkControl.GetOptions: TdxListBoxPaintOptions; begin Result := FOptions; end; procedure TCustomdxListBoxReportLinkControl.SetOptions(Value: TdxListBoxPaintOptions); begin if FOptions <> Value then begin FOptions := Value; LinkModified(True); end; end; procedure TCustomdxListBoxReportLinkControl.SetPaintItemsGraphics(Value: Boolean); begin if FPaintItemsGraphics <> Value then begin FPaintItemsGraphics := Value; LinkModified(True); end; end; procedure TCustomdxListBoxReportLinkControl.SetTransparentGraphics(Value: Boolean); begin if FTransparentGraphics <> Value then begin FTransparentGraphics := Value; LinkModified(True); end; end; { TdxListBoxReportLink } function TdxListBoxReportLink.GetListBox: TListBox; begin Result := inherited Component as TListBox; end; { TdxLBxReportLinkDesignWindow } constructor TdxLBxReportLinkDesignWindow.Create(AOwner: TComponent); begin HelpContext := dxhcListBoxReportLinkDesigner; inherited; CreateControls; FItemCount := 5; FRectWidth := FPreviewBox.Width - 15; FRectHeight := (FPreviewBox.Height - 15) div FItemCount; FPaintWidth := FRectWidth + 1; FPaintHeight := FItemCount * (FRectHeight + 1); PageControl1.ActivePage := PageControl1.Pages[0]; FPreviewFont := TFont.Create; end; destructor TdxLBxReportLinkDesignWindow.Destroy; begin FreeAndNil(FPreviewFont); inherited; end; procedure TdxLBxReportLinkDesignWindow.CreateControls; var R: TRect; begin FPreviewBox := TdxPSPaintPanel.Create(Self); with TdxPSPaintPanel(FPreviewBox) do begin Parent := pnlPreview; R := pnlPreview.BoundsRect; OffsetRect(R, -R.Left, -R.Top); InflateRect(R, -1, -1); BoundsRect := R; EdgeInner := esNone; EdgeOuter := esNone; OnPaint := pbxPreviewPaint; end; end; {$IFDEF DELPHI7} function TdxLBxReportLinkDesignWindow.GetPreviewHost: TCustomPanel; begin Result := pnlPreview; end; {$ENDIF} procedure TdxLBxReportLinkDesignWindow.LoadStrings; begin inherited; tshOptions.Caption := cxGetResourceString(@sdxOptions); tshFont.Caption := cxGetResourceString(@sdxFonts); tshColor.Caption := cxGetResourceString(@sdxColors); tshBehaviors.Caption := cxGetResourceString(@sdxBehaviors); lblPreview.Caption := DropAmpersand(cxGetResourceString(@sdxPreview)); lblShow.Caption := cxGetResourceString(@sdxShow); chbxShowBorders.Caption := cxGetResourceString(@sdxBorderLines); chbxShowHorzLines.Caption := cxGetResourceString(@sdxHorzLines); chbxPaintItemGraphics.Caption := cxGetResourceString(@sdxPaintItemsGraphics); chbxTransparentGraphics.Caption := cxGetResourceString(@sdxTransparentGraphics); lblDrawMode.Caption := cxGetResourceString(@sdxDrawMode); with cbxDrawMode.Properties.Items do begin BeginUpdate; try Clear; AddObject(cxGetResourceString(@sdxDrawModeStrict), TObject(gdmStrict)); AddObject(cxGetResourceString(@sdxDrawModeOddEven), TObject(gdmOddEven)); finally EndUpdate; end; end; stTransparent.Caption := ' ' + cxGetResourceString(@sdxTransparent) + ' '; lblColor.Caption := cxGetResourceString(@sdxColor); lblEvenColor.Caption := cxGetResourceString(@sdxEvenColor); lblGridLinesColor.Caption := cxGetResourceString(@sdxGridLinesColor); btnFont.Caption := cxGetResourceString(@sdxBtnFont); btnEvenFont.Caption := cxGetResourceString(@sdxBtnEvenFont); lblSelection.Caption := cxGetResourceString(@sdxSelection); chbxOnlySelected.Caption := cxGetResourceString(@sdxOnlySelected); lblMiscellaneous.Caption := cxGetResourceString(@sdxMiscellaneous); chbxAutoWidth.Caption := cxGetResourceString(@sdxAutoWidth); chbxRowAutoHeight.Caption := cxGetResourceString(@sdxRowAutoHeight); end; function TdxLBxReportLinkDesignWindow.GetReportLink: TCustomdxListBoxReportLinkControl; begin Result := inherited ReportLink as TCustomdxListBoxReportLinkControl; end; procedure TdxLBxReportLinkDesignWindow.CMDialogChar(var message: TCMDialogChar); var I: Integer; begin inherited; with PageControl1 do for I := 0 to PageControl1.PageCount - 1 do if IsAccel(message.CharCode, Pages[I].Caption) then begin message.Result := 1; ActivePage := Pages[I]; Exit; end; end; procedure TdxLBxReportLinkDesignWindow.UpdateControlsState; function IsPaintItemsGraphics: Boolean; var I: Integer; Obj: TObject; begin Result := True; with ReportLink.CustomListBox do for I := 0 to Items.Count - 1 do begin Obj := Items.Objects[I]; try if Obj is TGraphic then Exit; except end; end; Result := False; end; begin inherited UpdateControlsState; ccbxColor.Enabled := not chbxTransparent.Checked; lblColor.Enabled := ccbxColor.Enabled; ccbxEvenColor.Enabled := not chbxTransparent.Checked and (ReportLink.DrawMode in [gdmOddEven, gdmChess]); lblEvenColor.Enabled := ccbxEvenColor.Enabled; chbxOnlySelected.Enabled := (ReportLink.CustomListBox = nil) or ListBoxGetMultiSelect(ReportLink.CustomListBox); chbxPaintItemGraphics.Enabled := (ReportLink.CustomListBox = nil) or IsPaintItemsGraphics; chbxTransparentGraphics.Enabled := chbxPaintItemGraphics.Checked; if ReportLink.DrawMode in [gdmOddEven, gdmChess] then begin lblColor.Caption := cxGetResourceString(@sdxOddColor); btnFont.Caption := cxGetResourceString(@sdxBtnOddFont); end else begin lblColor.Caption := cxGetResourceString(@sdxColor); btnFont.Caption := cxGetResourceString(@sdxBtnFont); end; btnEvenFont.Enabled := ReportLink.DrawMode in [gdmOddEven, gdmChess]; // (ReportLink.ListBox.Style in [lbOwnerDrawVariable, lbOwnerDrawFixed]); end; procedure TdxLBxReportLinkDesignWindow.DoInitialize; begin inherited DoInitialize; cbxDrawMode.ItemIndex := cbxDrawMode.Properties.Items.IndexOfObject(TObject(ReportLink.DrawMode)); chbxShowBorders.Checked := lbxpoBorder in ReportLink.Options; chbxShowHorzLines.Checked := lbxpoHorzLines in ReportLink.Options; chbxPaintItemGraphics.Checked := ReportLink.PaintItemsGraphics; chbxTransparentGraphics.Checked := ReportLink.TransparentGraphics; chbxTransparent.Checked := ReportLink.Transparent; ccbxColor.ColorValue := ReportLink.Color; ccbxEvenColor.ColorValue := ReportLink.EvenColor; ccbxGridLineColor.ColorValue := ReportLink.GridLineColor; FontInfoToText(ReportLink.Font, edFont); FontInfoToText(ReportLink.EvenFont, edEvenFont); chbxOnlySelected.Checked := ReportLink.OnlySelected; chbxAutoWidth.Checked := ReportLink.AutoWidth; chbxRowAutoHeight.Checked := ReportLink.RowAutoHeight; end; procedure TdxLBxReportLinkDesignWindow.PaintPreview(ACanvas: TCanvas; R: TRect); const C = 6; var DC: hDC; Brush: HBRUSH; I, dY, Offset: Integer; R2: TRect; PrevBkMode: Integer; PrevFont: HFONT; PrevFontColor: COLORREF; S: string; begin inherited; DC := ACanvas.Handle; //FillRect(DC, R, HBRUSH(COLOR_WINDOW + 1)); InflateRect(R, -4, -4); R2 := R; dY := (R.Bottom - R.Top) div C; with ReportLink do begin Brush := SelectObject(DC, CreateSolidBrush(ColorToRGB(GridLineColor))); for I := 0 to C do if (((I = 0) or (I = C)) and IsDrawBorder) or ((I > 0) and (I < C) and IsDrawHorzLines) then begin R := Rect(R2.Left + 1, R2.Top + I * dY, R2.Right - 1, R2.Top + I * dY + 1); PatBlt(DC, R.Left, R.Top, R.Right - R.Left, R.Bottom - R.Top, PATCOPY); end; if IsDrawBorder then begin R := Rect(R2.Left, R2.Top, R2.Left + 1, R2.Top + dY * C + 1); PatBlt(DC, R.Left, R.Top, R.Right - R.Left, R.Bottom - R.Top, PATCOPY); R := Rect(R2.Right - 1, R2.Top, R2.Right, R2.Top + dY * C + 1); PatBlt(DC, R.Left, R.Top, R.Right - R.Left, R.Bottom - R.Top, PATCOPY); end; DeleteObject(SelectObject(DC, Brush)); PrevBkMode := SetBkMode(DC, Windows.TRANSPARENT); PrevFont := GetCurrentObject(DC, OBJ_FONT); PrevFontColor := GetTextColor(DC); for I := 0 to C - 1 do begin R := Rect(R2.Left + 1, R2.Top + I * dY + 1, R2.Right - 1, R2.Top + (I + 1) * dY + Ord(not IsDrawHorzLines and (I < C - 1))); if not Transparent then begin Brush := CreateSolidBrush(ColorToRGB(ReportLink.GetCellColor(0, I))); FillRect(DC, R, Brush); DeleteObject(Brush); end; Offset := 1; if PaintItemsGraphics then begin Inc(R.Left); ilPreview.Draw(ACanvas, R.Left, R.Top + (dY - ilPreview.Height) div 2, 0); Inc(Offset, ilPreview.Width + 1); end; Inc(R.Left, Offset); InflateRect(R, -2, -2); FPreviewFont.Assign(ReportLink.GetCellFont(0, I)); FPreviewFont.Size := 8; SelectObject(DC, FPreviewFont.Handle); SetTextColor(DC, ColorToRGB(FPreviewFont.Color)); S := dxListBoxStrings[I]; Windows.DrawText(DC, PChar(S), Length(S), R, DT_NOPREFIX or DT_SINGLELINE or dxDrawTextTextAlignX[TextAlignX] or dxDrawTextTextAlignY[TextAlignY]); end; SetTextColor(DC, PrevFontColor); SelectObject(DC, PrevFont); SetBkMode(DC, PrevBkMode); end; end; procedure TdxLBxReportLinkDesignWindow.chbxOnlySelectedClick(Sender: TObject); begin if LockControlsUpdate then Exit; ReportLink.OnlySelected := TcxCheckBox(Sender).Checked; Modified := True; end; procedure TdxLBxReportLinkDesignWindow.chbxPaintItemGraphicsClick(Sender: TObject); begin if LockControlsUpdate then Exit; ReportLink.PaintItemsGraphics := TcxCheckBox(Sender).Checked; Modified := True; FPreviewBox.Invalidate; end; procedure TdxLBxReportLinkDesignWindow.chbxTransparentGraphicsClick(Sender: TObject); begin if LockControlsUpdate then Exit; ReportLink.TransparentGraphics := TcxCheckBox(Sender).Checked; Modified := True; end; procedure TdxLBxReportLinkDesignWindow.chbxAutoWidthClick(Sender: TObject); begin if LockControlsUpdate then Exit; ReportLink.AutoWidth := TcxCheckBox(Sender).Checked; Modified := True; end; procedure TdxLBxReportLinkDesignWindow.chbxRowAutoHeightClick(Sender: TObject); begin if LockControlsUpdate then Exit; ReportLink.RowAutoHeight := TcxCheckBox(Sender).Checked; Modified := True; end; procedure TdxLBxReportLinkDesignWindow.cbxDrawModeClick(Sender: TObject); begin if LockControlsUpdate then Exit; ReportLink.DrawMode := TdxGridDrawMode(TcxComboBox(Sender).ItemObject); Modified := True; UpdatePreview; end; procedure TdxLBxReportLinkDesignWindow.chbxShowBordersClick(Sender: TObject); begin if LockControlsUpdate then Exit; with TcxCheckBox(Sender) do if Checked then ReportLink.Options := ReportLink.Options + [TdxListBoxPaintOption(TTagToInt(Tag))] else ReportLink.Options := ReportLink.Options - [TdxListBoxPaintOption(TTagToInt(Tag))]; Modified := True; UpdatePreview; end; procedure TdxLBxReportLinkDesignWindow.chbxTransparentClick(Sender: TObject); begin if LockControlsUpdate then Exit; ReportLink.Transparent := TcxCheckBox(Sender).Checked; Modified := True; UpdatePreview; end; procedure TdxLBxReportLinkDesignWindow.stTransparentClick(Sender: TObject); begin if chbxTransparent.CanFocus then ActiveControl := chbxTransparent; chbxTransparent.Checked := not chbxTransparent.Checked; end; procedure TdxLBxReportLinkDesignWindow.UpdatePreview; begin FPreviewBox.Invalidate; end; procedure TdxLBxReportLinkDesignWindow.ccbxColorChange(Sender: TObject); var AColor: TColor; begin if LockControlsUpdate then Exit; AColor := TcxColorComboBox(Sender).ColorValue; case TTagToInt(TcxColorComboBox(Sender).Tag) of 0: ReportLink.Color := AColor; 1: ReportLink.EvenColor := AColor; 2: ReportLink.GridLineColor := AColor; end; Modified := True; UpdatePreview; end; procedure TdxLBxReportLinkDesignWindow.btnFontClick(Sender: TObject); begin if LockControlsUpdate then Exit; with dxPSGlbl.FontDialog do begin case TTagToInt(TComponent(Sender).Tag) of 0: Font := ReportLink.Font; 1: Font := ReportLink.EvenFont; end; if Execute then begin case TTagToInt(TComponent(Sender).Tag) of 0: begin ReportLink.Font := Font; FontInfoToText(ReportLink.Font, edFont); end; 1: begin ReportLink.EvenFont := Font; FontInfoToText(ReportLink.EvenFont, edEvenFont); end; end; Modified := True; UpdatePreview; end; end; end; procedure TdxLBxReportLinkDesignWindow.pbxPreviewPaint(Sender: TObject); begin with TdxPSPaintPanel(Sender) do PaintPreview(Canvas, ClientRect); end; procedure TdxLBxReportLinkDesignWindow.lblComboClick(Sender: TObject); begin ActivateComboBoxControl(Self, TcxLabel(Sender).FocusControl); end; procedure TdxLBxReportLinkDesignWindow.PageControl1Change(Sender: TObject); begin lblPreview.Parent := TcxPageControl(Sender).ActivePage; end; procedure TdxLBxReportLinkDesignWindow.cbxDrawModePropertiesDrawItem( AControl: TcxCustomComboBox; ACanvas: TcxCanvas; AIndex: Integer; const ARect: TRect; AState: TOwnerDrawState); begin dxPSDrawComboDrawModeItemEx(ACanvas.Canvas, AIndex, AControl.Properties.Items.Strings[AIndex], ARect, AState); end; initialization dxPSRegisterReportLink(TdxListBoxReportLink, TListBox, TdxLBxReportLinkDesignWindow); finalization dxPSUnregisterReportLink(TdxListBoxReportLink, TListBox, TdxLBxReportLinkDesignWindow); end.