Componentes.Terceros.DevExp.../official/x.38/ExpressPrinting System/Demos/Delphi/TreeListRL/TreeListRLMain.pas
2008-08-27 11:56:15 +00:00

218 lines
6.3 KiB
ObjectPascal

unit TreeListRLMain;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Menus, checklst, StdCtrls, Grids, ComCtrls, ShellAPI, ToolWin, Db, DBTables, Buttons,
dxPSCore, dxPSdxTLLnk, dxTLClms, dxTL, dxCntner, dxPSGlbl, dxPSUtl,
{dxPSPrVwAdv,} // enable for use of ExpressBars in PrintPreview
dxPSEngn, dxPrnPg, dxBkgnd, dxWrap, dxPrnDev, ImgList, dxExEdtr,
dxPSCompsProvider, dxPSFillPatterns, dxPSEdgePatterns;
type
TTreeListRLMainForm = class(TForm)
MainMenu: TMainMenu;
miFile: TMenuItem;
miDesigner: TMenuItem;
miHelp: TMenuItem;
miPageSetup: TMenuItem;
miPrintPreview: TMenuItem;
miPrint: TMenuItem;
N1: TMenuItem;
miExit: TMenuItem;
miDX: TMenuItem;
dxComponentPrinter1: TdxComponentPrinter;
ToolBar1: TToolBar;
tbSetup: TToolButton;
tbPreview: TToolButton;
tbPrint: TToolButton;
tbDevider: TToolButton;
tbDesigner: TToolButton;
tbDX: TToolButton;
tbSeparator: TToolButton;
tbExit: TToolButton;
ilButtons: TImageList;
dxComponentPrinter1Link1: TdxTreeListReportLink;
ilTLItems: TImageList;
ilDBTreelist: TImageList;
dxTreeList: TdxTreeList;
dxTreeListColumn1: TdxTreeListColumn;
dxTreeListColumn2: TdxTreeListSpinColumn;
dxTreeListColumn4: TdxTreeListPickColumn;
dxTreeListColumn3: TdxTreeListColumn;
dxTreeListColumn5: TdxTreeListColumn;
tbSelected: TToolButton;
procedure miDXClick(Sender: TObject);
procedure miPageSetupClick(Sender: TObject);
procedure miPrintPreviewClick(Sender: TObject);
procedure miPrintClick(Sender: TObject);
procedure miDesignerClick(Sender: TObject);
procedure miExitClick(Sender: TObject);
procedure dxTreeListDragDrop(Sender, Source: TObject; X, Y: Integer);
procedure dxTreeListDragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
procedure dxTreeListEdited(Sender: TObject; Node: TdxTreeListNode);
procedure dxTreeListGetSelectedIndex(Sender: TObject;
Node: TdxTreeListNode; var Index: Integer);
procedure dxTreeListCompare(Sender: TObject; Node1,
Node2: TdxTreeListNode; var Compare: Integer);
procedure tbSelectedClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
procedure RefreshSort(Sender : TdxTreeList);
public
{ Public declarations }
end;
var
TreeListRLMainForm: TTreeListRLMainForm;
implementation
{$R *.DFM}
procedure TTreeListRLMainForm.miDXClick(Sender: TObject);
begin
ShellExecute(Handle, PChar('OPEN'), PChar('http://www.devexpress.com'), Nil, Nil, SW_SHOWMAXIMIZED);
end;
procedure TTreeListRLMainForm.miPageSetupClick(Sender: TObject);
begin
dxComponentPrinter1.PageSetup(nil);
end;
procedure TTreeListRLMainForm.miPrintPreviewClick(Sender: TObject);
begin
dxComponentPrinter1.Preview(True,nil);
end;
procedure TTreeListRLMainForm.miPrintClick(Sender: TObject);
begin
dxComponentPrinter1.Print(True,nil,nil);
end;
procedure TTreeListRLMainForm.miDesignerClick(Sender: TObject);
begin
dxComponentPrinter1.DesignReport(nil);
end;
procedure TTreeListRLMainForm.miExitClick(Sender: TObject);
begin
Close;
end;
procedure TTreeListRLMainForm.dxTreeListDragDrop(Sender, Source: TObject; X,
Y: Integer);
var
AItem, AnItem: TdxTreeListNode;
AttachMode: TdxTreeListNodeAttachMode;
HT: TdxTreeListHitTest;
begin
if dxTreeList.SelectedCount = 0 then Exit;
HT := dxTreeList.GetHitTestInfoAt(X, Y);
AnItem := dxTreeList.GetNodeAt(X, Y);
if HT in [htButton, htIcon, htStateIcon, htLabel, htNowhere, htIndent] then
begin
AttachMode := natlInsert;
if HT in [htButton, htIcon, htStateIcon, htLabel] then
AttachMode := natlAddChild
else if HT = htNowhere then
begin
AnItem := dxTreeList.Items[0];
AttachMode := natlAdd;
end
else if HT = htIndent then AttachMode := natlInsert;
while dxTreeList.SelectedCount > 0 do
begin
AItem := dxTreeList.SelectedNodes[0];
AItem.Selected := False;
AItem.MoveTo(AnItem, AttachMode);
end;
end;
RefreshSort(dxTreeList);
end;
procedure TTreeListRLMainForm.dxTreeListDragOver(Sender, Source: TObject; X,
Y: Integer; State: TDragState; var Accept: Boolean);
begin
if Source = dxTreeList then Accept := True
Else Accept := False;
end;
procedure TTreeListRLMainForm.dxTreeListEdited(Sender: TObject;
Node: TdxTreeListNode);
begin
RefreshSort(dxTreeList);
end;
procedure TTreeListRLMainForm.dxTreeListGetSelectedIndex(Sender: TObject;
Node: TdxTreeListNode; var Index: Integer);
begin
Index := Node.ImageIndex;
end;
procedure TTreeListRLMainForm.dxTreeListCompare(Sender: TObject; Node1,
Node2: TdxTreeListNode; var Compare: Integer);
var i : integer;
begin
with TdxTreeList(Sender) do begin
i := 0;
while i < ColumnCount do begin
if Columns[i].Sorted <> csNone then break;
inc(i);
end;
if i < ColumnCount then
begin
if Columns[i].Caption = 'Budget' then
try
Compare := Round(StrToFloat(Node1.Values[i]) - StrToFloat(Node2.Values[i]));
except
Compare := 0;
end
else Compare := CompareStr(Node1.Values[i], Node2.Values[i]);
end
else
Compare := 0;
end;
end;
procedure TTreeListRLMainForm.RefreshSort(Sender : TdxTreeList);
var PrevSort : TdxTreeListColumnSort;
i : integer;
begin
with Sender do begin
i := 0;
while i < ColumnCount do begin
if Columns[i].Sorted <> csNone then break;
inc(i);
end;
if i < ColumnCount then begin
PrevSort := Columns[i].Sorted;
if Columns[i].Sorted = csUp then Columns[i].Sorted := csDown
else Columns[i].Sorted := csUp;
Columns[i].Sorted := PrevSort;
end;
end;
end;
procedure TTreeListRLMainForm.tbSelectedClick(Sender: TObject);
begin
dxComponentPrinter1Link1.OnlySelected := tbSelected.Down;
end;
procedure TTreeListRLMainForm.FormCreate(Sender: TObject);
var
DataFile: String;
begin
DataFile := ExtractFilePath(Application.ExeName)+'\example.dat';
if FileExists(DataFile) then dxTreeList.LoadFromFile(DataFile);
dxTreeList.FullExpand;
end;
end.