git-svn-id: https://192.168.0.254/svn/Componentes.Terceros.DevExpressVCL@55 05c56307-c608-d34a-929d-697000501d7a
732 lines
22 KiB
ObjectPascal
732 lines
22 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 dxPSfmLnkAddE;
|
|
|
|
interface
|
|
|
|
{$I cxVer.inc}
|
|
|
|
uses
|
|
Windows, Messages, SysUtils, Classes, Graphics, Controls, StdCtrls, Registry,
|
|
Menus, Forms, ComCtrls, ExtCtrls, ImgList, dxPSCore, dxPSForm;
|
|
|
|
type
|
|
TSortOrder = (soNone, soUp, soDown);
|
|
|
|
TdxfmAddReportLinkClass = class(TCustomdxPSForm)
|
|
btnOK: TButton;
|
|
btnCancel: TButton;
|
|
btnHelp: TButton;
|
|
ilLinks: TImageList;
|
|
btnDesign: TButton;
|
|
pmLinks: TPopupMenu;
|
|
miSelect: TMenuItem;
|
|
miDesign: TMenuItem;
|
|
miLine1: TMenuItem;
|
|
pnlHost: TPanel;
|
|
pnlNameHost: TPanel;
|
|
lblName: TLabel;
|
|
edName: TEdit;
|
|
pnlCaptionHost: TPanel;
|
|
lblCaption: TLabel;
|
|
edCaption: TEdit;
|
|
pnlSeparatorHost: TPanel;
|
|
bvlSeparator: TBevel;
|
|
pgctrlItems: TPageControl;
|
|
tbsItems: TTabSheet;
|
|
lvItems: TListView;
|
|
pnlCreatorHost: TPanel;
|
|
lblCreator: TLabel;
|
|
edCreator: TEdit;
|
|
btnDescription: TButton;
|
|
ilColumns: TImageList;
|
|
procedure btnHelpClick(Sender: TObject);
|
|
procedure lvItemsDblClick(Sender: TObject);
|
|
procedure lvItemsColumnClick(Sender: TObject; Column: TListColumn);
|
|
procedure lvItemsCompare(Sender: TObject; Item1, Item2: TListItem;
|
|
Data: Integer; var Compare: Integer);
|
|
procedure FormResize(Sender: TObject);
|
|
procedure btnDesignClick(Sender: TObject);
|
|
procedure pmLinksPopup(Sender: TObject);
|
|
procedure lvItemsChange(Sender: TObject; Item: TListItem; Change: TItemChange);
|
|
procedure btnDescriptionClick(Sender: TObject);
|
|
procedure FormCreate(Sender: TObject);
|
|
procedure FormDestroy(Sender: TObject);
|
|
procedure lvItemsCustomDrawItem(Sender: TCustomListView;
|
|
Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);
|
|
private
|
|
FDesignBtnPressed: Boolean;
|
|
{$IFDEF DELPHI5}
|
|
FPrevListViewWndProc: TWndMethod;
|
|
{$ENDIF}
|
|
FReportLinkDescription: string;
|
|
FSortedColumnIndex: Integer;
|
|
FSortOrder: TSortOrder;
|
|
function GetListViewHeader: HWND;
|
|
function GetReportLinkCaption: string;
|
|
function GetReportLinkCreator: string;
|
|
function GetReportLinkName: string;
|
|
function GetSelectedReportLinkClass: TdxReportLinkClass;
|
|
procedure SetReportLinkCaption(const Value: string);
|
|
procedure SetReportLinkCreator(Value: string);
|
|
procedure SetReportLinkName(const Value: string);
|
|
|
|
function CanEditCaption: Boolean;
|
|
function CanEditCreator: Boolean;
|
|
function CanEditDescription: Boolean;
|
|
function CanEditName: Boolean;
|
|
function CanDesign: Boolean;
|
|
function CanSelect: Boolean;
|
|
procedure Initialize;
|
|
procedure RefreshList;
|
|
procedure SetActiveControl;
|
|
{$IFDEF DELPHI5}
|
|
procedure SetColumnSortMark(AIndex: Integer; ASortOrder: TSortOrder);
|
|
{$ENDIF}
|
|
procedure SortColumn(Column: TListColumn; ASortOrder: TSortOrder);
|
|
procedure RefreshSorting;
|
|
procedure UpdateControlsState;
|
|
|
|
{$IFDEF DELPHI5}
|
|
procedure AssignListViewHeaderImages;
|
|
procedure ListViewWndProc(var Message: TMessage);
|
|
procedure RestoreListViewWndProc;
|
|
procedure SubstituteListViewWndProc;
|
|
{$ENDIF}
|
|
procedure CMDialogChar(var Message: TCMDialogChar); message CM_DIALOGCHAR;
|
|
protected
|
|
procedure CreateWnd; override;
|
|
procedure BeforeConstruction; override;
|
|
|
|
procedure LoadSorting(const APath: string);
|
|
procedure SaveSorting(const APath: string);
|
|
|
|
property ListViewHeader: HWND read GetListViewHeader;
|
|
public
|
|
function Execute: Boolean;
|
|
procedure LoadFromRegistry(const APath: string); override;
|
|
procedure SaveToRegistry(const APath: string); override;
|
|
|
|
property ReportLinkCaption: string read GetReportLinkCaption write SetReportLinkCaption;
|
|
property ReportLinkCreator: string read GetReportLinkCreator write SetReportLinkCreator;
|
|
property ReportLinkDescription: string read FReportLinkDescription write FReportLinkDescription;
|
|
property ReportLinkName: string read GetReportLinkName write SetReportLinkName;
|
|
property SelectedReportLinkClass: TdxReportLinkClass read GetSelectedReportLinkClass;
|
|
end;
|
|
|
|
PdxAddReportLinkClassDlgData = ^TdxAddReportLinkClassDlgData;
|
|
TdxAddReportLinkClassDlgData = record
|
|
ReportLinkClass: TdxReportLinkClass;
|
|
ReportLinkName: string;
|
|
ReportLinkCaption: string;
|
|
ReportLinkCreator: string;
|
|
ReportLinkDescription: string;
|
|
DesignBtnPressed: Boolean;
|
|
HelpContext: THelpContext;
|
|
end;
|
|
|
|
function dxShowAddReportLinkClassDlg(var AData: TdxAddReportLinkClassDlgData): Boolean;
|
|
|
|
implementation
|
|
|
|
{$R *.DFM}
|
|
|
|
uses
|
|
Dialogs, CommCtrl, dxBase, dxPSGlbl, dxPSUtl, dxPSDsgProxies, dxPSPopupMan,
|
|
dxPSfmEditDesc;
|
|
|
|
const
|
|
sdxSortedColumnIndex = 'SortedColumnIndex'; // Don't Localize
|
|
sdxSortOrder = 'SortOrder'; // Don't Localize
|
|
|
|
type
|
|
TCustomListViewAccess = class(TCustomListView);
|
|
|
|
function dxShowAddReportLinkClassDlg(var AData: TdxAddReportLinkClassDlgData): Boolean;
|
|
var
|
|
Dialog: TdxfmAddReportLinkClass;
|
|
begin
|
|
Dialog := TdxfmAddReportLinkClass.Create(nil);
|
|
try
|
|
Dialog.ReportLinkName := AData.ReportLinkName;
|
|
Dialog.ReportLinkCaption := AData.ReportLinkCaption;
|
|
Dialog.ReportLinkCreator := AData.ReportLinkCreator;
|
|
Dialog.ReportLinkDescription := AData.ReportLinkDescription;
|
|
if AData.HelpContext <> 0 then
|
|
Dialog.HelpContext := AData.HelpContext;
|
|
Result := Dialog.Execute;
|
|
if Result then
|
|
begin
|
|
AData.ReportLinkClass := Dialog.SelectedReportLinkClass;
|
|
AData.ReportLinkName := Dialog.ReportLinkName;
|
|
AData.ReportLinkCaption := Dialog.ReportLinkCaption;
|
|
AData.ReportLinkCreator := Dialog.ReportLinkCreator;
|
|
AData.ReportLinkDescription := Dialog.ReportLinkDescription;
|
|
AData.DesignBtnPressed := Dialog.FDesignBtnPressed;
|
|
end;
|
|
finally
|
|
Dialog.Free;
|
|
end;
|
|
end;
|
|
|
|
{ TfmAddEmptyReportLink }
|
|
|
|
procedure TdxfmAddReportLinkClass.FormCreate(Sender: TObject);
|
|
begin
|
|
FSortedColumnIndex := -1;
|
|
HelpContext := dxPSGlbl.dxhcAddEmptyLinkDlg;
|
|
dxPSDsgProxies.dxIdeImagesProvider.Refresh;
|
|
lvItems.SmallImages := dxPSDsgProxies.dxIdeImagesProvider.Images;
|
|
{$IFDEF DELPHI5}
|
|
SubstituteListViewWndProc;
|
|
AssignListViewHeaderImages;
|
|
{$ENDIF}
|
|
dxPSPopupMenuController.RegisterControl(lvItems);
|
|
end;
|
|
|
|
procedure TdxfmAddReportLinkClass.FormDestroy(Sender: TObject);
|
|
begin
|
|
dxPSPopupMenuController.UnregisterControl(lvItems);
|
|
{$IFDEF DELPHI5}
|
|
RestoreListViewWndProc;
|
|
{$ENDIF}
|
|
end;
|
|
|
|
function TdxfmAddReportLinkClass.Execute: Boolean;
|
|
begin
|
|
Initialize;
|
|
Result := (ShowModal = mrOk) and (lvItems.Selected <> nil);
|
|
end;
|
|
|
|
procedure TdxfmAddReportLinkClass.LoadFromRegistry(const APath: string);
|
|
begin
|
|
inherited;
|
|
dxLoadListViewColumnsFromRegistry(lvItems, APath);
|
|
LoadSorting(APath + '\' + lvItems.Name);
|
|
end;
|
|
|
|
procedure TdxfmAddReportLinkClass.SaveToRegistry(const APath: string);
|
|
begin
|
|
inherited;
|
|
dxSaveListViewColumnsToRegistry(lvItems, APath);
|
|
SaveSorting(APath + '\' + lvItems.Name);
|
|
end;
|
|
|
|
procedure TdxfmAddReportLinkClass.CreateWnd;
|
|
begin
|
|
inherited;
|
|
SendMessage(Handle, WM_SETICON, 1, Icon.Handle);
|
|
end;
|
|
|
|
procedure TdxfmAddReportLinkClass.BeforeConstruction;
|
|
begin
|
|
inherited;
|
|
Options := Options + [foSizeableDialog];
|
|
end;
|
|
|
|
procedure TdxfmAddReportLinkClass.LoadSorting(const APath: string);
|
|
begin
|
|
with TRegistry.Create do
|
|
try
|
|
if OpenKey(APath, False) then
|
|
try
|
|
if ValueExists(sdxSortedColumnIndex) then
|
|
FSortedColumnIndex := ReadInteger(sdxSortedColumnIndex);
|
|
if ValueExists(sdxSortOrder) then
|
|
FSortOrder := TSortOrder(ReadInteger(sdxSortOrder));
|
|
except
|
|
end;
|
|
finally
|
|
Free;
|
|
end;
|
|
end;
|
|
|
|
procedure TdxfmAddReportLinkClass.SaveSorting(const APath: string);
|
|
begin
|
|
with TRegistry.Create do
|
|
try
|
|
if OpenKey(APath, True) then
|
|
begin
|
|
WriteInteger(sdxSortedColumnIndex, FSortedColumnIndex);
|
|
WriteInteger(sdxSortOrder, Integer(FSortOrder));
|
|
end;
|
|
finally
|
|
Free;
|
|
end;
|
|
end;
|
|
|
|
procedure TdxfmAddReportLinkClass.pmLinksPopup(Sender: TObject);
|
|
begin
|
|
miSelect.Enabled := CanSelect;
|
|
miDesign.Enabled := CanDesign;
|
|
end;
|
|
|
|
procedure TdxfmAddReportLinkClass.lvItemsChange(Sender: TObject;
|
|
Item: TListItem; Change: TItemChange);
|
|
begin
|
|
if Change = ctState then UpdateControlsState;
|
|
end;
|
|
|
|
procedure TdxfmAddReportLinkClass.btnDescriptionClick(Sender: TObject);
|
|
var
|
|
S: string;
|
|
begin
|
|
S := ReportLinkDescription;
|
|
if dxEditDescriptionDlg(S) then
|
|
ReportLinkDescription := S;
|
|
end;
|
|
|
|
procedure TdxfmAddReportLinkClass.btnDesignClick(Sender: TObject);
|
|
begin
|
|
FDesignBtnPressed := True;
|
|
ModalResult := mrOk;
|
|
end;
|
|
|
|
procedure TdxfmAddReportLinkClass.btnHelpClick(Sender: TObject);
|
|
begin
|
|
if HelpContext <> 0 then Application.HelpContext(HelpContext);
|
|
end;
|
|
|
|
procedure TdxfmAddReportLinkClass.lvItemsDblClick(Sender: TObject);
|
|
begin
|
|
if lvItems.Selected <> nil then ModalResult := mrOk;
|
|
end;
|
|
|
|
procedure TdxfmAddReportLinkClass.lvItemsColumnClick(Sender: TObject; Column: TListColumn);
|
|
const
|
|
SortOrderToggleMap: array[TSortOrder] of TSortOrder = (soUp, soDown, soUp);
|
|
var
|
|
KeyboardState: TKeyboardState;
|
|
begin
|
|
Windows.GetKeyboardState(KeyboardState);
|
|
if KeyboardState[VK_CONTROL] and $80 <> 0 then
|
|
if FSortedColumnIndex <> -1 then
|
|
begin
|
|
RefreshList;
|
|
{$IFDEF DELPHI5}
|
|
SetColumnSortMark(FSortedColumnIndex, soNone);
|
|
{$ENDIF}
|
|
FSortOrder := soNone;
|
|
FSortedColumnIndex := -1;
|
|
end
|
|
else
|
|
else
|
|
begin
|
|
FSortOrder := SortOrderToggleMap[FSortOrder];
|
|
SortColumn(Column, FSortOrder);
|
|
end;
|
|
end;
|
|
|
|
procedure TdxfmAddReportLinkClass.FormResize(Sender: TObject);
|
|
const
|
|
BtnOffsetY = 6;
|
|
var
|
|
BtnOffsetX, RightOrigin, TopOrigin: Integer;
|
|
begin
|
|
BtnOffsetX := pnlHost.Left;
|
|
|
|
with pnlHost do
|
|
SetBounds(Left, Top, Self.ClientWidth - 2 * Left,
|
|
Self.ClientHeight - Top - btnOK.Height - 2 * BtnOffsetY);
|
|
|
|
RightOrigin := pnlHost.Left + pnlHost.Width;
|
|
TopOrigin := pnlHost.Top + pnlHost.Height + BtnOffsetY;
|
|
|
|
PlaceButtons([btnHelp, btnDesign, btnCancel, btnOK], BtnOffsetX, RightOrigin, TopOrigin);
|
|
end;
|
|
|
|
procedure TdxfmAddReportLinkClass.lvItemsCompare(Sender: TObject; Item1, Item2: TListItem;
|
|
Data: Integer; var Compare: Integer);
|
|
begin
|
|
if Data = 0 then
|
|
Compare := CompareText(Item1.Caption, Item2.Caption)
|
|
else
|
|
Compare := CompareText(Item1.SubItems[Data - 1], Item2.SubItems[Data - 1]);
|
|
|
|
if FSortOrder = soUp then
|
|
Compare := -Compare;
|
|
end;
|
|
|
|
procedure TdxfmAddReportLinkClass.lvItemsCustomDrawItem(
|
|
Sender: TCustomListView; Item: TListItem; State: TCustomDrawState;
|
|
var DefaultDraw: Boolean);
|
|
var
|
|
R: TRect;
|
|
DC: HDC;
|
|
BkColor, TextColor: COLORREF;
|
|
X, Y: Integer;
|
|
begin
|
|
if [cdsSelected, cdsFocused] * State = [cdsSelected, cdsFocused] then
|
|
begin
|
|
R := Item.DisplayRect(drIcon);
|
|
if Item.ImageIndex = -1 then
|
|
begin
|
|
Sender.Canvas.Brush.Color := clWindow;
|
|
Sender.Canvas.FillRect(R);
|
|
end
|
|
else
|
|
TCustomListViewAccess(Sender).SmallImages.Draw(Sender.Canvas, R.Left, R.Top, Item.ImageIndex);
|
|
|
|
DC := Sender.Canvas.Handle;
|
|
BkColor := SetBkColor(DC, ColorToRGB(clHighLight));
|
|
TextColor := SetTextColor(DC, ColorToRGB(clHighLightText));
|
|
|
|
R := Item.DisplayRect(drLabel);
|
|
with R do
|
|
begin
|
|
X := R.Left + 2;
|
|
Y := Top + (Bottom - Top - Canvas.TextHeight(Item.Caption)) div 2;
|
|
end;
|
|
Sender.Canvas.TextRect(R, X, Y, Item.Caption);
|
|
|
|
ListView_GetSubItemRect(Sender.Handle, Item.Index, 1, LVIR_LABEL, @R);
|
|
with R do
|
|
begin
|
|
X := R.Left + 6;
|
|
Y := Top + (Bottom - Top - Sender.Canvas.TextHeight(Item.SubItems[0])) div 2;
|
|
end;
|
|
Sender.Canvas.TextRect(R, X, Y, Item.SubItems[0]);
|
|
|
|
SetTextColor(DC, TextColor);
|
|
SetBkColor(DC, BkColor);
|
|
|
|
if cdsFocused in State then
|
|
begin
|
|
UnionRect(R, R, Item.DisplayRect(drLabel));
|
|
Sender.Canvas.DrawFocusRect(R);
|
|
end;
|
|
DefaultDraw := False;
|
|
end;
|
|
end;
|
|
|
|
function TdxfmAddReportLinkClass.GetListViewHeader: HWND;
|
|
begin
|
|
lvItems.HandleNeeded;
|
|
if lvItems.HandleAllocated then
|
|
Result := ListView_GetHeader(lvItems.Handle)
|
|
else
|
|
Result := 0;
|
|
end;
|
|
|
|
function TdxfmAddReportLinkClass.GetReportLinkCaption: string;
|
|
begin
|
|
Result := edCaption.Text;
|
|
end;
|
|
|
|
function TdxfmAddReportLinkClass.GetReportLinkCreator: string;
|
|
begin
|
|
Result := edCreator.Text;
|
|
end;
|
|
|
|
function TdxfmAddReportLinkClass.GetReportLinkName: string;
|
|
begin
|
|
Result := edName.Text;
|
|
end;
|
|
|
|
function TdxfmAddReportLinkClass.GetSelectedReportLinkClass: TdxReportLinkClass;
|
|
begin
|
|
if lvItems.Selected <> nil then
|
|
Result := TdxReportLinkClass(lvItems.Selected.Data)
|
|
else
|
|
Result := nil;
|
|
end;
|
|
|
|
procedure TdxfmAddReportLinkClass.SetReportLinkCaption(const Value: string);
|
|
begin
|
|
edCaption.Text := Value;
|
|
end;
|
|
|
|
procedure TdxfmAddReportLinkClass.SetReportLinkCreator(Value: string);
|
|
begin
|
|
edCreator.Text := Value;
|
|
end;
|
|
|
|
procedure TdxfmAddReportLinkClass.SetReportLinkName(const Value: string);
|
|
begin
|
|
edName.Text := Value;
|
|
end;
|
|
|
|
function TdxfmAddReportLinkClass.CanDesign: Boolean;
|
|
begin
|
|
Result := dxPSDesignerClassByLinkClass(SelectedReportLinkClass) <> nil;
|
|
end;
|
|
|
|
function TdxfmAddReportLinkClass.CanEditCaption: Boolean;
|
|
begin
|
|
Result := SelectedReportLinkClass <> nil;
|
|
end;
|
|
|
|
function TdxfmAddReportLinkClass.CanEditCreator: Boolean;
|
|
begin
|
|
Result := SelectedReportLinkClass <> nil;
|
|
end;
|
|
|
|
function TdxfmAddReportLinkClass.CanEditDescription: Boolean;
|
|
begin
|
|
Result := SelectedReportLinkClass <> nil;
|
|
end;
|
|
|
|
function TdxfmAddReportLinkClass.CanEditName: Boolean;
|
|
begin
|
|
Result := SelectedReportLinkClass <> nil;
|
|
end;
|
|
|
|
function TdxfmAddReportLinkClass.CanSelect: Boolean;
|
|
begin
|
|
Result := lvItems.Selected <> nil;
|
|
end;
|
|
|
|
procedure TdxfmAddReportLinkClass.Initialize;
|
|
begin
|
|
btnHelp.Visible := HelpContext <> 0;
|
|
RefreshList;
|
|
with lvItems do
|
|
begin
|
|
btnOK.Enabled := Items.Count > 0;
|
|
if Items.Count > 0 then
|
|
begin
|
|
Selected := Items[0];
|
|
ItemFocused := Selected;
|
|
end;
|
|
end;
|
|
|
|
pmLinks.Images := ilLinks;
|
|
miDesign.ImageIndex := 0;
|
|
|
|
FormResize(nil);
|
|
SetActiveControl;
|
|
RefreshSorting;
|
|
end;
|
|
|
|
procedure TdxfmAddReportLinkClass.RefreshList;
|
|
var
|
|
Selection: TList;
|
|
I, J: Integer;
|
|
LinkClasses: TdxClassList;
|
|
ComponentClasses: TdxClassList;
|
|
LinkClass: TdxReportLinkClass;
|
|
ComponentClass: TComponentClass;
|
|
begin
|
|
lvItems.Items.BeginUpdate;
|
|
try
|
|
Selection := TList.Create;
|
|
try
|
|
dxPSUtl.dxSaveListViewSelection(lvItems, Selection);
|
|
try
|
|
lvItems.Items.Clear;
|
|
LinkClasses := TdxClassList.Create;
|
|
try
|
|
ComponentClasses := TdxClassList.Create;
|
|
try
|
|
dxPSGetActiveReportLinksList(LinkClasses);
|
|
for I := 0 to LinkClasses.Count - 1 do
|
|
begin
|
|
ComponentClasses.Clear;
|
|
|
|
LinkClass := TdxReportLinkClass(LinkClasses[I]);
|
|
with lvItems.Items.Add do
|
|
begin
|
|
LinkClass.GetSupportedComponentList(ComponentClasses);
|
|
for J := 0 to ComponentClasses.Count - 1 do
|
|
begin
|
|
ComponentClass := TComponentClass(ComponentClasses[J]);
|
|
if J = 0 then
|
|
ImageIndex := dxPSDsgProxies.dxIdeImagesProvider.ImageIndexes[ComponentClass];
|
|
if Caption <> '' then
|
|
Caption := Caption + ', ';
|
|
if ComponentClass <> nil then
|
|
Caption := Caption + ComponentClass.ClassName;
|
|
end;
|
|
Data := (LinkClass);
|
|
StateIndex := -1;
|
|
|
|
SubItems.Add(LinkClass.ClassName);
|
|
end;
|
|
end;
|
|
finally
|
|
ComponentClasses.Free;
|
|
end;
|
|
finally
|
|
LinkClasses.Free;
|
|
end;
|
|
finally
|
|
dxPSUtl.dxRestoreListViewSelection(lvItems, Selection);
|
|
end;
|
|
finally
|
|
Selection.Free;
|
|
end;
|
|
finally
|
|
lvItems.Items.EndUpdate;
|
|
end;
|
|
end;
|
|
|
|
procedure TdxfmAddReportLinkClass.SetActiveControl;
|
|
begin
|
|
if lvItems.CanFocus then
|
|
ActiveControl := lvItems
|
|
else
|
|
if edName.CanFocus then
|
|
begin
|
|
ActiveControl := edName;
|
|
edName.SelectAll;
|
|
end
|
|
else
|
|
if edCaption.CanFocus then
|
|
begin
|
|
ActiveControl := edCaption;
|
|
edCaption.SelectAll;
|
|
end
|
|
else
|
|
if edCreator.CanFocus then
|
|
begin
|
|
ActiveControl := edCreator;
|
|
edCreator.SelectAll;
|
|
end;
|
|
end;
|
|
|
|
{$IFDEF DELPHI5}
|
|
procedure TdxfmAddReportLinkClass.SetColumnSortMark(AIndex: Integer; ASortOrder: TSortOrder);
|
|
const
|
|
Format: Integer = HDF_IMAGE or HDF_BITMAP_ON_RIGHT;
|
|
ImageIndexes: array[TSortOrder] of Integer = (-1, 0, 1);
|
|
var
|
|
Header: HWND;
|
|
HDItem: THDItem;
|
|
begin
|
|
AssignListViewHeaderImages;
|
|
Header := ListViewHeader;
|
|
if IsWindow(Header) then
|
|
begin
|
|
FillChar(HDItem, SizeOf(HDItem), 0);
|
|
HDItem.Mask := HDI_FORMAT or HDI_IMAGE;
|
|
Header_GetItem(Header, AIndex, HDItem);
|
|
if ASortOrder <> soNone then
|
|
HDItem.fmt := HDItem.fmt or Format
|
|
else
|
|
HDItem.fmt := HDItem.fmt and not Format;
|
|
HDItem.iImage := ImageIndexes[ASortOrder];
|
|
Header_SetItem(Header, AIndex, HDItem);
|
|
end;
|
|
end;
|
|
{$ENDIF}
|
|
|
|
procedure TdxfmAddReportLinkClass.SortColumn(Column: TListColumn; ASortOrder: TSortOrder);
|
|
var
|
|
Item: TListItem;
|
|
begin
|
|
dxPSCore.dxPSStartWait;
|
|
try
|
|
{$IFDEF DELPHI5}
|
|
if (FSortedColumnIndex <> Column.Index) and (FSortedColumnIndex <> -1) then
|
|
SetColumnSortMark(FSortedColumnIndex, soNone);
|
|
{$ENDIF}
|
|
FSortedColumnIndex := Column.Index;
|
|
if ASortOrder <> soNone then
|
|
begin
|
|
lvItems.CustomSort(nil, MakeTTag(FSortedColumnIndex));
|
|
{$IFDEF DELPHI5}
|
|
SetColumnSortMark(FSortedColumnIndex, ASortOrder);
|
|
{$ENDIF}
|
|
end;
|
|
Item := lvItems.Selected;
|
|
if Item <> nil then
|
|
Item.MakeVisible(True);
|
|
finally
|
|
dxPSCore.dxPSStopWait;
|
|
end;
|
|
lvItems.Invalidate;
|
|
end;
|
|
|
|
procedure TdxfmAddReportLinkClass.RefreshSorting;
|
|
begin
|
|
if (FSortedColumnIndex <> -1) and (FSortOrder <> soNone) then
|
|
SortColumn(lvItems.Columns[FSortedColumnIndex], FSortOrder);
|
|
end;
|
|
|
|
procedure TdxfmAddReportLinkClass.UpdateControlsState;
|
|
begin
|
|
btnDesign.Enabled := CanDesign;
|
|
edCaption.Enabled := CanEditCaption;
|
|
edCreator.Enabled := CanEditCreator;
|
|
btnDescription.Enabled := CanEditDescription;
|
|
edName.Enabled := CanEditName;
|
|
end;
|
|
|
|
{$IFDEF DELPHI5}
|
|
procedure TdxfmAddReportLinkClass.AssignListViewHeaderImages;
|
|
var
|
|
Header: HWND;
|
|
begin
|
|
Header := ListViewHeader;
|
|
if IsWindow(Header) and not IsWindow(Header_GetImageList(Header)) then
|
|
Header_SetImageList(Header, ilColumns.Handle);
|
|
end;
|
|
|
|
procedure TdxfmAddReportLinkClass.ListViewWndProc(var Message: TMessage);
|
|
begin
|
|
FPrevListViewWndProc(Message);
|
|
|
|
if (FSortedColumnIndex <> -1) and (Message.Msg = WM_NOTIFY) then
|
|
with TWMNotify(Message).NMHdr^ do
|
|
if (hWndFrom = ListViewHeader) and (Code = HDN_ENDTRACK) then
|
|
SetColumnSortMark(FSortedColumnIndex, FSortOrder);
|
|
end;
|
|
|
|
procedure TdxfmAddReportLinkClass.RestoreListViewWndProc;
|
|
begin
|
|
lvItems.WindowProc := FPrevListViewWndProc;
|
|
end;
|
|
|
|
procedure TdxfmAddReportLinkClass.SubstituteListViewWndProc;
|
|
begin
|
|
FPrevListViewWndProc := lvItems.WindowProc;
|
|
lvItems.WindowProc := ListViewWndProc;
|
|
end;
|
|
{$ENDIF}
|
|
|
|
procedure TdxfmAddReportLinkClass.CMDialogChar(var Message: TCMDialogChar);
|
|
begin
|
|
inherited;
|
|
if IsAccel(Message.CharCode, tbsItems.Caption) then
|
|
begin
|
|
Message.Result := 1;
|
|
ActiveControl := lvItems;
|
|
end;
|
|
end;
|
|
|
|
end.
|
|
|