Page 1 of 2

Controles en dialogos no se alinean

PostPosted: Thu Oct 26, 2017 2:28 pm
by Compuin
Saludos

Cual es la mejor manera de trabajar los controles en un dialogo incrustrado en una Windows ?

A pesar que hago las alineaciones nunca quedan donde deben estar

Los dialogos se trabajan en columnas/filas o en pixeles ?

Ventajas / desventajasde cada uno ?

Gracias a todos lo que puedan aclarar

Re: Controles en dialogos no se alinean

PostPosted: Thu Oct 26, 2017 4:28 pm
by karinha
Que usas, @Say ó Recursos del Workshop.exe the best? Saludos.

Re: Controles en dialogos no se alinean

PostPosted: Thu Oct 26, 2017 4:40 pm
by Compuin
No uso recursos, todos los controles hecho a codigo

PS (No quiero usar recursos)

Re: Controles en dialogos no se alinean

PostPosted: Thu Oct 26, 2017 4:42 pm
by cnavarro
Yo hace tiempo que en mis desarrollos intento por todos los medios no usarlos, solo para las imagenes
Pon un ejemplo de como lo haces

Re: Controles en dialogos no se alinean

PostPosted: Thu Oct 26, 2017 5:46 pm
by Compuin
cnavarro wrote:Yo hace tiempo que en mis desarrollos intento por todos los medios no usarlos, solo para las imagenes
Pon un ejemplo de como lo haces


@ 1,01 SAY "Nombre: " RIGHT
@ 2,01 SAY "Apellido : " RIGHT
@ 3,01 SAY "Curso : " RIGHT
@ 4,01 SAY "Horario : " RIGHT

@ 1,20 GET oNombre VAR cNombre

@ 3,06 GET oApellido VAR cApellido;

@ 3,06 COMBOBOX oHorario VAR cHorario ITEMS {"Diurno","Nocturno"}

@ 4,06 CHECKBOX lStatus PROMPT "Status"

Re: Controles en dialogos no se alinean

PostPosted: Thu Oct 26, 2017 6:23 pm
by cnavarro
Entiendo que los controles son esos o cualquier otros
No me refería sólo a eso, sino a la definición del diálogo ( o contenedor ) y del font ( también importante )
Es decir, un ejemplo completo para su implementación

Re: Controles en dialogos no se alinean

PostPosted: Thu Oct 26, 2017 6:28 pm
by Compuin
DEFINE DIALOG oDlg;
FROM 0,0 TO 80, 80;
PIXEL TITLE 'Test' OF oWnnPPal

@ 1,01 SAY "Nombre: " RIGHT
@ 2,01 SAY "Apellido : " RIGHT
@ 3,01 SAY "Curso : " RIGHT
@ 4,01 SAY "Horario : " RIGHT

@ 1,20 GET oNombre VAR cNombre

@ 3,06 GET oApellido VAR cApellido;

@ 3,06 COMBOBOX oHorario VAR cHorario ITEMS {"Diurno","Nocturno"}

@ 4,06 CHECKBOX lStatus PROMPT "Status"

ACTIVATE DIALOG oDlg NOWAIT

Re: Controles en dialogos no se alinean

PostPosted: Thu Oct 26, 2017 6:32 pm
by cnavarro
Veo que no utilizas la clausula SIZE en los controles

Re: Controles en dialogos no se alinean

PostPosted: Thu Oct 26, 2017 6:35 pm
by Compuin
Eso influye para que los muestre desordenados?

Re: Controles en dialogos no se alinean

PostPosted: Thu Oct 26, 2017 6:40 pm
by cnavarro
Compuin wrote:Saludos

Cual es la mejor manera de trabajar los controles en un dialogo incrustrado en una Windows ?

A pesar que hago las alineaciones nunca quedan donde deben estar

Los dialogos se trabajan en columnas/filas o en pixeles ?

Ventajas / desventajasde cada uno ?

Gracias a todos lo que puedan aclarar


No hombre, no es exactamente eso
Pero, lo que quiero exponer es que el hecho de que no use recursos para el diseño, no me hace olvidar la información que incluyen los .rc para su diseño y uso posterior.
Eso sí, todos los elementos de cada control estará definido con variables y no valores fijos

Ejemplo:

@ nRow, nCol SAY "Nombre: " RIGHT

Ah!, yo utilizo siempre PIXEL

Re: Controles en dialogos no se alinean

PostPosted: Thu Oct 26, 2017 6:46 pm
by Compuin
cnavarro wrote:
Compuin wrote:Saludos

Cual es la mejor manera de trabajar los controles en un dialogo incrustrado en una Windows ?

A pesar que hago las alineaciones nunca quedan donde deben estar

Los dialogos se trabajan en columnas/filas o en pixeles ?

Ventajas / desventajasde cada uno ?

Gracias a todos lo que puedan aclarar


No hombre, no es exactamente eso
Pero, lo que quiero exponer es que el hecho de que no use recursos para el diseño, no me hace olvidar la información que incluyen los .rc para su diseño y uso posterior.
Eso sí, todos los elementos de cada control estará definido con variables y no valores fijos

Ejemplo:

@ nRow, nCol SAY "Nombre: " RIGHT

Ah!, yo utilizo siempre PIXEL


No entendi lo del .RC

Re: Controles en dialogos no se alinean

PostPosted: Thu Oct 26, 2017 6:49 pm
by cnavarro
No quiero decir que has de utilizar RC, justo es lo que intentamos evitar
Quiero decir que intentes definir los controles con las características que puedes llegar a necesitar para manejar su ubicación en el contenedor
Cuando defines un control en el RC, siempre aparece la fila, columna, ancho y alto, no?

Re: Controles en dialogos no se alinean

PostPosted: Thu Oct 26, 2017 6:56 pm
by Compuin
cnavarro wrote:No quiero decir que has de utilizar RC, justo es lo que intentamos evitar
Quiero decir que intentes definir los controles con las características que puedes llegar a necesitar para manejar su ubicación en el contenedor
Cuando defines un control en el RC, siempre aparece la fila, columna, ancho y alto, no?


Ok podrias darme un ejemplo de como hacerlo ?

Re: Controles en dialogos no se alinean

PostPosted: Thu Oct 26, 2017 7:21 pm
by cnavarro
Ok, algo asi, lo he copiado de un ejemplo que tengo, sin comprobar su funcionamiento, pero por lo menos ves lo que quiero decir
Faltaría parametrizar tambien las columnas, pero tal y como están definidas en esta ejemplo, no creo que te sea muy difícil

Code: Select all  Expand view

Static nPorHeight := 1    // Estas son para distintas resoluciones quizás
Static nPorWidth  := 1
Function Main()

    DlgClient()

Return nil


Function DlgClient( )

   local oDlg
   local aCtl[ 25 ]
   local oFont
   local oFontBold
   local lRet        := .F.
   local nFil        := 10
   local nClrT       := CLR_BLUE
   local nClrTG      := CLR_BLUE
   local nClrB       := CLR_HGRAY //WHITE
   local oChk
   local cId         := Space( 9 )
   local cNombre     := Space( 20 )
   local cApells     := Space( 20 )
   local dDateI      := Date() //Ctod( "9999/99/99" )
   local nF1         := 91 * nPorHeight
   local nC1         := 300
   local nF2         := 480 * nPorHeight
   local nC2         := 720
   local aRet        := {}
   local nOld        := Select()
   local n           := 0
   local nInc        := 14 * nPorHeight
   
      cId       := PadR( aDats[ 1 ], 9 )
      cNombre   := PadR( aDats[ 2 ], 15 )
      cApells   := PadR( aDats[ 3 ], 30 )
 
   
   DEFINE FONT oFont NAME "Calibri" SIZE 0, -14 * nPorHeight
   DEFINE FONT oFontBold NAME "Calibri" SIZE 0, -18 * nPorHeight BOLD

   DEFINE DIALOG oDlg FROM nF1, nC1 TO nF2, nC2 PIXEL COLORS nClrT, nClrB ;
          TITLE "Add/Edit Client" // FONT oFontBold //;
   
   oDlg:lHelpIcon := .F.
   oDlg:nOpacity  := 240    // 0 .. 255      //oDlg:nSeeThroClr := <nColor>

   @ nFil,  5 SAY aCtl[ 1 ] PROMPT "Codigo:" OF oDlg ;
            FONT oFont UPDATE ;
            COLORS nClrTG, nClrB SIZE 70 * nPorWidth, 11 * nPorHeight PIXEL

   @ nFil, 45 GET aCtl[ 2 ] VAR cId OF oDlg ;
            FONT oFont UPDATE PICTURE "@!" ;
            COLORS nClrT, nClrB SIZE 56 * nPorWidth, 11 * nPorHeight PIXEL

   nFil  += nInc
   @ nFil,  5 SAY aCtl[ 5 ] PROMPT "Nombre:" OF oDlg ;
            FONT oFont UPDATE ;
            COLORS nClrTG, nClrB SIZE 70 * nPorWidth, 11 * nPorHeight PIXEL

   @ nFil, 45 GET aCtl[ 6 ] VAR cNombre OF oDlg ;
            FONT oFont UPDATE PICTURE "@K" ;
            COLORS nClrT, nClrB SIZE 100 * nPorWidth, 11 * nPorHeight PIXEL
   
   nFil += nInc
   @ nFil,  5 SAY aCtl[ 11 ] PROMPT "Apellidos:" OF oDlg ;
            FONT oFont UPDATE ;
            COLORS nClrTG, nClrB SIZE 70 * nPorWidth, 11 * nPorHeight PIXEL

   @ nFil, 45 GET aCtl[ 12 ] VAR cApells OF oDlg ;
            FONT oFont UPDATE PICTURE "@K" ;
            COLORS nClrT, nClrB SIZE 156 * nPorWidth, 11 * nPorHeight PIXEL
           

   nFil  += nInc
   @ nFil, 83 BUTTON aCtl[ 23 ] PROMPT "&Aceptar" OF oDlg ;     //164
            FONT oFont SIZE 53 * nPorWidth, 14 * nPorHeight PIXEL ACTION ( lRet := .T., oDlg:End() )
   
   @ nFil, 145 BUTTON aCtl[ 24 ] PROMPT "&Cancelar" OF oDlg ;
            FONT oFont SIZE 53 * nPorWidth, 14 * nPorHeight PIXEL ACTION oDlg:End()

   ACTIVATE DIALOG oDlg VALID ( .T. )  //NOWAIT

   oFont:End()
   oFontBold:End()

Return nil

//----------------------------------------------------------------------------//


 

Re: Controles en dialogos no se alinean

PostPosted: Thu Oct 26, 2017 7:30 pm
by Compuin
cnavarro wrote:Ok, algo asi, lo he copiado de un ejemplo que tengo, sin comprobar su funcionamiento, pero por lo menos ves lo que quiero decir
Faltaría parametrizar tambien las columnas, pero tal y como están definidas en esta ejemplo, no creo que te sea muy difícil

Code: Select all  Expand view

Static nPorHeight := 1    // Estas son para distintas resoluciones quizás
Static nPorWidth  := 1
Function Main()

    DlgClient()

Return nil


Function DlgClient( )

   local oDlg
   local aCtl[ 25 ]
   local oFont
   local oFontBold
   local lRet        := .F.
   local nFil        := 10
   local nClrT       := CLR_BLUE
   local nClrTG      := CLR_BLUE
   local nClrB       := CLR_HGRAY //WHITE
   local oChk
   local cId         := Space( 9 )
   local cNombre     := Space( 20 )
   local cApells     := Space( 20 )
   local dDateI      := Date() //Ctod( "9999/99/99" )
   local nF1         := 91 * nPorHeight
   local nC1         := 300
   local nF2         := 480 * nPorHeight
   local nC2         := 720
   local aRet        := {}
   local nOld        := Select()
   local n           := 0
   local nInc        := 14 * nPorHeight
   
      cId       := PadR( aDats[ 1 ], 9 )
      cNombre   := PadR( aDats[ 2 ], 15 )
      cApells   := PadR( aDats[ 3 ], 30 )
 
   
   DEFINE FONT oFont NAME "Calibri" SIZE 0, -14 * nPorHeight
   DEFINE FONT oFontBold NAME "Calibri" SIZE 0, -18 * nPorHeight BOLD

   DEFINE DIALOG oDlg FROM nF1, nC1 TO nF2, nC2 PIXEL COLORS nClrT, nClrB ;
          TITLE "Add/Edit Client" // FONT oFontBold //;
   
   oDlg:lHelpIcon := .F.
   oDlg:nOpacity  := 240    // 0 .. 255      //oDlg:nSeeThroClr := <nColor>

   @ nFil,  5 SAY aCtl[ 1 ] PROMPT "Codigo:" OF oDlg ;
            FONT oFont UPDATE ;
            COLORS nClrTG, nClrB SIZE 70 * nPorWidth, 11 * nPorHeight PIXEL

   @ nFil, 45 GET aCtl[ 2 ] VAR cId OF oDlg ;
            FONT oFont UPDATE PICTURE "@!" ;
            COLORS nClrT, nClrB SIZE 56 * nPorWidth, 11 * nPorHeight PIXEL

   nFil  += nInc
   @ nFil,  5 SAY aCtl[ 5 ] PROMPT "Nombre:" OF oDlg ;
            FONT oFont UPDATE ;
            COLORS nClrTG, nClrB SIZE 70 * nPorWidth, 11 * nPorHeight PIXEL

   @ nFil, 45 GET aCtl[ 6 ] VAR cNombre OF oDlg ;
            FONT oFont UPDATE PICTURE "@K" ;
            COLORS nClrT, nClrB SIZE 100 * nPorWidth, 11 * nPorHeight PIXEL
   
   nFil += nInc
   @ nFil,  5 SAY aCtl[ 11 ] PROMPT "Apellidos:" OF oDlg ;
            FONT oFont UPDATE ;
            COLORS nClrTG, nClrB SIZE 70 * nPorWidth, 11 * nPorHeight PIXEL

   @ nFil, 45 GET aCtl[ 12 ] VAR cApells OF oDlg ;
            FONT oFont UPDATE PICTURE "@K" ;
            COLORS nClrT, nClrB SIZE 156 * nPorWidth, 11 * nPorHeight PIXEL
           

   nFil  += nInc
   @ nFil, 83 BUTTON aCtl[ 23 ] PROMPT "&Aceptar" OF oDlg ;     //164
            FONT oFont SIZE 53 * nPorWidth, 14 * nPorHeight PIXEL ACTION ( lRet := .T., oDlg:End() )
   
   @ nFil, 145 BUTTON aCtl[ 24 ] PROMPT "&Cancelar" OF oDlg ;
            FONT oFont SIZE 53 * nPorWidth, 14 * nPorHeight PIXEL ACTION oDlg:End()

   ACTIVATE DIALOG oDlg VALID ( .T. )  //NOWAIT

   oFont:End()
   oFontBold:End()

Return nil

//----------------------------------------------------------------------------//


 



Muchas gracias Cristobal