Componentes.Terceros.DevExp.../official/x.48/ExpressPrinting System 4/Sources/dxPScxCheckListBoxLnk.pas
2010-01-18 18:33:24 +00:00

764 lines
25 KiB
ObjectPascal

{*******************************************************************}
{ }
{ 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 dxPScxCheckListBoxLnk;
interface
{$I cxVer.inc}
uses
Classes, Windows, Messages, Controls, Graphics, StdCtrls, ExtCtrls, ComCtrls,
Dialogs, dxPSCore, dxPSForm, dxExtCtrls, dxPSBaseGridLnk, dxPSGrLnks,
cxCheckListBox, cxLookAndFeelPainters, cxPC, cxControls, cxContainer,
cxEdit, cxCheckBox, cxLabel, Menus, cxTextEdit, cxButtons, cxGraphics,
cxMaskEdit, cxDropDownEdit, cxColorComboBox, cxLookAndFeels;
type
TcxCheckListBoxReportLinkOption = (chlbxoBorder, chlbxoHorzLines, chlbxoFlatCheckMarks);
TcxCheckListBoxReportLinkOptions = set of TcxCheckListBoxReportLinkOption;
TcxCustomCheckListBoxReportLink = class(TdxCustomListBoxReportLink)
private
FOptions: TcxCheckListBoxReportLinkOptions;
function GetcxCustomCheckListBox: TcxCustomCheckListBox;
procedure SetOptions(Value: TcxCheckListBoxReportLinkOptions);
function IsFlatCheckMarks: Boolean;
protected
procedure AssignData(ACol, ARow: Integer; ADataItem: TAbstractdxReportCellData); override;
//function GetCellColor(ACol, ARow: Integer): TColor; override;
function GetCellFontIndex(ACol, ARow: Integer): Integer; override;
function GetDataItemClass(ACol: Integer; ARow: Integer = 0): TdxReportCellDataClass; override;
procedure InternalRestoreDefaults; override;
procedure InternalRestoreFromOriginal; override;
function IsDrawBorder: Boolean; override;
function IsDrawHorzLines: Boolean; override;
procedure SetDrawMode(Value: TdxGridDrawMode); override;
function GetCustomListBox: TCustomListBox; override;
property cxCustomCheckListBox: TcxCustomCheckListBox read GetcxCustomCheckListBox;
public
procedure Assign(Source: TPersistent); override;
property Options: TcxCheckListBoxReportLinkOptions read FOptions write SetOptions
default [chlbxoBorder..chlbxoFlatCheckMarks];
end;
TcxCheckListBoxReportLink = class(TcxCustomCheckListBoxReportLink)
private
function GetCheckListBox: TcxCheckListBox;
public
property CheckListBox: TcxCheckListBox read GetCheckListBox;
published
property AutoWidth;
property Color;
property EndEllipsis;
property EvenColor;
property EvenFont;
property Font;
property Multiline;
property OddColor;
property OddFont;
property Options;
property RowAutoHeight;
property ScaleFonts;
property SupportedCustomDraw;
property Transparent;
property UseCustomPageBreaks;
property UseHorzDelimiters;
property UseVertDelimiters;
property Width;
property OnCustomDrawItem;
property OnGetCustomPageBreaks;
property OnInitializeItem;
end;
TcxfmCheckListBoxDesignWindow = class(TStandarddxReportLinkDesignWindow)
PageControl1: TcxPageControl;
tshOptions: TcxTabSheet;
tshColor: TcxTabSheet;
tshFont: TcxTabSheet;
pnlPreview: TPanel;
stTransparent: TcxLabel;
lblGridLinesColor: TcxLabel;
lblEvenColor: TcxLabel;
lblDrawMode: TcxLabel;
lblColor: TcxLabel;
cxLabel1: TcxLabel;
chbxTransparent: TcxCheckBox;
ccbxGridLineColor: TcxColorComboBox;
ccbxEvenColor: TcxColorComboBox;
ccbxColor: TcxColorComboBox;
chbxAutoWidth: TcxCheckBox;
chbxFlatCheckMarks: TcxCheckBox;
chbxRowAutoHeight: TcxCheckBox;
chbxShowBorders: TcxCheckBox;
chbxShowHorzLines: TcxCheckBox;
Image5: TImage;
imgGrid: TImage;
lblMiscellaneous: TcxLabel;
lblPreview: TcxLabel;
lblShow: TcxLabel;
edFont: TcxTextEdit;
edEvenFont: TcxTextEdit;
btnFont: TcxButton;
btnEvenFont: TcxButton;
cbxDrawMode: TcxComboBox;
procedure ccbxColorChange(Sender: TObject);
procedure pbxPreviewPaint(Sender: TObject);
procedure cbxDrawModeClick(Sender: TObject);
procedure chbxOptionsClick(Sender: TObject);
procedure chbxRowAutoHeightClick(Sender: TObject);
procedure chbxTransparentClick(Sender: TObject);
procedure btnFontClick(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;
FRectWidth: Integer;
FRectHeight: Integer;
procedure CreateControls;
function GetReportLink: TcxCustomCheckListBoxReportLink;
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;
property ReportLink: TcxCustomCheckListBoxReportLink read GetReportLink;
end;
const
cxDefaultCheckListBoxOptions = [chlbxoBorder, chlbxoHorzLines, chlbxoFlatCheckMarks];
cxCheckListBoxStrings: array[0..4] of string =
('Sample Text Row #1', 'Sample Text Row #2', 'Sample Text Row #3',
'Sample Text Row #4', 'Sample Text Row #5');
implementation
{$R *.dfm}
uses
SysUtils, Forms, cxClasses, dxPSRes, dxPSGlbl, dxPSUtl, dxPrnDev, dxPScxEditorLnks;
type
TcxCustomCheckListBoxAccess = class(TcxCustomCheckListBox);
{ TdxCheckListBoxReportLink }
procedure TcxCustomCheckListBoxReportLink.Assign(Source: TPersistent);
begin
if Source is TcxCustomCheckListBoxReportLink then
Options := TcxCustomCheckListBoxReportLink(Source).Options;
inherited Assign(Source);
end;
procedure TcxCustomCheckListBoxReportLink.InternalRestoreDefaults;
begin
inherited InternalRestoreDefaults;
Options := cxDefaultCheckListBoxOptions;
end;
procedure TcxCustomCheckListBoxReportLink.InternalRestoreFromOriginal;
begin
inherited InternalRestoreFromOriginal;
if TcxCustomCheckListBoxAccess(cxCustomCheckListBox).LookAndFeel.Kind = lfUltraFlat then
Options := Options + [chlbxoFlatCheckMarks]
else
Options := Options - [chlbxoFlatCheckMarks];
end;
function TcxCustomCheckListBoxReportLink.IsDrawBorder: Boolean;
begin
Result := chlbxoBorder in Options;
end;
function TcxCustomCheckListBoxReportLink.IsDrawHorzLines: Boolean;
begin
Result := chlbxoHorzLines in Options;
end;
procedure TcxCustomCheckListBoxReportLink.SetDrawMode(Value: TdxGridDrawMode);
begin
if Value > gdmOddEven then Value := gdmOddEven;
inherited;
end;
function TcxCustomCheckListBoxReportLink.GetCustomListBox: TCustomListBox;
begin
if cxCustomCheckListBox <> nil then
Result := cxContainer_GetInnerControl(cxCustomCheckListBox) as TCustomListBox
else
Result := nil;
end;
procedure TcxCustomCheckListBoxReportLink.AssignData(ACol, ARow: Integer; ADataItem: TAbstractdxReportCellData);
begin
inherited;
with TdxReportCellCheckImage(ADataItem) do
begin
CheckPos := ccpLeft;
Checked := TcxCustomCheckListBoxAccess(cxCustomCheckListBox).Items[ARow].State > cbsUnchecked;
Enabled := (TcxCustomCheckListBoxAccess(cxCustomCheckListBox).Items[ARow].State < cbsGrayed) and
TcxCustomCheckListBoxAccess(cxCustomCheckListBox).Items[ARow].Enabled;
FlatBorder := IsFlatCheckMarks;
Glyph := TcxCustomCheckListBoxAccess(cxCustomCheckListBox).Glyph;
end;
end;
function TcxCustomCheckListBoxReportLink.GetCellFontIndex(ACol, ARow: Integer): Integer;
begin
Result := inherited GetCellFontIndex(ACol, ARow);
end;
function TcxCustomCheckListBoxReportLink.GetDataItemClass(ACol: Integer; ARow: Integer = 0): TdxReportCellDataClass;
begin
Result := TdxReportCellCheckImage;
end;
function TcxCustomCheckListBoxReportLink.GetcxCustomCheckListBox: TcxCustomCheckListBox;
begin
Result := TcxCustomCheckListBox(Component);
end;
procedure TcxCustomCheckListBoxReportLink.SetOptions(Value: TcxCheckListBoxReportLinkOptions);
begin
if FOptions <> Value then
begin
FOptions := Value;
LinkModified(True);
end;
end;
function TcxCustomCheckListBoxReportLink.IsFlatCheckMarks: Boolean;
begin
Result := chlbxoFlatCheckMarks in Options;
end;
{ TcxCheckListBoxReportLink }
function TcxCheckListBoxReportLink.GetCheckListBox: TcxCheckListBox;
begin
Result := TcxCheckListBox(Component);
end;
{ TcxfmCheckListBoxDesignWindow }
constructor TcxfmCheckListBoxDesignWindow.Create(AOwner: TComponent);
begin
HelpContext := dxhcCheckListBoxReportLinkDesigner;
inherited Create(AOwner);
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];
end;
procedure TcxfmCheckListBoxDesignWindow.CreateControls;
function CreatePreviewPane(AHost: TWinControl; AnOnPaint: TNotifyEvent): TdxPSPaintPanel;
var
R: TRect;
begin
Result := TdxPSPaintPanel.Create(Self);
with Result do
begin
Parent := AHost;
R := AHost.BoundsRect;
OffsetRect(R, -R.Left, -R.Top);
InflateRect(R, -1, -1);
BoundsRect := R;
EdgeInner := esNone;
EdgeOuter := esNone;
OnPaint := AnOnPaint
end;
end;
begin
FPreviewBox := CreatePreviewPane(pnlPreview, pbxPreviewPaint);
end;
procedure TcxfmCheckListBoxDesignWindow.DoInitialize;
begin
inherited DoInitialize;
with cbxDrawMode do
ItemIndex := Properties.Items.IndexOfObject(TObject(ReportLink.DrawMode));
chbxShowBorders.Checked := chlbxoBorder in ReportLink.Options;
chbxShowHorzLines.Checked := chlbxoHorzLines in ReportLink.Options;
chbxFlatCheckMarks.Checked := chlbxoFlatCheckMarks in ReportLink.Options;
chbxAutoWidth.Checked := ReportLink.AutoWidth;
chbxRowAutoHeight.Checked := ReportLink.RowAutoHeight;
chbxTransparent.Checked := ReportLink.Transparent;
ccbxColor.ColorValue := ReportLink.Color;
ccbxEvenColor.ColorValue := ReportLink.EvenColor;
ccbxGridLineColor.ColorValue := ReportLink.GridLineColor;
FontInfoToText(ReportLink.Font, edFont);
FontInfoToText(ReportLink.EvenFont, edEvenFont);
end;
{$IFDEF DELPHI7}
function TcxfmCheckListBoxDesignWindow.GetPreviewHost: TCustomPanel;
begin
Result := pnlPreview;
end;
{$ENDIF}
procedure TcxfmCheckListBoxDesignWindow.LoadStrings;
begin
inherited LoadStrings;
tshOptions.Caption := cxGetResourceString(@sdxOptions);
tshFont.Caption := cxGetResourceString(@sdxFonts);
tshColor.Caption := cxGetResourceString(@sdxColors);
lblPreview.Caption := DropAmpersand(cxGetResourceString(@sdxPreview));
lblShow.Caption := cxGetResourceString(@sdxShow);
chbxShowBorders.Caption := cxGetResourceString(@sdxBorderLines);
chbxShowHorzLines.Caption := cxGetResourceString(@sdxHorzLines);
lblMiscellaneous.Caption := cxGetResourceString(@sdxMiscellaneous);
chbxFlatCheckMarks.Caption := cxGetResourceString(@sdxFlatCheckMarks);
chbxAutoWidth.Caption := cxGetResourceSTring(@sdxAutoWidth);
chbxRowAutoHeight.Caption := cxGetResourceString(@sdxRowAutoHeight);
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);
end;
procedure TcxfmCheckListBoxDesignWindow.UpdateControlsState;
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;
btnEvenFont.Enabled := ReportLink.DrawMode in [gdmOddEven, gdmChess];
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;
end;
procedure TcxfmCheckListBoxDesignWindow.UpdatePreview;
begin
FPreviewBox.Invalidate;
end;
procedure TcxfmCheckListBoxDesignWindow.PaintPreview(ACanvas: TCanvas; R: TRect);
const
RowCount = 5;
type
TdxCheckRowViewInfo = record
State: TCheckBoxState;
Text: string;
Color: TColor;
Font: TFont;
Sides: TdxCellSides;
Rect: TRect;
BackgroundRect: TRect;
CheckRect: TRect;
TextRect: TRect;
end;
TdxCheckRowViewInfos = array of TdxCheckRowViewInfo;
procedure CalculateViewInfos(out AViewInfos: TdxCheckRowViewInfos);
procedure CalculateViewInfo(AnIndex: Integer; var AViewInfo: TdxCheckRowViewInfo);
const
States: array[0..RowCount - 1] of TCheckBoxState = (
cbUnchecked, cbChecked, cbGrayed, cbUnchecked, cbChecked
);
var
V: Integer;
begin
with AViewInfo do
begin
State := States[AnIndex];
Text := cxCheckListBoxStrings[AnIndex];
Color := ReportLink.GetCellColor(0, AnIndex);
Font := TFont.Create;
Font.Assign(ReportLink.GetCellFont(0, AnIndex));
Font.Size := 8;
Sides := csAll;
if not ReportLink.IsDrawBorder then
begin
Sides := Sides - csLeftRight;
if AnIndex = 0 then Exclude(Sides, csTop);
if AnIndex >= RowCount - 1 then Exclude(Sides, csBottom);
end;
if not ReportLink.IsDrawHorzLines then
begin
if AnIndex > 0 then Exclude(Sides, csTop);
if AnIndex < RowCount - 1 then Exclude(Sides, csBottom);
end;
Rect := R;
InflateRect(Rect, -4, -4);
V := (Rect.Bottom - R.Top) div RowCount;
Inc(Rect.Top, (V - 1) * AnIndex);
if AnIndex <> RowCount - 1 then
Rect.Bottom := Rect.Top + V;
BackgroundRect := Rect;
InflateRect(BackgroundRect, -1, -1);
CheckRect := BackgroundRect;
InflateRect(CheckRect, 0, -(CheckRect.Bottom - CheckRect.Top - dxPSGlbl.CheckHeight) div 2);
Inc(CheckRect.Left, 2);
CheckRect.Right := CheckRect.Left + dxPSGlbl.CheckWidth;
TextRect := BackgroundRect;
ACanvas.Font := Font;
V := ACanvas.TextHeight('Wq');
InflateRect(TextRect, 0, -(TextRect.Bottom - TextRect.Top - V) div 2);
TextRect.Left := CheckRect.Right + 4;
end;
end;
var
I: Integer;
begin
SetLength(AViewInfos, RowCount);
for I := 0 to RowCount - 1 do
CalculateViewInfo(I, AViewInfos[I]);
end;
procedure DrawCheckRows(const AViewInfos: TdxCheckRowViewInfos);
procedure DrawCheckRow(const AViewInfo: TdxCheckRowViewInfo);
function GetSideRect(ASide: TdxCellSide): TRect;
begin
Result := AViewInfo.Rect;
with Result do
case ASide of
csLeft:
Right := Left + 1;
csTop:
Bottom := Top + 1;
csRight:
Left := Right - 1;
csBottom:
Top := Bottom - 1;
end;
end;
procedure DrawSides;
var
Side: TdxCellSide;
begin
ACanvas.Brush.Style := bsSolid;
ACanvas.Brush.Color := ReportLink.GridLineColor;
for Side := Low(TdxCellSide) to High(TdxCellSide) do
begin
if Side in AViewInfo.Sides then
ACanvas.FillRect(GetSideRect(Side));
end;
end;
procedure DrawBackground;
begin
ACanvas.Brush.Style := bsSolid;
ACanvas.Brush.Color := AViewInfo.Color;
ACanvas.FillRect(AViewInfo.BackgroundRect);
end;
procedure DrawCheck;
const
CheckStateMap: array[TCheckBoxState] of UINT =
(DFCS_BUTTONCHECK, DFCS_BUTTONCHECK or DFCS_CHECKED, DFCS_BUTTON3STATE or DFCS_CHECKED);
FlatBorderMap: array[Boolean] of UINT = (0, DFCS_FLAT);
var
uState: UINT;
begin
uState := DFCS_TRANSPARENT or CheckStateMap[AViewInfo.State] or
FlatBorderMap[ReportLink.IsFlatCheckMarks];
DrawFrameControl(ACanvas.Handle, AViewInfo.CheckRect, DFC_BUTTON, uState);
end;
procedure DrawText;
var
R: TRect;
begin
ACanvas.Brush.Style := bsClear;
ACanvas.Font := AViewInfo.Font;
R := AViewInfo.TextRect;
ACanvas.TextRect(R, R.Left, R.Top, AViewInfo.Text);
end;
begin
DrawSides;
if not ReportLink.Transparent then
DrawBackground;
DrawCheck;
DrawText;
end;
var
I: Integer;
begin
for I := 0 to RowCount - 1 do
DrawCheckRow(AViewInfos[I]);
end;
procedure FreeViewInfos(var AViewInfos: TdxCheckRowViewInfos);
procedure FreeViewInfo(var AViewInfo: TdxCheckRowViewInfo);
begin
FreeAndNil(AViewInfo.Font);
end;
var
I: Integer;
begin
for I := 0 to RowCount - 1 do
FreeViewInfo(AViewInfos[I]);
SetLength(AViewInfos, 0);
end;
var
ViewInfos: TdxCheckRowViewInfos;
begin
inherited;
ACanvas.Brush.Color := clWindow;
CalculateViewInfos(ViewInfos);
try
DrawCheckRows(ViewInfos);
finally
FreeViewInfos(ViewInfos);
end;
end;
procedure TcxfmCheckListBoxDesignWindow.ccbxColorChange(Sender: TObject);
var
Color: TColor;
begin
if LockControlsUpdate then Exit;
Color := TcxColorComboBox(Sender).ColorValue;
case TTagToInt(TcxColorComboBox(Sender).Tag) of
0: ReportLink.Color := Color;
1: ReportLink.EvenColor := Color;
2: ReportLink.GridLineColor := Color;
end;
Modified := True;
UpdatePreview;
end;
procedure TcxfmCheckListBoxDesignWindow.pbxPreviewPaint(Sender: TObject);
begin
with TdxPSPaintPanel(Sender) do
PaintPreview(Canvas, ClientRect);
end;
procedure TcxfmCheckListBoxDesignWindow.cbxDrawModeClick(Sender: TObject);
begin
if LockControlsUpdate then Exit;
with TcxComboBox(Sender) do
ReportLink.DrawMode := TdxGridDrawMode(Properties.Items.Objects[ItemIndex]);
Modified := True;
UpdatePreview;
end;
procedure TcxfmCheckListBoxDesignWindow.chbxOptionsClick(Sender: TObject);
var
Option: TcxCheckListBoxReportLinkOption;
begin
if LockControlsUpdate then Exit;
Option := TcxCheckListBoxReportLinkOption(TTagToInt(TcxCheckBox(Sender).Tag));
with ReportLink do
if TcxCheckBox(Sender).Checked then
Options := Options + [Option]
else
Options := Options - [Option];
Modified := True;
UpdatePreview;
end;
procedure TcxfmCheckListBoxDesignWindow.chbxAutoWidthClick(Sender: TObject);
begin
if LockControlsUpdate then Exit;
ReportLink.AutoWidth := TcxCheckBox(Sender).Checked;
Modified := True;
end;
procedure TcxfmCheckListBoxDesignWindow.chbxRowAutoHeightClick(Sender: TObject);
begin
if LockControlsUpdate then Exit;
ReportLink.RowAutoHeight := TcxCheckBox(Sender).Checked;
Modified := True;
UpdatePreview;
end;
procedure TcxfmCheckListBoxDesignWindow.chbxTransparentClick(Sender: TObject);
begin
if LockControlsUpdate then Exit;
ReportLink.Transparent := TcxCheckBox(Sender).Checked;
Modified := True;
UpdatePreview;
end;
procedure TcxfmCheckListBoxDesignWindow.stTransparentClick(Sender: TObject);
begin
if chbxTransparent.CanFocus then ActiveControl := chbxTransparent;
chbxTransparent.Checked := not chbxTransparent.Checked;
end;
procedure TcxfmCheckListBoxDesignWindow.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;
function TcxfmCheckListBoxDesignWindow.GetReportLink: TcxCustomCheckListBoxReportLink;
begin
Result := inherited ReportLink as TcxCustomCheckListBoxReportLink;
end;
procedure TcxfmCheckListBoxDesignWindow.CMDialogChar(var Message: TCMDialogChar);
var
I: Integer;
begin
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 TcxfmCheckListBoxDesignWindow.PageControl1Change(Sender: TObject);
begin
lblPreview.Parent := TcxPageControl(Sender).ActivePage;
end;
procedure TcxfmCheckListBoxDesignWindow.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(TcxCheckListBoxReportLink, TcxCheckListBox, TcxfmCheckListBoxDesignWindow);
finalization
dxPSUnregisterReportLink(TcxCheckListBoxReportLink, TcxCheckListBox, TcxfmCheckListBoxDesignWindow);
end.