IDE Tips y Trucos
por Peter Rorlick [dBVIPS], co-fundador de  Montreal Business Software. Ha desarrollado soluciones xbase desde 1981.
Traducción : Juan Manuel Espinosa G.,  Desarrollador de Software.

AQUÍ están algunos trucos hábiles pero sencillos que pueden disparar su productividad en el ambiente de desarrollo integrado (IDE) de VdB7...
1 Presione Ctrl-Enter en la Ventana de Comandos o Editor de Código cuando el cursor esta sobre un nombre de archivo....esto abre el archivo en el Editor de Código.

2  Tenga un programa Quick-Query (Consulta-Rápida) disponible para crear y devolver objetos query:
 
 
// QQ.PRG  -  regresa un objeto Query.
// Ejemplo de uso:
//   r = qq('Customer','ByName').rowset
//   q = qq('Customer')
param cTableName, cIndexName // 2do parametro es opcional
local q
q = new Query()
q.sql = 'select * from "' + cTableName + '"'
q.active = true
if type('cIndexName') == 'C'
   q.rowset.IndexName = cIndexName
endif
return q
   


3  Para ver o editar rowsets desde la Ventana de Comandos, use este programa pequeño:
 
 
/*
  RView.prg
  Por Peter Rorlick
  Native-classes version for VdB 7.01
  Usage: (from Command Window:)  RView( cTable, [cTag] )
     or:                         RView( oRowset )
     or:                         RView( oQuery )
  Regresa una referencia al objeto Query.
*/
parameter cTable, cTag

local f, oRowset
f = new ViewRwstForm()

if type('cTable') == 'O'
  // Si el primer parametro es un objeto, asumiremos eso
  // es un rowset o un query.
  if 'QUERY' $ cTable.className
    if cTable.active = false
      cTable.active := true
    endif
    oRowset = cTable.rowset
  else   // else we assume cTable is a rowset...
    oRowset = cTable
  endif
else
  // En caso contrario asumimos que es una cadena  que contiene
  // el nombre del DBF.
  f.q = new Query()
  f.q.sql := 'Select * from '+cTable
  f.q.active := true
  oRowset = f.q.rowset
endif

f.text := oRowset.parent.sql

if type('cTag') == 'C'  // si fué especificado el tag...
  oRowset.indexName := cTag
  f.text += ' (indexName = '+cTag+')'
endif

oRowset.first()
f.rowset := oRowset
f.Grid1.datalink := oRowset
f.open()
return oRowset.parent  // Regresa el objecto Query
**********
class ViewRwstForm of FORM
   with (this)
      height = 14
      left = 34
      top = 5
      width = 70
      text = ""
   endwith

   this.GRID1 = new GRID(this)
   with (this.GRID1)
      anchor = 6  // Container
      bgColor = '0X80FFFF'
      cellHeight = .8
   endwith

endclass

   


4  Cuando estan abiertos multiples archivos tabulados en el Editor de Código:
Presione Alt–A, L, <número> para seleccionarto una tabulador específico (no necesitas poner tus dedos fuera del teclado)
Alt–A L 2 cambia entre los dos últimos archivos cargados en el editor.

5  Crea un SetUp.prg, para cargar archivos de procedimientos comunmente usados y configurar algunas hot-keys útiles:
 
 
// SetUp.prg  -  Configura hot-keys útiles, y abre archivos de procedimientos.
on key label Shift+F4 keyb "RView('')"+repl("{Left}",2)
on key label Shift+F5 keyb 'true'
on key label Shift+F6 keyb 'false'
* F8 = today's date in english
on key label f8 keyb cmonth(date())+' '+day(date())+', '+year(date())
* Alt-F6 = _app.
on key label Alt+F6 keyb "_app."
if not "runtime" $ lower( version(0) )
   on key label f3 keyb 'Modify command '
   on key label Shift+f3 keyb 'Modify form .wfm'+repl("{Left}",4)
   * Ctrl-F1 = duplicata la linea actual en el editor
   on key label Ctrl+F1 keyb "{Home}{Shift+DnArrow}{Ctrl+C}{Ctrl+V}{Ctrl+V}{UpArrow}"
   * Ctrl-F2 = else
   on key label Ctrl+F2 keyb "{End}{Enter}{Backspace}{Backspace}else{Enter}  "
   * Ctrl-F3 = endif
   on key label Ctrl+F3 keyb "{End}{Enter}{Backspace}{Backspace}endif{Enter}"
   * Alt-F3 = MsgBox('','')
   on key label Alt+F3 keyb "MsgBox('','',48)" + replicate("{Left}",8)
   * Alt-F5 = .wfm
   on key label Alt+F5 keyb ".wfm"
   * Alt-R = Comentar la linea actual en el Editor, con // .
   on key label Alt-r keyboard "{home}// {dn}{home}"
   * Alt-F9 = Agregar un comentario al final de la linea actual
   on key label Alt+F9 keyb "{End}" + "   // "
   * Shift-F7 = Indentar linea actual (e ir a la siguiente linea)
   on key label Shift+F7 keyb "{Home}" + space(2) + "{Home}" + "{DnArrow}"
   * Shift-F8 = Eliminar identación a la linea actual (e ir a la siguiente linea)
   on key label Shift+F8 keyb "{Home}" + "{Del}" + "{Del}" + "{DnArrow}"
endif
set proc to
set proc to MyControls.cc addi
set proc to xtraBtns.cc addi
set proc to seeker.cc addi
set proc to funclib.prg addi
set proc to date.cc addi
// y así en adelante...
   

Y salvelo a una carpeta "Cosas frecuentemente necesitadas".  En mi maquina decidí llamar esta carpeta \VdB7\CC, y en la etiqueta de Archivos del díalogo del Propiedades del Escritorio , Fije “Search path” (Buscar ruta) para apuntar a ese folder.  Guardo todos mis CC's comunmente usados CC's, PRG's, WFM's, y CFM's así mismo en ese folder; de esta forma, Puedo llamarlos desde cualquier directorio sin preocuparme acerca de la ruta..


6  En su VdB.INI, agregue esto:
 
 
[CommandSettings]
COMMAND=SetUp()
   

De esa forma, SetUp.prg ejecutara cada vez que usted carga VdB7.


7  Ctrl-F9 cambia la visibilidad de treeview en el Editor de Código

8  Quiere encontrar si otro usuario o proceso tiene en abierta una tabla en particular?
En la ventana de Comandos, teclee:
 
 
use MyTable
modi stru
   

Si obtuvo acceso exclusivo a la tabla, el texto en el Diseñador de Tablas estara en negro, de otra forma estará en gris.


9  La mayoría de los comandos y funciones pueden ser abreviados a 4 caracteres, p.e.:
 
 
modi stru
set proc to MyControls.cc addi
   


10  Para experimentar desde la Ventana de Comandos, use este pequeño programa:
 
 
/*
F.prg
Para probar cosas de formas desde la Ventana de Comandos.
Para ejecutar esto, solo teclee F() en la ventana de Comandos...diviertase!
Por Peter Rorlick
*/
local cr, cSQL
cr = chr(13)
cSQL = 'Select * from "' + _dbwinhome + 'Samples\sample.dbf"'
_app.bGridOnOpen = {;;
   this.move(2,9.5,60,5) ;;
   this.anchor:=1 ;;
   oForm=this.parent ;;
   oForm.q.active:=true ;;
   oForm.rowset:=oForm.q.rowset ;;
   this.datalink:=oForm.rowset }
set typeahead TO 500
keyb 'f = new form()' + cr +;
   'f.onOpen = {; this.move(9,3,50,15) }' + cr +;
   'f.ed = new editor(f)' + cr +;
   'f.ed.top := 5' + cr +;
   'f.ef = new entryfield(f)' + cr +;
   'f.pb = new pushbutton(f)' + cr +;
   'f.pb.left := 20' + cr +;
   'f.tx = new text(f)' + cr +;
   'f.tx.top := 3' + cr +;
   'f.tx.text := "Hello"' + cr +;
   'f.q = new query()' + cr +;
   'f.q.sql := [' + cSQL + ']' + cr +;
   'f.g = new grid(f)' + cr +;
   'f.g.onOpen := _app.bGridOnOpen' + cr +;
   '*inspect(f)' + cr +;
  'f.open()' + cr
   


11  Para cualquier secuencia de comandos (aun para un comando simple) que frecuentemente teclee en la Ventana de Comandos, cree un pequeño PRG.  Ejemplo:
 
 
// E.PRG  -  abre algunos archivos editados frecuentemente en el Editor de Código
// Solo teclee E() en la Ventana de Comandos para ejecutar esto.
modify command C:\vdb7\cc\Base.cc
modify command C:\vdb7\cc\MyControls.cc
modify command Main.wfm
modify command C:\vdb7\cc\functionLibrary.prg
   


12  Aqui esta otro pequeño PRG a la mano:
 
 
// i.prg
// Solo teclee I() en la Vetnana de Comandos para ejecutarlo y editar VDB.INI
private c
c = 'modify command "' + _dbwinhome + 'bin\vdb.ini"'
&c
   


13  Alt–N, 2 siempre traerá la Ventana de Comandos al frente.

14  Use Ctrl-Tab or Ctrl-F6 para dar vuelta y enfocar las ventanas que actualmente tiene abiertas.

15  En el Diseñador de Formularios:
  F12 abre/cierra el Editor de Código
  F11 abre/cierra el Inspector

16  Trabaje a la resolución más alta posible que sus ojos puedan resistir without lastimarse.
  1024 x 768 lo mínimo.
  1152 x 864 is mi preferencia.  Tengo un monitor de 21".
  1280 x 1024 o más alto es para masoquistas a menos que usted tenga un monitor muy inmenso.

Entonces coloque el esquema en el IDE a su gusto, en un esfuerzo para minimizar solapando las herramientas de las ventanas y paletas.  Las menos cosas que pueda encima, podrá trabajar más rápidamente.  En particular, usted podría colocar el esquema de las paletas en el Diseñador de la Forma algo así:

Una vez que este contento con el esquema de posición, y con las configuraciones de propiedad del Escritorio, Navegador (en Español llamado Selector), y Editor de Código, debe salir de Visual dBASE y hacer una copia de respaldo del VdB.INI.  De esa forma, su alguna cosa se pierde (o si debe reinstalar VdB), puede restaurar la copia respaldada de su VdB.INI.


17En el Diseñador de Formularios, haga clic-derecho sobre la Paleta de Componentes, eliga Customize Tool Windows (Personalizar Herramientas de las Ventanas), y sobre la etiqueta de Paletas de Componentes , seleccione “Image with text to the right” (Imagen con texto a la derecha).

18  Use la ventana de Comandos tanto como sea posible, en lugar del Selector y los menus.  Es mucho mas rápido, aun cuando usted no es un macanógrafo rápido.

19  Copie y pegue entre la Ventana de Comandos y el Editor de Código siempre que convenga hacerlo así.

20  Use Ctrl-W para salvar-y-cerrar- en cualquiera de las herramientas de diseño.

21  Presione F2 para salvar-y-ejecutar desde el Diseñador de Formularios o el Editor de Código.
22  En la Ventana de Comandos o Editor de Código, haga doble-clic sobre una palabra (un comando , nombre de clase, o funcion) entonces presione F1 para obtener ayuda sobre ese topico.

En el InspectorIn , haga clic sobre una propiedad específica, evento o metodo, después presione F1 para obtener ayuda sobre ese topico.


23  Para encontrar cuales son las propiedades, eventos y metodos de una clase en particular, teclee esto en la Ventana de Comandos:
 
 
help class <className>
   

O:
 
 
x = new <className()
inspect(x)
   


24  Si quiere encontrar una clase especifica, metodo, función, o procedimiento muy rapidamente en el Editor de Código: Enfoque el panel del treeview (haciendo clic sobre este, o presionando Ctrl-F9 dos veces), entonces teclee las dos primeras letras del nombre de la clase/metodo/función.  Funciona por busqueda incremental si su usted teclea rapidamente.  Si teclea lentamente, encontrará la siguiente clase/metodo/función que empieze con la letra que usted tecleó.  Presione Tab para regresar a enfocar el panel de edición.

25  En el Editor de Código, resalte un bloque de código, entonces presione Tab o Shift-Tab para identar o de-identar el bloque.

Traducción por : Juan Manuel Espinosa, Desarrollador de Software en México, D.F.
Administrador de la Comunidad de dBASE en Español
puede contactarlo por e-mail en: juan_espinosa_mx ARROBA yahoo PUNTO com ó db2kSistemas ARROBA netscape PUNTO net.