TTprxMENUS Frame

De Pragma Wiki
Ir a la navegación Ir a la búsqueda

Descripción

El frame TTprxMENUS_Frame (Frame de menús para explorar principal de la aplicación.) implementa un frame para armar el menú principal en el explorador TTprxExplorer_MainForm.

Frame durante el diseño

Frame durante el diseño.

Durante el diseño vemos:

  • Un navegador.
  • Un panel a la izquierda que contiene los menús.
  • Un panel cliente a la derecha que normalmente contendrá una grilla con los objetos que forman parte del menú seleccionado.

Frame durante runtime

Frame durante runtime.

Durante runtime vemos:

  • El navegador solo muestra el botón de opciones para acceder a los Menús y a los Catálogos.
  • El panel a la izquierda contiene los menús Estadísticos, Favoritos, etc.
  • El panel cliente a la derecha contiene los objetos asociados al menú seleccionado, además tiene el control para definir el modo local abajo.

Identidad

  • Ancestro: TTfvsFrame
  • Carpeta: C:\DevelopPrx\frames
  • Archivo: prxMENUS_Frame.pas

Declaración

type
  TTprxMENUS_Frame = class(TTfvsFrame)
    PanelMENU_Abajo: TPanel;
    PanelMENU_Navegador: TPanel;
    Panel_ARBOL_BotonOpciones: TPanel;
    fvsBotonOpcionesMENU: TfvsBotonOpciones;
    Panel_MENU: TPanel;
    ArbolOBJETOS: TprxTreeView;
    fvsDBNavigatorMENU: TfvsDBNavigator;
    Splitter_MENUS: TSplitter;
    PanelGRID_Abajo: TPanel;
    prxSpeedButton_ARBOL: TprxSpeedButton;
    Label_ARBOL: TLabel;
    Panel1: TPanel;

    procedure   ArbolOBJETOSContextPopup(Sender: TObject; MousePos: TPoint; var Handled: Boolean);
    procedure   fvsDBNavigatorMENUNavigatorClick(Sender: TDBNavigator; aButton: TNavigateBtn; aX, aY: Integer; var aHandled: Boolean);
    procedure   fvsBotonOpcionesMENUGetPopupOptions(Sender: TComponent; aPopupMenu: TprxPopupMenu);
    procedure   fvsBotonOpcionesMENUClick(Sender: TObject);
    procedure   prxSpeedButton_ARBOLClick(Sender: TObject);
    procedure   NUEVO_ArbolOBJETOSChange(Sender: TObject; Node: TTreeNode);

    procedure   Local_OnDragStart(aSender: TprxTreeView; aSelected: TTreeNode);
    procedure   Local_DragOverXtd(Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean);
    procedure   Local_OnDropXtd(aSender: TprxTreeView; aSelected: TTreeNode);

    procedure   Objeto_Abrir_CATALOG_Click(Sender: TObject);
  private
    FMENUS_MENU_STATS_Component: TprxMENUS_MENU_STATS_Component;
    FMENUS_MENU_FAVS_Component: TprxMENUS_MENU_FAVS_Component;
    FMENUS_MENU_Component: TprxMENUS_MENU_Component;
    FMENUS_CATALOG_Component: TprxMENUS_CATALOG_Component;

    FExecPopupMenu: TprxPopupMenu;

    FPanelARBOL_Width: Integer;
  protected
    Refreshing: Boolean;

    property    PanelARBOL_Width: Integer read FPanelARBOL_Width write FPanelARBOL_Width;
    function    NUEVO_MENU_Component: TprxMENUS_Component;
    procedure   NUEVO_prxMENUS_LimpiarContenido;
    procedure   NUEVO_prxMENUS_CargarContenido(aMENU_Component: TprxMENUS_Component);
    procedure   PanelARBOL_Contraer(Sender: TObject);
    procedure   PanelARBOL_Expandir(Sender: TObject);

    property    MENUS_MENU_STATS_Component: TprxMENUS_MENU_STATS_Component read FMENUS_MENU_STATS_Component write FMENUS_MENU_STATS_Component;
    property    MENUS_MENU_FAVS_Component: TprxMENUS_MENU_FAVS_Component read FMENUS_MENU_FAVS_Component write FMENUS_MENU_FAVS_Component;
    property    MENUS_MENU_Component: TprxMENUS_MENU_Component read FMENUS_MENU_Component write FMENUS_MENU_Component;
    property    MENUS_CATALOG_Component: TprxMENUS_CATALOG_Component read FMENUS_CATALOG_Component write FMENUS_CATALOG_Component;

    property    ExecPopupMenu: TprxPopupMenu read FExecPopupMenu write FExecPopupMenu;
  public
    ObjetosArray: TTprxMENUS_Objetos_Array;

    constructor Create(aOwner: TComponent); override;
    procedure   OnFrameShow(Sender: TObject); override;
    procedure   ClassShow_CloseFrame(Sender: TObject); override;
  end;

Componentes para los menús

Este frame usa 4 componentes para facilitar el armado de los menús, los componentes son:

Implementación

procedure OnFrameShow(Sender: TObject)

Instancia componentes de ayuda a este frame:

  • MENUS_MENU_STATS_Component para administrar el menú estadístico.
  • MENUS_MENU_FAVS_Component para administrar el menú Favoritos.
  • MENUS_MENU_Component para administrar los menús de usuario.
  • MENUS_CATALOG_Component para administrar los menús de catálogo.

Hace invisibles los botones del navegador excepto el botón de opciones.

Limpia el contenido del árbol y llama a las siguientes funciones para armar el árbol:

NUEVO_prxMENUS_LimpiarContenido;
NUEVO_prxMENUS_CargarContenido(MENUS_MENU_STATS_Component);
NUEVO_prxMENUS_CargarContenido(MENUS_MENU_FAVS_Component);
NUEVO_prxMENUS_CargarContenido(MENUS_MENU_Component);

function NUEVO_MENU_Component: TprxMENUS_Component

Retorna los datos del ítem de menú seleccionado.

procedure NUEVO_prxMENUS_CargarContenido(aMENU_Component: TprxMENUS_Component)

Carga el contenido de cada uno de los menús usando sus componentes.

procedure Objeto_Abrir_CATALOG_Click(Sender: TObject)

Llamado desde el botón de opciones para agregar los menús de los catálogos.

procedure NUEVO_ArbolOBJETOSChange(Sender: TObject; Node: TTreeNode)

Llamado cada vez que el ítem seleccionado en el árbol cambia.

procedure ArbolOBJETOSContextPopup(Sender: TObject; MousePos: TPoint; var Handled: Boolean)

Arma el menú de contexto del árbol.

Menú de contexto en el árbol de menús.

Permite:

  • Copiar un menú desde otra base de datos.
  • Cambiar la clave de acceso del usuario logueado.
  • Agregar nodo para agregar un nodo al árbol.
  • Agregar objeto para agregar un objeto directamente en el árbol.
  • Eliminar para eliminar el nodo activo.

procedure fvsBotonOpcionesMENUGetPopupOptions(Sender: TComponent; aPopupMenu: TprxPopupMenu)

Llamado por el botón de opciones del navegador para arma el menú de ver menús y ver catálogos.

Botón para ocultar el menú

A la izquierda del texto "Contenido" del árbol de menús hay un botón que sirve para ocultar el árbol haciendo que la pantalla de contenido sea más grande, según el estado del árbol ese botón llama a:

  • procedure PanelARBOL_Contraer(Sender: TObject) si debe contraer el menú.
  • procedure PanelARBOL_Expandir(Sender: TObject) si debe explandir el menú.

Implementación, drag and drop

procedure Local_OnDragStart(aSender: TprxTreeView; aSelected: TTreeNode)

Llamada cuando empezamos a arrastrar un nodo con el mouse (por ejemplo, para cambiar un nodo de lugar).

procedure Local_DragOverXtd(Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean)

Llamada cuando el elemento que estamos arrastrando pasa por encima del menú, nos indica dónde podemos soltar el elemento.

procedure TTprxMENUS_Frame.Local_OnDropXtd(aSender: TprxTreeView; aSelected: TTreeNode)

Llamada cuando soltamos un elemento sobre el árbol del menú.

Uso

Solo se usa en TTprxExplorer_MainForm.