In order for this site to work correctly we need to store a small file (called a cookie) on your computer. Most every site in the world does this, however since the 25th of May 2011, by law we have to get your permission first. Please abandon the forum if you disagree.
Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.
Hoy me he dado cuenta de que cuando trato de insertar un control "TOffice2007Button" sobre un contenedor cualquiera ( Panel, Bevel ) el diseñador ignora totalmente el contenedor sobre el que se pretende insertar el botón y siempre lo genera en el formulario. ¿Cómo se puede solventar este problema?
1. Creo proyecto desde cero y agrego un simple formulario:
2. Agrego un Bevel, que actuará de contenedor del botón:
3. Finalmente trato de agregar el botón al contenedor sin éxito alguno:
tiene que ser un bug de ese control. Si tienes el código fuente, mira a ver cómo se está creando el control. Si hace falta, fíjate cómo se crean ese tipo de controles en \xailer\samples\controls. Quizás en la llamada a RegisterComponent() estés creando el control, cuando ahí sólo hay que instanciar el objeto. P.ej.:
tiene que ser un bug de ese control. Si tienes el código fuente, mira a ver cómo se está creando el control. Si hace falta, fíjate cómo se crean ese tipo de controles en \xailer\samples\controls. Quizás en la llamada a RegisterComponent() estés creando el control, cuando ahí sólo hay que instanciar el objeto. P.ej.:
Buenos días José!
El control que estoy utilizando en cuestión es el que tenéis en el directorio de "Samples" del Xailer: < \Samples\MetaControls\Office2007Button\ >. Se trata de un MetaControl y utiliza la instrucción:
veo que ese control está hecho explícitamente para que se coloque sobre el formulario, no sobre otro contenedor. Habría que cambiar lo siguiente (no lo he probado):
Realmente el control no es más que un TGlassBtn con algunas propiedades cambiadas que perfectamente lo habría podido hacer con la opción de 'Crear control de usuario'. No obstante aquí le dejo el código corregido:
veo que ese control está hecho explícitamente para que se coloque sobre el formulario, no sobre otro contenedor. Habría que cambiar lo siguiente (no lo he probado):
José, el parche que indicas parece válido pero lo he probado y no funciona. En el método "Create", el parámetro que recibe ( oParent ) es de tipo "TFormEditor" por lo que al agregarlo a oParent, lo agrega al Formulario y no al control seleccionado en el mismo.
Parece ser que aunque selecciones el TBevel para agregar el control al mismo, en el método Create se recibe el TFormEditor:
Realmente el control no es más que un TGlassBtn con algunas propiedades cambiadas que perfectamente lo habría podido hacer con la opción de 'Crear control de usuario'. No obstante aquí le dejo el código corregido:
De esta manera sí funcionaría. Sin embargo, si tratamos de crear un MetaControl utilizando la técnica que tenía éste, seguiría recibiendo TFormEditor en vez de un oParent ( tal como muestro en el anterior post ). Eso se podría arreglar de alguna manera?