Posts: 219
Joined: Mon Dec 26, 2005 07:25 PM
Alineameniento de Controles...
Posted: Wed Sep 20, 2006 04:48 PM
Carlos, yo tuve ese mismo problema y obté por lo siguiente:
Redefino el dialogo con todos los controles salvo los Gets en cuestión. (lo que no recuerdo es si lo creéen el resource o no, creo que no, pues estoy cambiando el sistema y aún no he instalado el WorkShop, intentalo sin crearlos)
DEFINE DIALOG oDlg ....
...
...
REDEFINE BITMAP oBit[1] ID 600 NAME "IZQ1" OF oDlg CURSOR oCurH ;
ON CLICK QueMarg(oDlg,oFont,oBit,oGet,.T.,0) // BOTON ALINEAR A LA IZQUIERDA
REDEFINE BITMAP oBit[2] ID 601 NAME "CNT1" OF oDlg CURSOR oCurH ;
ON CLICK QueMarg(oDlg,oFont,oBit,oGet,.T.,2) // BOTON ALINEAR AL CENTRO
REDEFINE BITMAP oBit[3] ID 602 NAME "DCH1" OF oDlg CURSOR oCurH ;
ON CLICK QueMarg(oDlg,oFont,oBit,oGet,.T.,1) // BOTON ALINEAR A LA DERECHA
...
REDEFINE mas Controles...
...
...
ACTIVATE DIALOG oDlg ON INIT QueMarg(oDlg,oFont,oBit,oGet,.F.,0)
FUNCTION QueMarg(oDlg,oFont,oBt,Gt,lCtrl,nJust)
IF !lCtrl
oGt[1]:Destroy() // DESTRUYO LOS GETs SI ESTABAN CREADOS CON ANTERIORIDAD (LA PRIMERA VEZ NO LO ESTABAN)
oGt[2]:Destroy()
oGt[3]:Destroy()
oGt[1]:End()
oGt[2]:End()
oGt[3]:End()
oGt[1] := NIL
oGt[2] := NIL
oGt[3] := NIL
SysRefresh()
ENDIF
aVr[1] := ALLTRIM( aVr[1] ) // LE QUITO LOS ESPACIOS SOBRANTES A LAS VARIABLES DE LOS GETs DE CUANDO ESTAN JUSTIFICADAS A LA DERECHA O AL CENTRO
aVr[2] := ALLTRIM( aVr[2] )
aVr[3] := ALLTRIM( aVr[3] )
IF nJust = 0 // SE CREAN LOS GET's JUSTIFICADOS A LA IZQUIERDA
oBt[1]:SetBmp( "IZQ2" ) ; oBt[1]:Disable()
oBt[2]:SetBmp( "CNT1" ) ; oBt[2]:Enable() // BOTON JUSTIFICAR A LA IZQUIERDA PRESIONADO Y DESHABILITADO
oBt[3]:SetBmp( "DCH1" ) ; oBt[3]:Enable()
aVr[1]:= PADR(aVr[1],45)
aVr[2]:= PADR(aVr[2],45)
aVr[3]:= PADR(aVr[3],45)
@ 60,228 GET oGt[1] VAR aVr[1] OF oDlg PIXEL SIZE 350,20 PICTURE "@S45" ;
COLOR CLR_OBLUE FONT oFnt
@ 83,228 GET oGt[2] VAR aVr[2] OF oDlg PIXEL SIZE 350,20 PICTURE "@S45" ;
COLOR CLR_OBLUE FONT oFnt
@ 106,228 GET oGt[3] VAR aVr[3] OF oDlg PIXEL SIZE 350,20 PICTURE "@S45" ;
COLOR CLR_OBLUE FONT oFnt
ELSEIF nJust = 2 // SE CREAN LOS GET's JUSTIFICADOS AL CENTRO
oBt[1]:SetBmp( "IZQ1" ) ; oBt[1]:Enable()
oBt[2]:SetBmp( "CNT2" ) ; oBt[2]:Disable() // BOTON JUSTIFICAR AL CENTRO PRESIONADO Y DESHABILITADO
oBt[3]:SetBmp( "DCH1" ) ; oBt[3]:Enable()
aVr[1]:= PADR(aVr[1],45)
aVr[2]:= PADR(aVr[2],45)
aVr[3]:= PADR(aVr[3],45)
@ 60,228 GET oGt[1] VAR aVr[1] OF oDlg PIXEL SIZE 350,20 PICTURE "@S45" ;
COLOR CLR_OBLUE FONT oFnt CENTER
@ 83,228 GET oGt[2] VAR aVr[2] OF oDlg PIXEL SIZE 350,20 PICTURE "@S45" ;
COLOR CLR_OBLUE FONT oFnt CENTER
@ 106,228 GET oGt[3] VAR aVr[3] OF oDlg PIXEL SIZE 350,20 PICTURE "@S45" ;
COLOR CLR_OBLUE FONT oFnt CENTER
ELSE // SE CREAN LOS GET's JUSTIFICADOS A LA DERECHA
oBt[1]:SetBmp( "IZQ1" ) ; oBt[1]:Enable()
oBt[2]:SetBmp( "CNT1" ) ; oBt[2]:Enable()
oBt[3]:SetBmp( "DCH2" ) ; oBt[3]:Disable()BOTON JUSTIFICAR A DERECHA PRESIONADO Y DESHABILITADO
aVr[1]:= PADL(aVr[1],45)
aVr[2]:= PADL(aVr[2],45)
aVr[3]:= PADL(aVr[3],45)
@ 60,228 GET oGt[1] VAR aVr[1] OF oDlg PIXEL SIZE 350,20 PICTURE "@S45" ;
VALID(aVr[1] := PADL(ALLTRIM(aVr[1]),45),oGt[1]:cText(aVr[1]),.T.) ;
COLOR CLR_OBLUE FONT oFnt RIGHT
@ 83,228 GET oGt[2] VAR aVr[2] OF oDlg PIXEL SIZE 350,20 PICTURE "@S45" ;
VALID(aVr[2] := PADL(ALLTRIM(aVr[2]),45),oGt[2]:cText(aVr[2]),.T.) ;
COLOR CLR_OBLUE FONT oFnt RIGHT
@ 106,228 GET oGt[3] VAR aVr[3] OF oDlg PIXEL SIZE 350,20 PICTURE "@S45" ;
VALID(aVr[3] := PADL(ALLTRIM(aVr[3]),45),oGt[3]:cText(aVr[3]),.T.) ;
COLOR CLR_OBLUE FONT oFnt RIGHT
ENDIF
Ctl3dLook(oGt[1]:hWnd)
Ctl3dLook(oGt[2]:hWnd)
Ctl3dLook(oGt[3]:hWnd)
SysRefresh()
RETURN NIL
*
Como ves, a cada vez que pulso sobre el boton un boton de justificacion destruyo los GET's y los vuelvo a crear. Es la única solución que encontré, y me va de maravilla.
Espero que te sirva la ayuda.
Un saludo.
Nos Gusta Programar