Alineameniento de Controles...

Post Reply
Carlos Sincuir
Posts: 38
Joined: Mon Nov 28, 2005 2:10 pm

Alineameniento de Controles...

Post by Carlos Sincuir »

Hola,
quiero preguntar si alguien sabe como cambiar la alineación (izquierda,derecha o centrado) de un control creado desde recursos (workShop), especificamente un Get ("Edit text style") desde tiempo de ejecución.
El problema es que tengo un dialogo con un get, que dependiendo un parametro puede ser númerico o texto, por lo que me gustaría poder cambiar su alineacion derecha o izquierda, ya que desde workshop solo puedo poner una de estas dos.

Espero me puedan ayuda con esto. Saludos.

Carlos Sincuir
manuramos
Posts: 219
Joined: Mon Dec 26, 2005 7:25 pm
Location: Jerez de la Frontera (Spain)

Post by manuramos »

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
User avatar
joseluisysturiz
Posts: 2024
Joined: Fri Jan 06, 2006 9:28 pm
Location: Guatire - Caracas - Venezuela
Contact:

Post by joseluisysturiz »

Si usas Pelles C o Visual C, lo puedes hacer directo en el recurso y es mas rapido y seguro...
Dios no está muerto...

Gracias a mi Dios ante todo!
Carlos Sincuir
Posts: 38
Joined: Mon Nov 28, 2005 2:10 pm

Post by Carlos Sincuir »

Gracias Manuramos, no se me había ocurrido de esa manera, voy hacer la prueba de esa manera.

Saludos.

Carlos Sincuir
Post Reply