![bindingslist03 | Embarcadero RAD Studio Delphi C++Builder Blogs bindingslist 03](https://i0.wp.com/blogs.embarcadero.com/wp-content/uploads/2021/06/bindingslist_03-6493419.png?resize=1140%2C688&ssl=1)
Después de ver las expresiones de enlace y cómo se pueden vincular a los componentes, pasemos al componente destinado a gestionar las expresiones de enlace.
En publicaciones de blog recientes, cubrí el motor de expresión central RTL de Delphi y el enlace de componentes . Ahora podemos dar un paso adicional y buscar un componente clave para toda la arquitectura de enlaces, llamado BindingsList. Una lista de enlaces es una colección de diferentes tipos de expresiones de enlaces, administradas en los diseñadores.
En otras palabras, las expresiones y los enlaces de componentes que definí en el código fuente en la última publicación del blog se pueden definir completamente en los diseñadores (y asistentes) del componente BindingsList. Simplemente suelte un componente de este tipo en un formulario más algunos componentes visuales (en mi ejemplo, dos ediciones, una edición giratoria y una barra de progreso; vea la imagen a continuación).
El componente BindingsList tiene un diseñador que permite definir una colección de enlaces. Cada enlace se puede elegir utilizando una de las muchas opciones disponibles (demasiadas para explorar en este artículo y centradas principalmente en los enlaces de fuentes y campos de datos). Las dos opciones básicas que voy a usar aquí son TBindExpression y TBindExprItems.
Después de seleccionar uno de esos enlaces, digamos un TBindExpression, necesita interactuar con dos superficies de diseño diferentes para trabajar en la expresión: por un lado, puede configurar las propiedades de la expresión en el Inspector de objetos, como SourceComponent y ControlComponent (el uso del término para referirse al control de destino) y las expresiones relacionadas; Por otro lado, al hacer doble clic en la expresión en el editor BindingList, puede abrirnos un diseñador de expresión especial, que a su vez tiene editores y visores de elementos adicionales:
En la imagen de arriba, puede ver que conecté la expresión a un control de origen y destino, pero todavía no he definido una expresión. Esto puede ser tan simple como un solo nombre de propiedad o una combinación más compleja de valores y expresiones y se puede configurar en las propiedades de expresiones del Inspector de objetos para el enlace o en el diseñador especial que se muestra arriba. El diseñador también ofrece la opción de evaluar e inspeccionar diferentes expresiones.
Volviendo a las expresiones, simplemente podemos usar Valor y Posición para la Edición de giro y la Barra de progreso, respectivamente. Observe que la expresión de enlace tiene una dirección (de forma predeterminada, origen a control) que se puede invertir o también puede ser bidireccional.
He usado una expresión bidireccional para los dos cuadros de edición, de modo que al escribir cualquiera de ellos se copia el contenido en el otro. En este segundo ejemplo, he usado un enlace TBindExprItems (pero una expresión regular hubiera sido suficiente). Este es un enlace más complejo, en el que se especifica la fuente y el control (como se indicó anteriormente) pero se define una colección de expresiones claras y de formato, que pueden involucrar múltiples propiedades de los controles. En este ejemplo, la asignación es de texto a texto (bidireccional) como puede ver a continuación:
Con todo esto, el único código Delphi que se necesita en la aplicación es una llamada para reevaluar los enlaces cuando cambia el valor de la fuente. Esto se hace fácilmente manejando los eventos OnChange de los diversos controles y activando una actualización general de los enlaces para el control actual (el remitente ):
1 |
TBindings.Notify(Sender, ''); |
Esta es la aplicación muy simple en acción:
Ahora puede que se pregunte dónde terminan todos estos ajustes de configuración … pero como la mayoría de las otras configuraciones de tiempo de diseño en Delphi, no es negro para un archivo de formulario que puede ver como texto (y editar, si sabe lo que está haciendo) . También puede copiar el componente del diseñador y pegarlo como texto, como he hecho aquí:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
object BindingsList1: TBindingsList Methods = <> OutputConverters = <> object BindExprItemsEdits: TBindExprItems Category = 'Binding Expressions' ControlComponent = Edit1 SourceComponent = Edit2 FormatExpressions = < item ControlExpression = 'Text' SourceExpression = 'Text' Direction = dirBidirectional end> ClearExpressions = <> NotifyOutputs = False end object BindExpression1: TBindExpression Category = 'Binding Expressions' ControlComponent = ProgressBar1 SourceComponent = SpinEdit1 SourceExpression = 'Value' ControlExpression = 'Position' NotifyOutputs = False Direction = dirSourceToControl end end |
Eso es todo por ahora, incluso si me doy cuenta de que acabo de arañar la superficie de la arquitectura de las uniones. El siguiente paso de esta serie sobre expresiones y enlaces son los diseñadores de Visual Live Binding, que se basa en las piezas que hemos visto hasta ahora. Lo cubriré la próxima vez.
Design. Code. Compile. Deploy.
Start Free Trial Upgrade Today
Free Delphi Community Edition Free C++Builder Community Edition