En Delphi XE2 LiveBindings, debo vincular un control VCL de cualquier tipo a una propiedad de cualquier tipo en un objeto arbitrario (no componente). Puedo hacer esto unidireccionalmente Pero necesito hacerlo bidireccionalmente.Necesita LiveBindings bidireccionales entre un control y un objeto
Digamos que quiero vincular un TPerson.PersonName: cadena a un TEdit.Text.
Lo que tengo ahora es simple.
- Cree una nueva aplicación VCL, agregue un TBindScope, TBindingsList, TEdit.
- Crea una instancia de TPerson llamada person1.
- Usando una lista de vinculación, agregue una propiedad TBindExpression.
- Con BindExpression
-
- conjunto ControlComponent a Edit1
-
- conjunto ControlExpression a 'Texto'
-
- conjunto SourceComponent a BindScope1
-
- conjunto SourceExpression a personname
- Agregar un botón; al evento Click que agrego: BindScope1.DataObject: = person1;
- Agregue un botón; al evento Click que agrego (solo uno es necesario, pero hasta que funcione, los probaré a ambos).
-
- TBindings.Notify (remitente, '');
-
- BindingsList1.Notify (remitente, '');
El primer botón se une en la primera dirección. El segundo botón nunca parece escribir el valor en la propiedad person1.PersonName.
He experimentado con el código de notificación, la dirección de enlace, tipos de enlace, expresiones, SourceMember, etc. A veces obtengo errores de tiempo de ejecución en la configuración bindexpression, el resto del tiempo el enlace es simplemente unidireccional.
Espero hacer clic en el segundo botón y ver el contenido de Edit1.Text escrito en person1.PersonName.
Si tengo que hacer todo esto desde el código, lo consideraré y tales ejemplos son bienvenidos, pero realmente quiero hacerlo a través del diseñador si es posible.
Tenga en cuenta que no estoy interesado en el enlace entre dos controles.
Tenga en cuenta también que ya he descargado e inspeccionado los proyectos de muestra LiveBinding, y no encontré ninguno que haga esto. Si esto es incorrecto, sea específico al señalarlo. También he leído el DocWiki. No cubre el enlace bidireccional excepto que usa los controles DB LiveBinding. No estoy usando los controles DB LiveBinding ni estoy usando un DataSet. Así que, a menos que pueda explicarme por qué debería usarlos, no necesitaré información sobre esos controles.
Uso DSharp en lugar de LiveBindings y hacer de esto una de dos forro (uno para la implementación de la incubadora de una propiedad que debe ser vinculante conscientes y uno para la creación de la unión) –