Código columnas derivadas de la eco ii

Código columnas derivadas de la eco ii


Explica qué Código Derivados de las Columnas, y cómo el uso de ellos.

El objetivo de este artículo será 'el Evento derivado de las columnas'. & nbsp Jan Nord & eacute n (Borland) me señaló en la dirección de estas cosas hace poco, cuando le pregunté cómo resolver un GUI problema que tenía. & nbsp Cuando he usado en Negrita para Delphi no se esta muy agradable GUI componente llamado BoldSelectionListBox. & nbsp Este componente me deja mostrar una lista de elementos con una Casilla de verificación junto a cada fila, marcando o deshabilitando un cuadro de agregar / quitar una asociación elemento entre el elemento & nbsp seleccionado y algún otro objeto de mi elección. & nbsp Esa no es la mejor explicación del Mundo, así que echa un vistazo en el siguiente diagrama UML:

haga Click para agrandar

Este diagrama es algo que he estado trabajando recientemente en ECO II. & nbsp es mi interpretación de la información necesaria para crear una Inductivo de la Interfaz de Usuario. & nbsp Mirando el diagrama UML de cerca, se verá que cada Tarea tiene cero o muchos PermittedRoles (Papel) referencias. & nbsp La idea de que mediante la especificación de la Función de la corriente de usuario fácilmente puede obtener una lista de tareas que se pueden realizar.

el Uso de este BoldSelectionListBox me gustaría ser capaz de especificar una Tarea como el contexto y, a continuación, una lista de todas las Funciones en una especie de CheckListBox. & nbsp Garrapatas aparecería en todas las Casillas donde el Papel está permitido para ejecutar la acción en la lista, y no garrapata, donde no es. & nbsp El extra de la parte más inteligente del curso es que al marcar una Casilla de verificación Bold crear el objeto de vínculo necesario para atar el Papel a la Tarea, y agregarlo a la Función.AllowedTasks (y por supuesto de la Tarea.PermittedRoles).

al Ver que ECO II no introducir cualquier tipo de controles de GUI (lugar ofrece .red Enlace de datos interfaces de modo que usted puede utilizar el estándar de los controles), yo sospechaba que no iba a ser capaz de lograr el mismo tipo de efecto. & nbsp Jan amablemente me envió un pequeño demo muestra cómo lograr esto usando sólo DataGrids. & nbsp pronto tuve esta lógica escrita en mi propia app, y funcionó muy bien!

he añadido expresión asas para mi Roles (ehRoles) y Tareas (ehTasks), vinculado a una cuadrícula de cada uno y añadió Agregar o Eliminar botones. & nbsp puedo definir cada uno de estos expresión asas para recuperar todos los casos, los 'Roles.allInstances' y 'Tareas.allInstances'.

En el lado izquierdo de mi GUI yo tenía todas mis Tareas de la lista, y en la derecha tenía todos mis Papeles. & nbsp yo ahora quisiera agregar & nbsp una Casilla de verificación junto a cada Función, por lo que me podría especificar si el Papel estaba permitido para ejecutar la tarea seleccionada actualmente o no. & nbsp El primer problema a resolver es saber qué Tarea es la 'seleccionado actualmente'. & nbsp Para ello he añadido un CurrencyManagerHandle denominado 'chTasks', establecer su RootHandle a ehTasks, y su BindingContext a TasksDataGrid. & nbsp Ahora chTasks tiene la Tarea actual, agradable y fácil.

Siguiente yo tenía que conseguir una columna de casillas de verificación en & nbsp mi RolesDataGrid y establecer AllowNull a False. & nbsp Para ello he añadido un falso TaskPermitted columna a ehRoles y establezca su tipo de Sistema.Boolean. & nbsp Nota: El botón 'Añadir' en el editor de Columnas tiene un icono de lista Desplegable junto a ella, haga clic en y seleccione EventDerivedColumn. & nbsp entonces agregué & nbsp de la columna adicional a mi RolesDataGrid, para asegurarse de que era una Casilla de verificación elegí la lista Desplegable en el botón Agregar y selecciona DataGridBoolColumn. & nbsp me puse el MappingName a TaskPermitted.

por el momento tenemos todo lo que necesitamos para ver las Casillas de verificación, pero no hay manera de decirle al DataGrid si la casilla de verificación debe estar marcada o no. & nbsp Para ello tenemos que escribir el código en el ehRoles' DeriveValue evento, pero primero quiero agregar algo & nbsp hacer ... nbsp el código un poco más fácil de escribir. & nbsp & nbsp he añadido una nueva ExpressionHandle ehTasksPermittedRoles, el RootHandle fue el CurrencyHandle (chTasks) y la expresión era la 'auto.PermittedRoles'. & nbsp Esto me permitiría comprobar fácilmente que los Roles están autorizados para ejecutar la 'Tarea actual'.

Ahora & nbsp escribir algo de código para calcular el valor de ehRoles.TaskPermitted. & nbsp Esto se realiza en el ehRoles.DeriveValue evento, así:

private void ehRoles_DeriveValue(object sender, Borland.Eco.Asas.DeriveEventArgs e)
{
& nbsp interruptor (e.Nombre) //Un evento para todos los derivados de columnas

& nbsp {
& nbsp & nbsp & nbsp caso 'TaskPermitted':
& nbsp & nbsp & nbsp & nbsp & nbsp //Obtener una lista de los permitidos roles para esta tarea

& nbsp & nbsp & nbsp & nbsp & nbsp IElementCollection roles = ehTasksPermittedRoles.Elemento como IElementCollection

& nbsp & nbsp & nbsp & nbsp & nbsp //Evitar una excepción de referencia null

& nbsp & nbsp & nbsp & nbsp & nbsp si (roles) = = null)
& nbsp & nbsp & nbsp & nbsp & nbsp {
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp //devolver un elemento que representa la constante 'false'
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp e.ResultElement = EcoSpace.VariableFactoryService.CreateConstant(falso)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp regresar
& nbsp & nbsp & nbsp & nbsp & nbsp }

& nbsp & nbsp & nbsp & nbsp & nbsp //Observar la ehTaskPermittedRoles elemento, esto nos dice que cuando el elemento
& nbsp & nbsp & nbsp & nbsp & nbsp //cambia de tal manera que podemos invalidar la interfaz gráfica de usuario
& nbsp & nbsp & nbsp & nbsp & nbsp ehTasksPermittedRoles.SubscribeToElement(e.ResubscribeSubscriber)

& nbsp & nbsp & nbsp & nbsp & nbsp //También observar los elementos dentro de la lista
& nbsp & nbsp & nbsp & nbsp & nbsp funciones.SubscribeToValue(e.ValueChangeSubscriber)

& nbsp & nbsp & nbsp & nbsp & nbsp //Si el permitido funciones contiene la Función actual, a continuación, volver
& nbsp & nbsp & nbsp & nbsp & nbsp //un elemento que representa la constante 'true'

& nbsp & nbsp & nbsp & nbsp & nbsp si (roles.Contiene(e.RootElement))
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp e.ResultElement = EcoSpace.VariableFactoryService.CreateConstant(true)
& nbsp & nbsp & nbsp & nbsp & nbsp else
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp //en caso Contrario, devuelve un elemento que representa la constante 'false'
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp e.ResultElement = EcoSpace.VariableFactoryService.CreateConstant(falso)
& nbsp;
& nbsp & nbsp & nbsp & nbsp & nbsp romper

& nbsp & nbsp & nbsp predeterminado:
& nbsp & nbsp & nbsp & nbsp throw new Exception(e.El nombre de 'no se deriva correctamente')
& nbsp }//switch
}//ehRoles_DeriveValue

Y, finalmente, & nbsp tenemos que tener una manera de permitir que el usuario active / desactive Casilla de verificación y tener la asociación añadido o eliminado de la Tarea.PermittedRoles. & nbsp Esto se realiza en el ehRoles.ReverseDeriveValue evento, como así

private void ehRoles_ReverseDeriveValue(object sender, Borland.Eco.Asas.ReverseDeriveEventArgs e)
{
& nbsp interruptor(e.Nombre) //Un evento para todos los derivados de columnas
& nbsp {
& nbsp & nbsp & nbsp caso 'TaskPermitted':
& nbsp & nbsp & nbsp & nbsp & nbsp //Obtener una lista de funciones para la tarea actual
& nbsp & nbsp & nbsp & nbsp & nbsp IElementCollection roles = (IElementCollection) ehTasksPermittedRoles.El elemento

& nbsp & nbsp & nbsp & nbsp & nbsp //Evitar una excepción de referencia null
& nbsp & nbsp & nbsp & nbsp & nbsp si (roles) = = null)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp regresar

& nbsp & nbsp & nbsp & nbsp & nbsp //Convertir el valor se establece en un valor Booleano (desde el datagrid Casilla de verificación)
& nbsp & nbsp & nbsp & nbsp & nbsp if ( (Boolean) e.Valor)
& nbsp & nbsp & nbsp & nbsp & nbsp {
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp //Si la casilla ha sido marcada, y la marcada Papel no está en el
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp //Tarea.PermittedRoles lista, a continuación, agregar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp if (!los roles.Contiene(e.RootElement))
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp funciones.Añadir(e.RootElement)
& nbsp & nbsp & nbsp & nbsp & nbsp }
& nbsp & nbsp & nbsp & nbsp & nbsp else
& nbsp & nbsp & nbsp & nbsp & nbsp {
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp //Si la casilla ha sido marcada, y la marcada Función existe en el
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp //Tarea.PermittedRoles lista, a continuación, retire
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp si (roles.Contiene(e.RootElement))
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp funciones.Eliminar(e.RootElement)
& nbsp & nbsp & nbsp & nbsp & nbsp }
& nbsp & nbsp & nbsp & nbsp & nbsp break
& nbsp }//switch
}//ehRoles_ReverseDeriveValue

Se puede tomar un poco de tiempo para acostumbrarse, pero si usted lee a través de un par de veces, usted debería ser capaz de obtener el jist de ella. & nbsp básicamente, Esto le da al desarrollador el poder de invertir derivados de atributos para uso exclusivo dentro de la GUI. & nbsp Esto significa que podemos hacer algunas cosas inteligentes con ECO II de los objetos sin tener que incluir la inversa derivados de los atributos del modelo con el fin de satisfacer GUI requisitos.

& nbsp

& nbsp







Codigo columnas derivadas de la eco ii


Codigo columnas derivadas de la eco ii : Multi-millones de consejos para hacer su vida mas facil.


Explica que Codigo Derivados de las Columnas, y como el uso de ellos.

El objetivo de este articulo sera 'el Evento derivado de las columnas'. & nbsp Jan Nord & eacute n (Borland) me señalo en la direccion de estas cosas hace poco, cuando le pregunte como resolver un GUI problema que tenia. & nbsp Cuando he usado en Negrita para Delphi no se esta muy agradable GUI componente llamado BoldSelectionListBox. & nbsp Este componente me deja mostrar una lista de elementos con una Casilla de verificacion junto a cada fila, marcando o deshabilitando un cuadro de agregar / quitar una asociacion elemento entre el elemento & nbsp seleccionado y algun otro objeto de mi eleccion. & nbsp Esa no es la mejor explicacion del Mundo, asi que echa un vistazo en el siguiente diagrama UML:

haga Click para agrandar

Este diagrama es algo que he estado trabajando recientemente en ECO II. & nbsp es mi interpretacion de la informacion necesaria para crear una Inductivo de la Interfaz de Usuario. & nbsp Mirando el diagrama UML de cerca, se vera que cada Tarea tiene cero o muchos PermittedRoles (Papel) referencias. & nbsp La idea de que mediante la especificacion de la Funcion de la corriente de usuario facilmente puede obtener una lista de tareas que se pueden realizar.

el Uso de este BoldSelectionListBox me gustaria ser capaz de especificar una Tarea como el contexto y, a continuacion, una lista de todas las Funciones en una especie de CheckListBox. & nbsp Garrapatas apareceria en todas las Casillas donde el Papel esta permitido para ejecutar la accion en la lista, y no garrapata, donde no es. & nbsp El extra de la parte mas inteligente del curso es que al marcar una Casilla de verificacion Bold crear el objeto de vinculo necesario para atar el Papel a la Tarea, y agregarlo a la Funcion.AllowedTasks (y por supuesto de la Tarea.PermittedRoles).

al Ver que ECO II no introducir cualquier tipo de controles de GUI (lugar ofrece .red Enlace de datos interfaces de modo que usted puede utilizar el estandar de los controles), yo sospechaba que no iba a ser capaz de lograr el mismo tipo de efecto. & nbsp Jan amablemente me envio un pequeño demo muestra como lograr esto usando solo DataGrids. & nbsp pronto tuve esta logica escrita en mi propia app, y funciono muy bien!

he añadido expresion asas para mi Roles (ehRoles) y Tareas (ehTasks), vinculado a una cuadricula de cada uno y añadio Agregar o Eliminar botones. & nbsp puedo definir cada uno de estos expresion asas para recuperar todos los casos, los 'Roles.allInstances' y 'Tareas.allInstances'.

En el lado izquierdo de mi GUI yo tenia todas mis Tareas de la lista, y en la derecha tenia todos mis Papeles. & nbsp yo ahora quisiera agregar & nbsp una Casilla de verificacion junto a cada Funcion, por lo que me podria especificar si el Papel estaba permitido para ejecutar la tarea seleccionada actualmente o no. & nbsp El primer problema a resolver es saber que Tarea es la 'seleccionado actualmente'. & nbsp Para ello he añadido un CurrencyManagerHandle denominado 'chTasks', establecer su RootHandle a ehTasks, y su BindingContext a TasksDataGrid. & nbsp Ahora chTasks tiene la Tarea actual, agradable y facil.

Siguiente yo tenia que conseguir una columna de casillas de verificacion en & nbsp mi RolesDataGrid y establecer AllowNull a False. & nbsp Para ello he añadido un falso TaskPermitted columna a ehRoles y establezca su tipo de Sistema.Boolean. & nbsp Nota: El boton 'Añadir' en el editor de Columnas tiene un icono de lista Desplegable junto a ella, haga clic en y seleccione EventDerivedColumn. & nbsp entonces agregue & nbsp de la columna adicional a mi RolesDataGrid, para asegurarse de que era una Casilla de verificacion elegi la lista Desplegable en el boton Agregar y selecciona DataGridBoolColumn. & nbsp me puse el MappingName a TaskPermitted.

por el momento tenemos todo lo que necesitamos para ver las Casillas de verificacion, pero no hay manera de decirle al DataGrid si la casilla de verificacion debe estar marcada o no. & nbsp Para ello tenemos que escribir el codigo en el ehRoles' DeriveValue evento, pero primero quiero agregar algo & nbsp hacer ... nbsp el codigo un poco mas facil de escribir. & nbsp & nbsp he añadido una nueva ExpressionHandle ehTasksPermittedRoles, el RootHandle fue el CurrencyHandle (chTasks) y la expresion era la 'auto.PermittedRoles'. & nbsp Esto me permitiria comprobar facilmente que los Roles estan autorizados para ejecutar la 'Tarea actual'.

Ahora & nbsp escribir algo de codigo para calcular el valor de ehRoles.TaskPermitted. & nbsp Esto se realiza en el ehRoles.DeriveValue evento, asi:

private void ehRoles_DeriveValue(object sender, Borland.Eco.Asas.DeriveEventArgs e)
{
& nbsp interruptor (e.Nombre) //Un evento para todos los derivados de columnas

& nbsp {
& nbsp & nbsp & nbsp caso 'TaskPermitted':
& nbsp & nbsp & nbsp & nbsp & nbsp //Obtener una lista de los permitidos roles para esta tarea

& nbsp & nbsp & nbsp & nbsp & nbsp IElementCollection roles = ehTasksPermittedRoles.Elemento como IElementCollection

& nbsp & nbsp & nbsp & nbsp & nbsp //Evitar una excepcion de referencia null

& nbsp & nbsp & nbsp & nbsp & nbsp si (roles) = = null)
& nbsp & nbsp & nbsp & nbsp & nbsp {
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp //devolver un elemento que representa la constante 'false'
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp e.ResultElement = EcoSpace.VariableFactoryService.CreateConstant(falso)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp regresar
& nbsp & nbsp & nbsp & nbsp & nbsp }

& nbsp & nbsp & nbsp & nbsp & nbsp //Observar la ehTaskPermittedRoles elemento, esto nos dice que cuando el elemento
& nbsp & nbsp & nbsp & nbsp & nbsp //cambia de tal manera que podemos invalidar la interfaz grafica de usuario
& nbsp & nbsp & nbsp & nbsp & nbsp ehTasksPermittedRoles.SubscribeToElement(e.ResubscribeSubscriber)

& nbsp & nbsp & nbsp & nbsp & nbsp //Tambien observar los elementos dentro de la lista
& nbsp & nbsp & nbsp & nbsp & nbsp funciones.SubscribeToValue(e.ValueChangeSubscriber)

& nbsp & nbsp & nbsp & nbsp & nbsp //Si el permitido funciones contiene la Funcion actual, a continuacion, volver
& nbsp & nbsp & nbsp & nbsp & nbsp //un elemento que representa la constante 'true'

& nbsp & nbsp & nbsp & nbsp & nbsp si (roles.Contiene(e.RootElement))
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp e.ResultElement = EcoSpace.VariableFactoryService.CreateConstant(true)
& nbsp & nbsp & nbsp & nbsp & nbsp else
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp //en caso Contrario, devuelve un elemento que representa la constante 'false'
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp e.ResultElement = EcoSpace.VariableFactoryService.CreateConstant(falso)
& nbsp;
& nbsp & nbsp & nbsp & nbsp & nbsp romper

& nbsp & nbsp & nbsp predeterminado:
& nbsp & nbsp & nbsp & nbsp throw new Exception(e.El nombre de 'no se deriva correctamente')
& nbsp }//switch
}//ehRoles_DeriveValue

Y, finalmente, & nbsp tenemos que tener una manera de permitir que el usuario active / desactive Casilla de verificacion y tener la asociacion añadido o eliminado de la Tarea.PermittedRoles. & nbsp Esto se realiza en el ehRoles.ReverseDeriveValue evento, como asi

private void ehRoles_ReverseDeriveValue(object sender, Borland.Eco.Asas.ReverseDeriveEventArgs e)
{
& nbsp interruptor(e.Nombre) //Un evento para todos los derivados de columnas
& nbsp {
& nbsp & nbsp & nbsp caso 'TaskPermitted':
& nbsp & nbsp & nbsp & nbsp & nbsp //Obtener una lista de funciones para la tarea actual
& nbsp & nbsp & nbsp & nbsp & nbsp IElementCollection roles = (IElementCollection) ehTasksPermittedRoles.El elemento

& nbsp & nbsp & nbsp & nbsp & nbsp //Evitar una excepcion de referencia null
& nbsp & nbsp & nbsp & nbsp & nbsp si (roles) = = null)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp regresar

& nbsp & nbsp & nbsp & nbsp & nbsp //Convertir el valor se establece en un valor Booleano (desde el datagrid Casilla de verificacion)
& nbsp & nbsp & nbsp & nbsp & nbsp if ( (Boolean) e.Valor)
& nbsp & nbsp & nbsp & nbsp & nbsp {
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp //Si la casilla ha sido marcada, y la marcada Papel no esta en el
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp //Tarea.PermittedRoles lista, a continuacion, agregar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp if (!los roles.Contiene(e.RootElement))
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp funciones.Añadir(e.RootElement)
& nbsp & nbsp & nbsp & nbsp & nbsp }
& nbsp & nbsp & nbsp & nbsp & nbsp else
& nbsp & nbsp & nbsp & nbsp & nbsp {
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp //Si la casilla ha sido marcada, y la marcada Funcion existe en el
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp //Tarea.PermittedRoles lista, a continuacion, retire
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp si (roles.Contiene(e.RootElement))
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp funciones.Eliminar(e.RootElement)
& nbsp & nbsp & nbsp & nbsp & nbsp }
& nbsp & nbsp & nbsp & nbsp & nbsp break
& nbsp }//switch
}//ehRoles_ReverseDeriveValue

Se puede tomar un poco de tiempo para acostumbrarse, pero si usted lee a traves de un par de veces, usted deberia ser capaz de obtener el jist de ella. & nbsp basicamente, Esto le da al desarrollador el poder de invertir derivados de atributos para uso exclusivo dentro de la GUI. & nbsp Esto significa que podemos hacer algunas cosas inteligentes con ECO II de los objetos sin tener que incluir la inversa derivados de los atributos del modelo con el fin de satisfacer GUI requisitos.

& nbsp

& nbsp

Código columnas derivadas de la eco ii

Código columnas derivadas de la eco ii : Multi-millones de consejos para hacer su vida más fácil.
Recommander aux amis
  • gplus
  • pinterest

Comentario

Dejar un comentario

Clasificación