Problema con ajuste en pixels de controles
Problema con ajuste en pixels de controles
Antonio,
Me estoy volviendo loco con el tema de los pixels y debe haber algo raro.
Me explico:
Creo desde código: DEFINE DIALOG oDlg FROM 0,0 TO 400,300 PIXEL
y ahora necesito ajustar un control TGRoup, la manera más natural que se me ocurre es
@1, 1 GROUP oG1 TO oDlg:nHeight-10, oDlg:nWidth-10 PIXEL OF oDlg
Por ejemplo, eso debería funcionar, pero, no funciona, o los pixels de ancho y alto que dice tener el Diálogo son incorrectos, o el TGroup se pinta como le da la gana, pero para nada toma bien el tamaño.
Aparte, no sé seguir, porque si es el diálogo el que no es capaz de decir cuanto mide en pixels, ¿como coloco el resto de controles??
Un Saludo,
Joaquín
Me estoy volviendo loco con el tema de los pixels y debe haber algo raro.
Me explico:
Creo desde código: DEFINE DIALOG oDlg FROM 0,0 TO 400,300 PIXEL
y ahora necesito ajustar un control TGRoup, la manera más natural que se me ocurre es
@1, 1 GROUP oG1 TO oDlg:nHeight-10, oDlg:nWidth-10 PIXEL OF oDlg
Por ejemplo, eso debería funcionar, pero, no funciona, o los pixels de ancho y alto que dice tener el Diálogo son incorrectos, o el TGroup se pinta como le da la gana, pero para nada toma bien el tamaño.
Aparte, no sé seguir, porque si es el diálogo el que no es capaz de decir cuanto mide en pixels, ¿como coloco el resto de controles??
Un Saludo,
Joaquín
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Antonio,
Estoy peor que antes, pongo como me dices lo siguiente:
Function InitDlgPideDat( oDlg )
@1, 1 GROUP oG1 TO oDlg:nHeight-50,;
oDlg:nWidth-10;
PROMPT "Seleccione datos" TRANSPARENT;
PIXEl OF oDlg
Return Nil
Y antes del ACTIVATE:
::oDlglist:bInit := {|| InitDlgPideDat( ::oDlglist ) }
Y ni siquiera me aparece el Tgroup, ha desaparecido del diálogo!!.
¿Podrías ponerme un pequeñísimo ejemplo autocontenido de un Diálogo y un Tgroup ajustado a él quitando algunos pixels por cada lado desde código fuente ??
Te lo agradecería muchísimo, gracias
Joaquín
Estoy peor que antes, pongo como me dices lo siguiente:
Function InitDlgPideDat( oDlg )
@1, 1 GROUP oG1 TO oDlg:nHeight-50,;
oDlg:nWidth-10;
PROMPT "Seleccione datos" TRANSPARENT;
PIXEl OF oDlg
Return Nil
Y antes del ACTIVATE:
::oDlglist:bInit := {|| InitDlgPideDat( ::oDlglist ) }
Y ni siquiera me aparece el Tgroup, ha desaparecido del diálogo!!.
¿Podrías ponerme un pequeñísimo ejemplo autocontenido de un Diálogo y un Tgroup ajustado a él quitando algunos pixels por cada lado desde código fuente ??
Te lo agradecería muchísimo, gracias
Joaquín
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Antonio,
Lo de trabajar con decimales lo sabía y usar ICO_CHARPIX_H y ICO_CHARPIX_W para convertirlos también, lo que quería decir, es que para que fwh funcionara todo igual y no llevarara a confusiones, esa clase TIcon está a falta de la clausula PIXEL.
Además, creo que es un poco chapucero, y aparte desde que el usuario ve que no encuentra donde ha posicionado el icono, hasta que descubre que es lo que está pasando y como solucionarlo son una gran pérdida de tiempo.
Un Saludo y gracias,
Joaquín
Lo de trabajar con decimales lo sabía y usar ICO_CHARPIX_H y ICO_CHARPIX_W para convertirlos también, lo que quería decir, es que para que fwh funcionara todo igual y no llevarara a confusiones, esa clase TIcon está a falta de la clausula PIXEL.
Además, creo que es un poco chapucero, y aparte desde que el usuario ve que no encuentra donde ha posicionado el icono, hasta que descubre que es lo que está pasando y como solucionarlo son una gran pérdida de tiempo.
Un Saludo y gracias,
Joaquín
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Antonio,
No sé si se habrá malinterpretado o no me he expresado bien, el término "chapucero" no iba referido a que la librería en sí fuera chapucera, sino que el TIcon queda incompleto sin la clausula pixel y que para que tenga ese comportamiento, el usuario tiene que dar muchas vueltas. He visto el código y pienso que no sería muy complicado de implementar. ¿Como lo ves?
Un Saludo
Joaquín
PD: Muchas veces escribiendo, al no escucharse la entonación, puede parecer que se dicen cosas con otras intenciones o en forma de desprecio, de ahí esta aclaración.
No sé si se habrá malinterpretado o no me he expresado bien, el término "chapucero" no iba referido a que la librería en sí fuera chapucera, sino que el TIcon queda incompleto sin la clausula pixel y que para que tenga ese comportamiento, el usuario tiene que dar muchas vueltas. He visto el código y pienso que no sería muy complicado de implementar. ¿Como lo ves?
Un Saludo
Joaquín
PD: Muchas veces escribiendo, al no escucharse la entonación, puede parecer que se dicen cosas con otras intenciones o en forma de desprecio, de ahí esta aclaración.
Un problema similar tenía yo con todos los controles al crearlos desde código, resultaba que no siempre la coordenada :
@ 10 , 10 , era la misma para todos los controles.
Y había que ajustarlos a mano limpia.
Así que le hice una pequeñisma modificación a la clase TDialog y ahora ya puedo pintar todos los controles en la coordenadas que yo le indico.
y listo el pollo.
@ 10 , 10 , era la misma para todos los controles.
Y había que ajustarlos a mano limpia.
Así que le hice una pequeñisma modificación a la clase TDialog y ahora ya puedo pintar todos los controles en la coordenadas que yo le indico.
Code: Select all
// Vikthor 21-Sep-2005
AEVAL( ::aControls, { | o , n | IF( o:ClassName()=="TIMAGE" .OR. o:ClassName()=="TBITMAP" , ;
o:Move( o:nTop/2 , o:nLeft/2 , 0 , 0 , .T. ) , ;
o:Move( o:nTop/2 , o:nLeft/2 , o:nWidth/2 , o:nHeight/2,.T. ) ) } )
Vikthor