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.