Son muchas las veces que me encuentro siguiendo un fragmento de código, revisando un proceso, siguiendo una estructura de llamadas entre múltiples clases para saber donde debo añadir una pequeña linea de código, etc.
Durante estas sesiones, lo que suele pasar es que voy abriendo pantallas y pantallas del editor de código, saltando de función en función y anotando en papel (o en el software de notas de moda) los puntos de código por los que navego e intento indicar una pequeña descripción para no perderme.
La verdad es que depende del módulo o proceso que revisas ... esto se convierte en un auténtico infierno .
El otro día, mientras realizabamos una de estas exploraciones aventureras junto con un compañero, me vino a la cabeza una utilidad que, bajo mi opinión, puede resultar de mucha ayuda para estos menesteres.
No he inventado nada, ya que se trata de una utilidad que hace ya años venía "de serie" en la mayoría de los entornos de programación.
El objetivo
Nuestro objetivo consiste en crear una lista de marcadores de código a los que podamos añadir una descripción y nos permita acceder al fragmento de código sencillamente con un doble-clic sobre el marcador.
Dicha lista debe poder alimentarse desde el mismo editor de código y de una forma relativamente sencilla.
Manos a la obra
Lo primero que vamos a hacer es crear una tabla que nos permita almacenar los marcadores de código para el usuario actual.
Los campos que necesitamos son los que se ven en la imagen :
- BookmarkNum : Un simple identificador numérico
- NodePath : La ruta al nodo del AOT al que apunta el marcador
- Line : Linea de código a la que apunta el marcador
- Column : Columna de código a la que apunta el marcador
- Description : Descripción que le da el usuario al marcador
- UserId : Usuario que ha creado el marcador
A su vez, sobreescribimos el método .InitValue() para que autonumere los marcadores de forma automática (como es un proyecto simple no voy a usar secuencias numéricas) :
Ahora creamos el form y el menuItem asociado al form :
Al form le añadimos el datasource vinculado a nuestra nueva tabla, un grid, un grupo de botones ... lo típico
Es muy importante modificar ciertas propiedades del diseño del formulario :
Esto nos permitirá que nuestro formulario se comporte como uno de los formularios del entorno de desarrollo, podrá acoplarse a un lateral, etc ...
Ha llegado la hora de modificar los scripts del editor para añadir un par de métodos :
- Un método que nos permita añadir un marcador
- Un método que nos muestre la lista de marcadores
(NOTA: Ya vimos hace tiempo como modificar los scripts del editor de Dynamics AX. Solo es necesario añadir métodos a la clase EditorScripts)
Primero : Método que nos permite añadir marcadores de código
x++:
void TrucosAX_BookmarkPosition(Editor e) {
Dialog dlg;
dialogfield EdDescription;
;
dlg = new Dialog("Add code-bookmark");
EdDescription = dlg.addField(typeid(Description));
Segundo : Método que nos muestra la lista de marcadores
x++:
void TrucosAX_ShowBookmarks(Editor e) {
args _args = new args();
MenuFunction MFunc = new MenuFunction(MenuItemDisplayStr(tax_CodeBookmarkTable), MenuItemType::Display);
;
MFunc.run(_args);
}
Primera prueba
Vamos a añadir nuestro primer marcador :
Editamos la clase Activities y una vez dentro del editor, pulsamos el botón de la derecha del ratón, opción Scripts / TrucosAX / BookmarkPosition.
El sistema nos solicita una descripción y procede a añadir el marcador en nuestra lista.
(si abrimos nuestro formulario veremos que se ha creado el marcador en nuestra lista)
Bien, ahora ... nos falta una cosa importante : cuando hagamos doble-clic en el marcador de nuestro formulario ... el sistema debería llevarnos al código.
Para ello, creamos un método en nuestro form (yo lo he llamado GotoEditor) :
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
Axapta y Dynamics Ax son marcas registradas de Microsoft corporation. Todos los logos y marcas son propiedad de sus respectivos propietarios. Excepto trucosAx.com que este si que es mio :-). (c) 2005 by Manel Querol (Mkz) TrucosAx.com no pertenece ni está asociada a Microsoft corporation. Los fragmentos de código y proyectos importables que aquí se muestren están realizados sobre bancos de pruebas. No nos hacemos responsables de cualquier daño o pérdida de datos que se pudiera originar del hecho de instalar alguno de estos ejemplos en un sistema productivo. Es responsabilidad del usuario ser consciente del impacto que puede ocasionar en sus aplicaciones el uso del código que de aquí extraiga.