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.

Varias dudas y questiones

Foro de Xailer profesional en español
Responder
jmartial
Mensajes: 397
Registrado: Vie May 20, 2005 8:53 pm

Varias dudas y questiones

Mensaje por jmartial »

Hola,
He intentado construir un mantenimiento de clientes por ejemplo y se me
plantean las siguientes dudas, a ver si tienen solución:
- He creado un Tform derivado de Xform para poder cambiar distintos
comportamientos para todos los forms de mantenimientos.
He creado un form y abierto los TDataset clientes.dbf y frascli.dbf, un
TDatasource CDX con el cConnect que indica un path provisional mientras
diseño la pantalla y un TDBbrowse de frascli.dbf en una pestaña de un
folder.
1º) Cuando ejecute la aplicación fuera del IDE no quiero que use el cConnect
definido ahí, sino uno que tengo en una variable.
¿como lo hago?
2º) ¿Podría abrir todas las dbfs al principio y luego al abrir un form, usar
un duplicado o algo parecido y asociarlo a los TDatasets que cree en la
construcción del form?
3º) Cuando abro una base, ¿comprueba con file() si existe al abrirla? Me
parece que sí, y me haría falta desactivar ese comportamiento, porque si
accedo a una dbf por IP y port a través de ADS por ejemplo, siempre fallará.
4º) En un folder con un TDBbrowse de frascli, si corto el browse, creo un
folder dentro del 1º folder y pego el browse, Xailer queda totalmente
inestable y pierdo todo lo que llevaba hecho hasta el momento.
5º) ¿ En qué casos Xailer destruye automáticamente los fonts y en qué casos
es responsabilidad del programador? Me gustaría usar unos fonts ya creados
al principio y que Xailer no me los destruyera.
Un Saludo,
Joaquín
Avatar de Usuario
ignacio
Site Admin
Mensajes: 9449
Registrado: Lun Abr 06, 2015 8:00 pm
Ubicación: Madrid, Spain
Contactar:

Varias dudas y questiones

Mensaje por ignacio »

Joaquin,
> 1º) Cuando ejecute la aplicación fuera del IDE no quiero que use el
> cConnect definido ahí, sino uno que tengo en una variable.
> ¿como lo hago?
En el evento OnInitialize del form principal puedes cambiar lo que quieras.
No obstante el path que utiliza el TDataSource puede ser relativo al
directorio donde se encuentra el EXE y esa es la mejor forma de usarlo ya
que entonces no tendrás que cambiar nada.
> 2º) ¿Podría abrir todas las dbfs al principio y luego al abrir un form,
> usar un duplicado o algo parecido y asociarlo a los TDatasets que cree en
> la construcción del form?
Lo más sencillo es que en el evento OnCreate de cada datacontrol le indiques
el DataSet a usar. Además piensa que todos los datacontrols pueden apuntar
al mismo código, por lo que tan sólo escribes una vez el método de todos los
eventos de cada control. No obstante en un futuro próximo tendremos la
posibilidad de tener DataSets y DataSources publicos para toda la aplicación
que podrán ser incluso asignados en tiempo de diseño.
>
> 3º) Cuando abro una base, ¿comprueba con file() si existe al abrirla? Me
> parece que sí, y me haría falta desactivar ese comportamiento, porque si
> accedo a una dbf por IP y port a través de ADS por ejemplo, siempre
> fallará.
¿Estas seguro? Puede que se nos haya colado, pero creo que no. Si vas a
utilizar conexión internet te recomiendo que utilices diccionarios, tan sólo
tienes que modificar en el TAdsDataSource la propiedad lUseDictionary que
tiene que ir a .T. logicamente
>
> 4º) En un folder con un TDBbrowse de frascli, si corto el browse, creo un
> folder dentro del 1º folder y pego el browse, Xailer queda totalmente
> inestable y pierdo todo lo que llevaba hecho hasta el momento.
Si nos mandas un ejemplo te lo agradezco.
>
> 5º) ¿ En qué casos Xailer destruye automáticamente los fonts y en qué
> casos es responsabilidad del programador? Me gustaría usar unos fonts ya
> creados al principio y que Xailer no me los destruyera.
Los fonts asignados a controles y formularios se destruyen automáticamente
cuando se destruye el control o formulario. No obstante mira la propiedad
lParentFont en la documentación para más información.
Ciertos tipos de font hay que destruirlos a mano, como por ejemplo, los que
se utilizan para la impresión con el generador de informes.
Un saludo,
Ignacio Ortiz de Zúñiga
[OZ Software]
https://www.ozs.es
--
[Equipo de Xailer / Xailer team]
https://www.xailer.com
jmartial
Mensajes: 397
Registrado: Vie May 20, 2005 8:53 pm

Varias dudas y questiones

Mensaje por jmartial »

Ignacio,
1º ) He creado como componente en el form COMPONENT oCdxEmpresa y COMPONENT
oDbfCliente
En el IDE el cConnect := .empresa y en el METHOD FormInitialize( oSender )
pongo:
::oCdxEmpresa:OnCreate := {|oSender| oSender:cConnect :=
"C:programOtraEmpresa" }
Y no hace ningún caso, sigue abriendo las dbf´s en ".empresa" .
Lo de poner el path relativo puede funcionar en algunos casos pero imagina,
en c:Miaplicacion.exe y los datos en mi_serverdatos
, no me sirve y si es IP:PORT tampoco, me gustaría poder inicializar
cConnect al principio de la aplicación independientemente del que le haya
puesto en el IDE al diseñar.
2º) Podría ser una solución, pero ¿ tendría que ser un método para cada form
o xailer permite un método para todos los forms?
3º) Lo probaré para estar seguro. Lo del diccionario lo conocía pero no
quiero usarlos, sino abrir las bases directamente.
4º) A ver si puedo preparar un pequeño ejemplo, pero es reproducible en
cualquier proyecto con folder y TDBbrowse incrustado, cortar y pegar en otro
folder dentro del 1º folder.
5º) Si no he entendido mal, Xailer siempre me va a destruir el font que yo
le asigne a un form, aunque lo haya creado antes manualmente ¿cierto?
Un Saludo y gracias,
Joaquín
"Ignacio Ortiz de Zúñiga" <NoName@xailer.com> escribió en el mensaje
news:444cb841$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
> Joaquin,
>
>> 1º) Cuando ejecute la aplicación fuera del IDE no quiero que use el
>> cConnect definido ahí, sino uno que tengo en una variable.
>> ¿como lo hago?
>
> En el evento OnInitialize del form principal puedes cambiar lo que
> quieras. No obstante el path que utiliza el TDataSource puede ser relativo
> al directorio donde se encuentra el EXE y esa es la mejor forma de usarlo
> ya que entonces no tendrás que cambiar nada.
>
>> 2º) ¿Podría abrir todas las dbfs al principio y luego al abrir un form,
>> usar un duplicado o algo parecido y asociarlo a los TDatasets que cree en
>> la construcción del form?
>
> Lo más sencillo es que en el evento OnCreate de cada datacontrol le
> indiques el DataSet a usar. Además piensa que todos los datacontrols
> pueden apuntar al mismo código, por lo que tan sólo escribes una vez el
> método de todos los eventos de cada control. No obstante en un futuro
> próximo tendremos la posibilidad de tener DataSets y DataSources publicos
> para toda la aplicación que podrán ser incluso asignados en tiempo de
> diseño.
>
>>
>> 3º) Cuando abro una base, ¿comprueba con file() si existe al abrirla? Me
>> parece que sí, y me haría falta desactivar ese comportamiento, porque si
>> accedo a una dbf por IP y port a través de ADS por ejemplo, siempre
>> fallará.
>
> ¿Estas seguro? Puede que se nos haya colado, pero creo que no. Si vas a
> utilizar conexión internet te recomiendo que utilices diccionarios, tan
> sólo tienes que modificar en el TAdsDataSource la propiedad lUseDictionary
> que tiene que ir a .T. logicamente
>
>>
>> 4º) En un folder con un TDBbrowse de frascli, si corto el browse, creo un
>> folder dentro del 1º folder y pego el browse, Xailer queda totalmente
>> inestable y pierdo todo lo que llevaba hecho hasta el momento.
>
> Si nos mandas un ejemplo te lo agradezco.
>
>>
>> 5º) ¿ En qué casos Xailer destruye automáticamente los fonts y en qué
>> casos es responsabilidad del programador? Me gustaría usar unos fonts ya
>> creados al principio y que Xailer no me los destruyera.
>
> Los fonts asignados a controles y formularios se destruyen automáticamente
> cuando se destruye el control o formulario. No obstante mira la propiedad
> lParentFont en la documentación para más información.
>
> Ciertos tipos de font hay que destruirlos a mano, como por ejemplo, los
> que se utilizan para la impresión con el generador de informes.
>
> Un saludo,
>
>
>
Avatar de Usuario
ignacio
Site Admin
Mensajes: 9449
Registrado: Lun Abr 06, 2015 8:00 pm
Ubicación: Madrid, Spain
Contactar:

Varias dudas y questiones

Mensaje por ignacio »

Joaquin,
> 1º ) He creado como componente en el form COMPONENT oCdxEmpresa y
> COMPONENT oDbfCliente
> En el IDE el cConnect := .empresa y en el METHOD FormInitialize(
> oSender ) pongo:
>
> ::oCdxEmpresa:OnCreate := {|oSender| oSender:cConnect :=
> "C:programOtraEmpresa" }
>
> Y no hace ningún caso, sigue abriendo las dbf´s en ".empresa" .
>
Define OnCreate en tiempo de diseño
> 2º) Podría ser una solución, pero ¿ tendría que ser un método para cada
> form o xailer permite un método para todos los forms?
Si, pero de una sola línea:
oSender:oDataSet := .....
>
> 3º) Lo probaré para estar seguro. Lo del diccionario lo conocía pero no
> quiero usarlos, sino abrir las bases directamente.
>
Pues si estas pensando en usar conexiones via IP te lo recomiendo, y no te
imaginas como.
> 4º) A ver si puedo preparar un pequeño ejemplo, pero es reproducible en
> cualquier proyecto con folder y TDBbrowse incrustado, cortar y pegar en
> otro folder dentro del 1º folder.
Quedo a la espera.
>
> 5º) Si no he entendido mal, Xailer siempre me va a destruir el font que yo
> le asigne a un form, aunque lo haya creado antes manualmente ¿cierto?
>
Correcto. Si deseas que no lo haga simpelemente desasignalo en el evento
OnClose del formulario (oForm:oFont := NIL)
Saludos,
Ignacio Ortiz de Zúñiga
[OZ Software]
https://www.ozs.es
--
[Equipo de Xailer / Xailer team]
https://www.xailer.com
Responder