Disenador Visual de Formularios

El Disenador de Formularios es un editor de formularios WYSIWYG (What You See Is What You Get) inspirado en Borland C++Builder. Disena formularios visualmente, coloca controles desde la paleta de componentes, configura propiedades en el Inspector de Objetos y observa como el codigo se genera automaticamente.

Diseno bidireccional

Los cambios en el disenador actualizan instantaneamente el codigo, y los cambios en el codigo actualizan instantaneamente el disenador. Tus implementaciones de METHOD siempre se preservan durante la regeneracion de codigo.

Caracteristicas del Disenador

Seleccion de Controles

Seleccion individual

Haz clic en cualquier control del formulario para seleccionarlo. Aparece un borde azul con 8 asas de redimension:

Seleccion multiple

Mantien Shift y haz clic para agregar/eliminar controles de la seleccion, o haz clic y arrastra para crear un rectangulo de seleccion elastica. Todos los controles seleccionados muestran asas simultaneamente.

Copiar y Pegar Controles

HarbourBuilder soporta operaciones completas de portapapeles para controles:

AtajoAccion
Ctrl+C / Cmd+CCopiar controles seleccionados al portapapeles
Ctrl+V / Cmd+VPegar controles con desplazamiento de +16px
Ctrl+X / Cmd+XCortar controles seleccionados (copiar + eliminar)
DeleteEliminar controles seleccionados

Al pegar, los controles se desplazan automaticamente 16 pixeles para evitar superposicion con el original.

El menu Formato proporciona 8 modos de alineacion y distribucion:

ComandoDescripcion
Alinear a la izquierdaAlinea todos los controles seleccionados al borde izquierdo del control mas a la izquierda
Alinear a la derechaAlinea al borde derecho del control mas a la derecha
Alinear arribaAlinea al borde superior del control mas arriba
Alinear abajoAlinea al borde inferior del control mas abajo
Centrar horizontalmenteCentra todos los controles en el eje horizontal
Centrar verticalmenteCentra todos los controles en el eje vertical
Distribuir espaciado horizontalDistribuye controles con espaciado horizontal igual
Distribuir espaciado verticalDistribuye controles con espaciado vertical igual

Generacion de Codigo en Tiempo Real

Cada accion en el disenador genera codigo xBase correspondiente. Por ejemplo, colocar un boton genera:

@ 120, 140 BUTTON oBtn PROMPT "Button1" ;
   OF oForm SIZE 120, 32

Cambiar propiedades en el Inspector de Objetos actualiza el codigo inmediatamente. La sincronizacion bidireccional asegura que tu diseno visual y tu codigo esten siempre en armonia.

Modo Diseno vs Modo Ejecucion

Los formularios tienen una propiedad FDesignMode que controla el comportamiento:

ModoComportamiento
Modo Diseno (FDesignMode = .T.)Los controles se pueden seleccionar, mover, redimensionar. Se muestra la cuadricula. Generacion de codigo activa.
Modo Ejecucion (FDesignMode = .F.)El formulario se ejecuta normalmente. Los controles responden a la interaccion del usuario. Sin generacion de codigo.

Propiedades del Formulario en el Disenador

PropiedadTipoDescripcion
nWidth, nHeightNumericoDimensiones del formulario en pixeles
nLeft, nTopNumericoPosicion en pantalla
cTitleCadenaTexto de la barra de titulo de la ventana
nBorderStyleNumerico0=bsSizeable, 1=bsSingle, 2=bsNone, 3=bsToolWindow
nPositionNumerico0=poDesigned, 1=poCenter, 2=poCenterScreen
nWindowStateNumerico0=wsNormal, 1=wsMinimized, 2=wsMaximized
nFormStyleNumerico0=fsNormal, 1=fsStayOnTop
lSizableLogicoPermitir al usuario redimensionar la ventana
lCenterLogicoCentrar formulario en pantalla al mostrar

Ejemplos de Codigo

Sintaxis Simple DEFINE FORM

#include "hbbuilder.ch"

function Main()
   local oForm

   DEFINE FORM oForm TITLE "Hola Mundo" ;
      SIZE 400, 300 FONT "Segoe UI", 10

   ACTIVATE FORM oForm CENTERED
return nil

Enfoque Basado en Clases (Generado por el IDE)

CLASS TForm1 FROM TForm

   METHOD CreateForm()

ENDCLASS

METHOD CreateForm() CLASS TForm1
   ::cTitle  := "Formulario1"
   ::nLeft   := 100
   ::nTop    := 170
   ::nWidth  := 400
   ::nHeight := 300
return nil
Ambos enfoques funcionan

Puedes usar cualquiera de los dos enfoques. La sintaxis DEFINE FORM es mas simple para aplicaciones pequenas, mientras que el enfoque basado en clases es mejor para aplicaciones complejas con multiples formularios.

Consejos para un Diseno Eficiente de Formularios

  1. Usa el Inspector de Objetos — Configura propiedades visualmente en lugar de escribir codigo
  2. Doble clic en controles — Genera automaticamente manejadores de eventos (p. ej., OnClick para botones)
  3. Seleccion multiple para alineacion — Selecciona multiples controles y luego usa el menu Formato para alinear
  4. Copiar/Pegar para controles similares — Disena un boton, pega y modifica para los demas
  5. Usa ajuste a cuadricula — Mantiene los controles alineados sin posicionamiento manual
  6. Revisa las herramientas bidireccionales — Alterna entre vista de disenador y codigo para ver actualizaciones en tiempo real
  7. Guarda frecuentemente — Ctrl+S guarda tanto los datos de diseno como el codigo

En Esta Página

Primeros pasos Paleta de componentes Funciones del IDE Tutoriales Referencia Plataformas Caracteristicas del Disenador Seleccion de Controles Seleccion individual Seleccion multiple Copiar y Pegar Controles Menu Formato Generacion de Codigo en Tiempo Real Modo Diseno vs Modo Ejecucion Propiedades del Formulario en el Disenador Ejemplos de Codigo Sintaxis Simple DEFINE FORM Enfoque Basado en Clases (Generado por el IDE) Consejos para un Diseno Eficiente de Formularios