Es una buena pregunta...
A mi me gusta mucho utilizar diálogos desde código, porque vengo de la época del Clipper.
Mi conclusión fue:
Escribir los Says de 15 en 15 pixels, comenzando desde 7
Escribir los Gets de 15 en 15 pixels, comenzando desde 5
Los says ponerlos alineados a la derecha en 60 pixels comenzando en la fila 5
Los gets ponerlos a partir de la fila 70
Utilizar font TAHOMA SIZE 0,-11
Crear una funcion para que me de las coordenadas donde poner los botones Grabar y Cancelar (con un recuadro)
Claro que siempre cuando el formulario no es un estandar de renglon bajo renglon, hay que tocarlo...
- Code: Select all Expand view RUN
DEFINE FONT oFont NAME "TAHOMA" SIZE 0,-11.5
DEFINE DIALOG oForm TITLE IF(lAlta,"Alta","Modificacion") + " de Legajos" FROM 05,10 TO 20,90 OF oWnd1 FONT oFont
acor := AcepCanc(oForm) // Me llena un arreglo con las coordenadas y me hace un box que los encierra.
@ 07, 05 SAY "D.N.I.:" OF oForm PIXEL SIZE 60,12 RIGHT
@ 22, 05 SAY "Nombre:" OF oForm PIXEL SIZE 60,12 RIGHT
@ 37, 05 SAY "Fecha Ingr.:" OF oForm PIXEL SIZE 60,12 RIGHT
@ 52, 05 SAY "Fecha Egr.:" OF oForm PIXEL SIZE 60,12 RIGHT
@ 67, 05 SAY "Caja:" OF oForm PIXEL SIZE 60,12 RIGHT
@ 82, 05 SAY "Jubilado?:" OF oForm PIXEL SIZE 60,12 RIGHT
@ 05, 70 GET oGet[1] VAR base:dni PICTURE "99999999" OF oForm PIXEL RIGHT
@ 20, 70 GET oGet[2] VAR base:nombre OF oForm PIXEL VALID(base:nombre <> SPACE(30))
@ 35, 70 GET oGet[3] VAR base:fecing OF oForm PIXEL
@ 50, 70 GET oGet[4] VAR base:fecegr OF oForm PIXEL
@ 65, 70 GET oGet[5] VAR base:caja OF oForm PIXEL
@ 80, 70 GET oGet[6] VAR base:jubila OF oForm PIXEL PICTURE "@!" SIZE 15,12 VALID(base:jubila$"SN")
@ acor[1],acor[2] BUTTON oBot[1] PROMPT "&Grabar" OF oForm SIZE 30,10 ;
ACTION ((lRta := .t.), oForm:End() ) PIXEL
@ acor[3],acor[4] BUTTON oBot[2] PROMPT "&Cancelar" OF oForm SIZE 30,10 ;
ACTION ((lRta := .f.), oForm:End() ) PIXEL CANCEL
ACTIVATE DIALOG oForm CENTER
Es cuestion de gustos y comodidades.