2007-09-12 14:11:44 +00:00
|
|
|
|
unit uNavPaneController;
|
|
|
|
|
|
|
|
|
|
|
|
interface
|
|
|
|
|
|
|
|
|
|
|
|
uses
|
|
|
|
|
|
Forms, SysUtils, ActnList, uHostManager, Classes, JvNavigationPane, Controls,
|
|
|
|
|
|
uPantallaPrincipal;
|
|
|
|
|
|
|
|
|
|
|
|
type
|
|
|
|
|
|
TNavPaneController = class(TObject)
|
|
|
|
|
|
private
|
|
|
|
|
|
FNavigationPane: TJvNavigationPane;
|
|
|
|
|
|
FLargeImages: TImageList;
|
|
|
|
|
|
FSmallImages: TImageList;
|
|
|
|
|
|
FMainForm: IMainForm;
|
|
|
|
|
|
procedure SetNavigationPane(const Value: TJvNavigationPane);
|
|
|
|
|
|
function CrearPagina(const APageList: TJvNavigationPane;
|
|
|
|
|
|
ACaption: String; AAction: TAction; AImageIndex: Integer): Integer;
|
|
|
|
|
|
function EncontrarPagina(const APageList: TJvNavigationPane;
|
|
|
|
|
|
ACaption: String): Integer;
|
|
|
|
|
|
function EncontrarSeccionPadre(AParent : TWinControl): TScrollBox;
|
|
|
|
|
|
|
|
|
|
|
|
function CrearDivisor(AParent: TWinControl;
|
|
|
|
|
|
ACaption: String) : TJvNavPanelDivider;
|
|
|
|
|
|
function CrearSeccion(AParent : TWinControl): TScrollBox;
|
|
|
|
|
|
public
|
|
|
|
|
|
destructor Destroy; override;
|
|
|
|
|
|
procedure InitNavPane;
|
|
|
|
|
|
constructor Create;
|
|
|
|
|
|
procedure RegisterModule(AModuleInfo : TModuleInfo);
|
|
|
|
|
|
|
|
|
|
|
|
property SmallImages: TImageList read FSmallImages write FSmallImages;
|
|
|
|
|
|
property LargeImages: TImageList read FLargeImages write FLargeImages;
|
|
|
|
|
|
|
|
|
|
|
|
property NavigationPane : TJvNavigationPane read FNavigationPane
|
|
|
|
|
|
write SetNavigationPane;
|
|
|
|
|
|
|
|
|
|
|
|
property MainForm : IMainForm read FMainForm write FMainForm;
|
|
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
|
|
var
|
|
|
|
|
|
NavPaneController : TNavPaneController;
|
|
|
|
|
|
|
|
|
|
|
|
implementation
|
2009-12-17 16:08:35 +00:00
|
|
|
|
{$INCLUDE ..\FactuGES.inc}
|
2007-09-12 14:11:44 +00:00
|
|
|
|
|
|
|
|
|
|
uses
|
|
|
|
|
|
Dialogs, uModuleController, uAcercaDe, uNavPaneUtils,
|
2007-10-24 18:54:18 +00:00
|
|
|
|
uMainMenuController, uClienteUtils, Menus, uDMBase,
|
2007-10-08 07:58:40 +00:00
|
|
|
|
uFactuGES_App, uBizEmpresas, JvPageList;
|
2007-09-12 14:11:44 +00:00
|
|
|
|
|
|
|
|
|
|
{ TNavPaneController }
|
|
|
|
|
|
|
|
|
|
|
|
function TNavPaneController.CrearDivisor(AParent: TWinControl;
|
|
|
|
|
|
ACaption: String): TJvNavPanelDivider;
|
|
|
|
|
|
begin
|
|
|
|
|
|
Result := TJvNavPanelDivider.Create(AParent);
|
|
|
|
|
|
with Result do
|
|
|
|
|
|
begin
|
|
|
|
|
|
Parent := AParent;
|
|
|
|
|
|
Caption := ACaption;
|
|
|
|
|
|
Cursor := crSizeNS;
|
|
|
|
|
|
Align := alTop;
|
|
|
|
|
|
Enabled := false;
|
|
|
|
|
|
Cursor := crDefault;
|
|
|
|
|
|
StyleManager := dmBase.StyleManager;
|
|
|
|
|
|
end;
|
|
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
|
|
function TNavPaneController.CrearPagina(const APageList : TJvNavigationPane;
|
|
|
|
|
|
ACaption : String; AAction : TAction; AImageIndex : Integer): Integer;
|
|
|
|
|
|
var
|
|
|
|
|
|
APanePage: TJvNavPanelPage;
|
|
|
|
|
|
begin
|
|
|
|
|
|
APanePage := TJvNavPanelPage.Create(Application);
|
|
|
|
|
|
with APanePage do
|
|
|
|
|
|
begin
|
|
|
|
|
|
Caption := StringReplace(ACaption, '&', '', []);
|
|
|
|
|
|
Action := AAction;
|
|
|
|
|
|
PageList := APageList;
|
|
|
|
|
|
Iconic := False;
|
|
|
|
|
|
ImageIndex := AImageIndex;
|
|
|
|
|
|
Result := PageIndex;
|
|
|
|
|
|
end;
|
|
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
|
|
constructor TNavPaneController.Create;
|
|
|
|
|
|
begin
|
|
|
|
|
|
inherited;
|
|
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
|
|
function TNavPaneController.CrearSeccion(AParent : TWinControl): TScrollBox;
|
|
|
|
|
|
begin
|
|
|
|
|
|
Result := TScrollBox.Create(AParent);
|
|
|
|
|
|
with Result do
|
|
|
|
|
|
begin
|
|
|
|
|
|
Parent := AParent;
|
|
|
|
|
|
BorderStyle := bsNone;
|
|
|
|
|
|
end;
|
|
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
|
|
procedure TNavPaneController.InitNavPane;
|
|
|
|
|
|
var
|
|
|
|
|
|
AListaSecciones : TStringList;
|
|
|
|
|
|
AEmpresasCount: Integer;
|
|
|
|
|
|
AIndex : Integer;
|
|
|
|
|
|
ADivisor :TJvNavPanelDivider;
|
|
|
|
|
|
ASeccion : TScrollBox;
|
|
|
|
|
|
ASeccionPadre : TScrollBox;
|
|
|
|
|
|
ASeccionCount: Integer;
|
|
|
|
|
|
AEmpresas : IBizEmpresa;
|
|
|
|
|
|
begin
|
|
|
|
|
|
AListaSecciones := TStringList.Create;
|
|
|
|
|
|
AListaSecciones.Duplicates := dupIgnore;
|
2008-05-21 14:53:12 +00:00
|
|
|
|
AEmpresasCount := 0;
|
|
|
|
|
|
|
2007-09-12 14:11:44 +00:00
|
|
|
|
try
|
|
|
|
|
|
// Guardar la lista de secciones (Ventas, Compras, etc...)
|
|
|
|
|
|
for ASeccionCount := 0 to MainMenuController.MainMenu.Items.Count - 1 do
|
|
|
|
|
|
begin
|
|
|
|
|
|
if not EsUnModulo(MainMenuController.MainMenu.Items[ASeccionCount]) then
|
|
|
|
|
|
Continue;
|
|
|
|
|
|
AListaSecciones.AddObject(StringReplace(MainMenuController.MainMenu.Items[ASeccionCount].Caption, '&', '', []),
|
|
|
|
|
|
MainMenuController.MainMenu.Items[ASeccionCount])
|
|
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
|
|
// Crear p<>ginas con empresas y rellenarlas
|
2007-10-08 07:58:40 +00:00
|
|
|
|
AEmpresas := AppFactuGES.EmpresasController.BuscarTodos;
|
2007-09-12 14:11:44 +00:00
|
|
|
|
try
|
|
|
|
|
|
AEmpresas.DataTable.Active := True;
|
2009-12-17 16:08:35 +00:00
|
|
|
|
|
|
|
|
|
|
{$IFDEF MULTIEMPRESA}
|
2007-09-12 14:11:44 +00:00
|
|
|
|
while not AEmpresas.DataTable.EOF do
|
|
|
|
|
|
begin
|
2009-12-17 16:08:35 +00:00
|
|
|
|
{$ENDIF}
|
2007-09-12 14:11:44 +00:00
|
|
|
|
|
|
|
|
|
|
// Buscar la p<>gina si existe
|
|
|
|
|
|
AIndex := EncontrarPagina(FNavigationPane, AEmpresas.NOMBRE);
|
|
|
|
|
|
if AIndex > -1 then
|
|
|
|
|
|
ASeccionPadre := EncontrarSeccionPadre(FNavigationPane.NavPages[AIndex])
|
|
|
|
|
|
else begin
|
|
|
|
|
|
// Crear la p<>gina de la empresa
|
|
|
|
|
|
AIndex := CrearPagina(FNavigationPane, AEmpresas.NOMBRE, nil, -1);
|
|
|
|
|
|
|
|
|
|
|
|
ASeccionPadre := CrearSeccion(FNavigationPane.NavPages[AIndex]);
|
|
|
|
|
|
ASeccionPadre.Align := alClient;
|
|
|
|
|
|
ASeccionPadre.AutoScroll := True;
|
|
|
|
|
|
end;
|
|
|
|
|
|
FNavigationPane.NavPages[AIndex].Tag := AEmpresas.ID;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Crear secciones
|
|
|
|
|
|
for ASeccionCount := 0 to AListaSecciones.Count - 1 do
|
|
|
|
|
|
begin
|
|
|
|
|
|
ASeccion := CrearSeccion(ASeccionPadre);
|
|
|
|
|
|
with ASeccion do
|
|
|
|
|
|
begin
|
|
|
|
|
|
Top := 100 * AEmpresasCount;
|
|
|
|
|
|
Align := alTop;
|
|
|
|
|
|
AutoScroll := False;
|
|
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
|
|
ADivisor := CrearDivisor(ASeccion, AListaSecciones[ASeccionCount]);
|
|
|
|
|
|
|
|
|
|
|
|
PopulateNavPagePane(ASeccion, TMenuItem(AListaSecciones.Objects[ASeccionCount]),
|
|
|
|
|
|
FLargeImages, dmBase.StyleManager);
|
|
|
|
|
|
ASeccion.Height := ASeccion.Height + ADivisor.Height;
|
|
|
|
|
|
end;
|
|
|
|
|
|
|
2009-12-17 16:08:35 +00:00
|
|
|
|
{$IFDEF MULTIEMPRESA}
|
2007-09-12 14:11:44 +00:00
|
|
|
|
AEmpresas.DataTable.Next;
|
|
|
|
|
|
end;
|
2009-12-17 16:08:35 +00:00
|
|
|
|
{$ENDIF}
|
|
|
|
|
|
|
2007-09-12 14:11:44 +00:00
|
|
|
|
AEmpresas.DataTable.Active := False;
|
|
|
|
|
|
finally
|
|
|
|
|
|
AEmpresas := NIL;
|
|
|
|
|
|
end;
|
|
|
|
|
|
finally
|
2008-05-20 18:50:02 +00:00
|
|
|
|
FreeAndNIL(AListaSecciones);
|
2007-09-12 14:11:44 +00:00
|
|
|
|
end;
|
|
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
|
|
procedure TNavPaneController.RegisterModule(AModuleInfo: TModuleInfo);
|
|
|
|
|
|
begin
|
|
|
|
|
|
// Por si es necesario en el furuto
|
|
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
|
|
destructor TNavPaneController.Destroy;
|
|
|
|
|
|
begin
|
|
|
|
|
|
inherited;
|
|
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
|
|
function TNavPaneController.EncontrarPagina(const APageList: TJvNavigationPane;
|
|
|
|
|
|
ACaption: String): Integer;
|
|
|
|
|
|
var
|
|
|
|
|
|
i: Integer;
|
|
|
|
|
|
begin
|
|
|
|
|
|
Result := -1;
|
|
|
|
|
|
for i := 0 to APageList.PageCount - 1 do
|
|
|
|
|
|
if APageList.NavPages[i].Caption = ACaption then
|
|
|
|
|
|
begin
|
|
|
|
|
|
Result := i;
|
|
|
|
|
|
Break;
|
|
|
|
|
|
end;
|
|
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
|
|
function TNavPaneController.EncontrarSeccionPadre(
|
|
|
|
|
|
AParent: TWinControl): TScrollBox;
|
|
|
|
|
|
var
|
|
|
|
|
|
i: Integer;
|
|
|
|
|
|
begin
|
|
|
|
|
|
Result := nil;
|
|
|
|
|
|
for i := 0 to AParent.ControlCount - 1 do
|
|
|
|
|
|
if AParent.Controls[i] is TScrollBox then
|
|
|
|
|
|
begin
|
|
|
|
|
|
Result := (AParent.Controls[i] as TScrollBox);
|
|
|
|
|
|
Break;
|
|
|
|
|
|
end;
|
|
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
|
|
procedure TNavPaneController.SetNavigationPane(const Value: TJvNavigationPane);
|
|
|
|
|
|
begin
|
|
|
|
|
|
FNavigationPane := Value;
|
|
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
end.
|