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

142 lines
4.1 KiB
ObjectPascal

unit OrgChartRLMain;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Menus, checklst, StdCtrls, Grids, ComCtrls, ShellAPI, ToolWin, Db, DBTables, Buttons,
dxPSdxDBOCLnk, dxPSCore, dxPSdxOCLnk, dxdborgc, dxorgchr, dxPSGlbl,
dxPSUtl, dxPSEngn, dxPrnPg, dxBkgnd, dxWrap, dxPrnDev, ImgList,
{dxPSPrVwAdv,} // enable for use of ExpressBars in PrintPreview
dxPSGraphicLnk, dxPSCompsProvider, dxPSFillPatterns, dxPSEdgePatterns;
type
TOrgChartRLMainForm = 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;
PageControl1: TPageControl;
tsOrgChart: TTabSheet;
tsDBOrgChart: TTabSheet;
dxOrgChart: TdxOrgChart;
dxComponentPrinter1Link1: TdxOrgChartReportLink;
dxDBOrgChart: TdxDbOrgChart;
ImageList1: TImageList;
OCTable: TTable;
dsOCTable: TDataSource;
dxComponentPrinter1Link2: TdxDBOrgChartReportLink;
ImageList2: TImageList;
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 PageControl1Change(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure dxDBOrgChartCreateNode(Sender: TObject; Node: TdxOcNode);
private
function GetShape(ShapeName : String) : TdxOcShape;
public
{ Public declarations }
end;
var
OrgChartRLMainForm: TOrgChartRLMainForm;
implementation
{$R *.DFM}
procedure TOrgChartRLMainForm.miDXClick(Sender: TObject);
begin
ShellExecute(Handle, PChar('OPEN'), PChar('http://www.devexpress.com'), Nil, Nil, SW_SHOWMAXIMIZED);
end;
procedure TOrgChartRLMainForm.miPageSetupClick(Sender: TObject);
begin
dxComponentPrinter1.PageSetup(nil);
end;
procedure TOrgChartRLMainForm.miPrintPreviewClick(Sender: TObject);
begin
dxComponentPrinter1.Preview(True,nil);
end;
procedure TOrgChartRLMainForm.miPrintClick(Sender: TObject);
begin
dxComponentPrinter1.Print(True,nil,nil);
end;
procedure TOrgChartRLMainForm.miDesignerClick(Sender: TObject);
begin
dxComponentPrinter1.DesignReport(nil);
end;
procedure TOrgChartRLMainForm.miExitClick(Sender: TObject);
begin
Close;
end;
procedure TOrgChartRLMainForm.PageControl1Change(Sender: TObject);
begin
dxComponentPrinter1.CurrentLink := dxComponentPrinter1.ReportLink[TPageControl(Sender).ActivePage.PageIndex];
end;
procedure TOrgChartRLMainForm.FormCreate(Sender: TObject);
begin
OCTable.DataBaseName := ExtractFilePath(Application.ExeName);
if not OCTable.Active then OCTable.Open;
dxOrgChart.FullExpand;
dxDBOrgChart.FullExpand;
PageControl1Change(PageControl1);
end;
procedure TOrgChartRLMainForm.dxDBOrgChartCreateNode(Sender: TObject;
Node: TdxOcNode);
begin
with Node, OCTable do
begin
if FindField('width').AsInteger > 50 then
Width := FindField('width').AsInteger;
if FindField('height').AsInteger > 50 then
Height := FindField('height').AsInteger;
Shape := GetShape(FindField('type').AsString);
Color := FindField('color').AsInteger;
end;
end;
function TOrgChartRLMainForm.GetShape(ShapeName : String) : TdxOcShape;
const ShapeArray: array[0..3] of string = ('Rectange', 'Round Rect', 'Ellipse', 'Diamond');
var i : integer;
begin
Result := TdxOcShape(0);
for i := 0 to 3 do
if AnsiUpperCase(ShapeArray[i]) = AnsiUpperCase(ShapeName) then begin
Result := TdxOcShape(i);
break;
end;
end;
end.