Está en la página 1de 12

Esto viene a cuento por el viejo probervio:

-Si tu has sufrido por tu ignorancia, ense�a a los demas, que ellos no sufran lo
que tu, y asi se ira reduciendo el sufrimiento en el mundo (del T.A.O.)

Es una recopilacion de las preguntas y respuestas hechas a la lista "fivewin-la"


durante los cuatro meses primeros de sufridor de fivewin

No he tratado de hacer nada bonito, sino util , que ocupe poco por eso va en texto
puro

Es caotica, anarquica,desordenada, pero si solo a uno de vosotros le evita el


sufrimiento, doy por bien empleado el tiempo que he empleado en recopilarla

si alguien la mejora, encantado, si la pasa a otros, tambien, solo pido que no


borreis la parte final del texto �que menos, no ?????

y empezando, que es gerundio .....

1.-Cuando queramos hacer que los mensajes de un boton de un dialogo aparezcan en


la barra de mensajes de la ventana principal ..

esta es OWND ;poner en el dialogo las instrucciones

define dialog odlg..... of ownd

acti dialog .... CENTERED

2.- como filtrar un listbox de una base de datos, para aquellos records que
cumplan una determinada condicion .

oLBX:SetFilter("CAMPO_o_EXPRESION","Valor_TOPE_del_FILTRO","Valor_ULTIMO_del_FILTR
O")
oLBX:GoTop()

3.-No se cierra las DLL cuando hay una terminacion anormal del Programa.
Para eso usa:

WPS.exe

Es un utility para cerrar las DLL que quedan abiertas.


o coloca en tu programa la instruccion CLIPPER

Exit Procedure Final // esta es de clipper, que lo sepas


//Set Resources // Libera todos los Recursos Cargados
FreeResources() // Tambi�n pero con Funci�n (es lo mismo pero m�s bonito)
freelibrary('miBWCC.DLL')
//oFont:End()
Return

4.-Salen cosas raras al darle al boton dcho en un get...Con respecto al menu popup
si puedes modificarlo, pero tienes que retocar la clase TGet.
Debes entonces modificar la Clase TGET.
Entre las lineas 954 y 1041 (aproximadamente) del TGET.prg, esta el metodo
ButtonDown.
Creo que puede funcionar poniendo un asterisco a la linea 1039 (o a la linea que
dice:
ACTIVATE POPUP oMenu AT nRow - 60, nCol OF Self

5.-Incrustar un bmp en un dialogo con el WS

Ya tienes los BMP , que "construyen" el boton de la lupa ?


Lo que tienes que hacer es abrir el Workshop 2 veces , uno con tu DLL y otro
con mi DLL. Copia los botones de mi dll , y pegalos en tu dll, para cambiar el bmp
del boton solo debes cambiar su ID.

- Recuerda hacer SET RESOURCES TO "MIDLL.DLL"


y hBorland:=LoadLibrary("BWCC.DLL"), al principio del MAIN().

Si tu Boton tiene el ID 445, entonces lo mas seguro es que dentro de tu DLL haya
al menos 2 BMP que terminan en 445 (esos son los BMP que construyen al boton y que
le dan las apariencias de: Boton normal, Boton pulsado y Boton con Foco). Los BMP
tendran (para que trabajen como Botones Borland), ser: 1445 (bmp del boton
normal), 3445 (bmp del boton pulsado), y 5445 (bmp del boton con foco).
Si quieres cambiar el tama�o del boton , deberas cambiarle el tama�o a estos 3
Bmp's. (yo uso mucho los botones Borland pero solo uso los que empiezan con 1 y
con 3, o sea que cuando mis botones tienen el foco, se ven con Bmp que empieza con
1 y no con 5). O sea: No es obligatorio usar el bmp que empieza con 5.

6.-Error al grabar Dll.

No me deja grabar la .dll me dice

Unexpected file format

Eso lo puedes arreglar Grabando tus recursos encima de otra DLL existente (claro,
sacas una copia de una dll de otro programa), y despues haces un rename a esa DLL
y la sigues usando con WS.

7.- Tecnica de la lupita

Objetivo:
1) Si el usuario ingresa un codigo valido, entonces el foco no deberia detenerse
en el boton de la lupita.
2) Si el usuario no ingresa ningun codigo (contenido dentro de la tabla DBF),
entonces el boton de la lupita si deberia adquirir el foco.
3) Si el usuario ingresa un codigo errado, (o sea: que no est� contenido dentro de
la DBF), entonces el boton de la lupita SI deberia ganar el foco.
4) El boton de la lupita, deberia activar otro dialogo en donde se despliega un
browse de ayuda con los datos de la DBF que contiene los codigos en cuestion.

8.-Hacer que aparezca el icono en el .exe; ver el icono desde el explorer

Tienes que grabar un icono como file .RC, e "incrustarlo" en tu exe luego que
Blinker te lo produce.
El incrustador del icono dentro del exe es RC.EXE (y BRC.EXE si usas el del
workshop).
El icono .RC lo generas en el workshop.
Si incrustas todos tus recursos completos en el exe, (si haces esto es porque no
quieres usar DLL en tiempo de ejecucion), entonces el icono de el exe sera el
primer icono del grupo ICON dentro de los recursos
9.- un problema de VmPreAlloc.
Tengo la solucion para tu amigo, dile que compile el objeto que te anexo
junto a sus demas obj y problema resuelto.
el obj es ALLOC.obj.....

10.-Manejo de fonts
Tienes que cambiar el Font en tu programa.

LOCAL BACEPTA,OBMP,OFONT,OSAY2,OFONT2
PRIVATE OTIMER,ODLG,OSAY
DEFINE FONT OFONT NAME "MS SANS SERIF" SIZE 0,-10
DEFINE FONT OFONT2 NAME "ARIAL" SIZE 0,-20 BOLD
DEFINE DIALOG ODLG TITLE 'Transferencia de NOTAS DE DESPACHO .....' RESOURCE
'DLG_001' FONT OFONT
REDEFINE BITMAP OBMP ID 102 OF ODLG RESOURCE 'DMICH'
OBMP:CENTER()
REDEFINE SAY OSAY ID 120 OF ODLG COLOR CLR_BLUE FONT OFONT2
REDEFINE BUTTON BINFO ID 442 OF ODLG ACTION INFORMA(M->AUTOR,'Desarrollo de
SoftWare')
REDEFINE BUTTON BACEPTA ID 400 OF ODLG ACTION (ODLG:END())
OSAY:SETTEXT('Esperando .............')
ACTIVATE DIALOG ODLG CENTER ON INIT DEFINIT(ODLG)
RELEASE TIMER OTIMER
RETURN NIL

11.- fallo en la pila de evaluaci�n:


SOLUCIONADO

> �Cuales fueron los valores de Heapsize y Stacksize?


> (Los Anteriores y los Nuevos) ...................
>
stacksize de antes.- 9500
heapsize de antes.- 4096

stacksize de ahora.- 9500


heapsize de ahora.- 8192

Saludos.

12.-Manejo del database


El problema estaba en que hacia un dbSelectArea("CLIE") despues de hacer un
DATABASE oDclien y segun parece hay que hacerlo ANTES, yo pense que una vez
abiertas las tablas se podia crear el objeto tabla y despues seleccionar la
tabla, pero parece ser que no es asi. � Curioso verdad ?

13.- ahora no puedo cargar mas de una DLL, no me reconoce los recursos de la
segunda que cargo.

La primera vez que llamas a SET RESOURCES TO ... estableces las DLLs
que vas a usar para los recursos. A partir de ah�, has de volver a
llamar a SET RESOURCES TO para seleccionar la que vas a usar en cada
momento:

SET RESOURCES TO "system\comun.dll", "system\part.dll"


ahora, si vas a acceder a recursos que est�n en part.dll:

SET RESOURCES TO "system\part.dll"

Por �ltimo, si llamas a SET RESOURCES TO sin m�s par�metros


entonces descargas todas las DLLs de la memoria.

14.-Problemas con las dll sin el WS abierto


> Solucion sencilla.
>
> Cuando vayas a guardar la DLL te metes en la Opcion:
>
> Save file as
>
> Y la guardas sobre una dll (cualquiera) que ya exista.
> (Por supuesto, trabajas sobre una copia).

Eso ya lo he probado y me dice lo mismo; unexpectec....


La grababa sobre la screen.dll

Bueno P. d.; he copiado una de las que funcionan bien!!!FOS.DLL La he cambiado de


nombre, y le he dicho save as , y BIEN

FUNCIONA ..

y LE CAMBIO EL SET RESOURCES TO "FOS.DLL"

Y YA NO HACE FALTA CARGAR EL WS...

15.-Spinners
Este es un SPINNER:

Es un Get con Vertical Scroll Bar, y en el REDEFINE pones: SPINNER MIN x MAX y

Un Spinner es una barra de scroll vertical asociada a un �nico get y sirve para
incrementar o disminuir el valor de la variable asignada al get. As�, en un get
con Spinner puedes introducir el dato manualmente o pulsar su scroll para
modificarlo. Dado que el spinner suma o resta a la variable del get, s�lo tiene
sentido en gets num�ricos o de fecha.

16.-Problemas con las � y las � (mayusc. y min )


Trato un fichero .dbf que fue creado desde Dbase Iv dos en un programa fivewin y
claro las � so se
visualizan como "�" por lo que aplico OemToAnsi y arreglado. Pero eun
d�alogo de buscar por nombre quiero que el operador teclee la � y la busque.

El caso es que despu�s de probar varias cosas la �nica forma que hago que me
funcione es la siguiente, pero no entiendo PORQUE FUNCIONA!

1: Remplazo en el fichero original los campos con Oem a Ansi


Do while .not. eof()
letras->letra := OemToAnsi(letras->letra)
letras->apelli := OemToAnsi(letras->apelli)
letras->nombre := OemToAnsi(letras->nombre)
letras->apenom := OemToAnsi(letras->apenom)
skip
enddo

2.- Creo el indice utilizando AnsiToOem


BuildIndex( oMeter, oText, oDlg, @lEnd, "AnsiToOem(Letras->Apenom)",
"AAPENOM" ) },;
"Indexando base de Contribuyentes sin c�digos", "Espere un
momento" )

3.- El listBox le tengo que aplicar: AnsiToOem


@ 1, 1 LISTBOX oLbx FIELDS
AnsiToOem(Letras->letra),AnsiToOem(Letras->apenom), STR((Letras->nivel),2);

4.- Al get no le hago ninguna conversi�n:


if MsgGet( "BUSCAR", "Apellidos..:", @cApenom,;
"lupa.bmp" )
cClave := Upper(cApenom)

Seguro que es m�s facil que todo esto , pero funciona !!!

17.-tenia una funcion peque�a que mostraba en pantalla un texto y lo desplaza de


izq a der y de
arriba a abajo, esto lo utilizo para vestir al programa nada m�s pero
tengo la inquietud se esto se puede hacer y como,

En la pagina de Ramon Avenda�o tienes la Clase DSay, Que hace exactamente lo


que tu quieres.
http://personales.mundivia.es/rar/fivewin.htm

>
18.-En relacion con el tema de los recursos:
1) La SCREENS.DLL que viene con FW 2.0 aparenta tener algun problema ya
que nunca le pude adicionar recursos. La unica solucion para empezar con
DLL vacia fue tomar una 'prestada' que funcionaba y borrarle todos los
recursos.
2) La otra forma de utilizar recursos, incrustandolos en el .EXE, se
puede concretar por el metodo que ense�a el BUILD.BAT o bien, segun
descubri en el BLINKER 5.1 agregar en el script de enlace el comando RC
RECURSO.RES
tienes razon, a mi incluso me envio An Lin una screen.dll
vacia y no va, no se puede grabar nada en ella

Creo que el motivo por el que va cuando le a�ades recursos a una llena es
porque tienen algo mas, vacie una buena, y al abrirla con set resources
me abria ella sola la ct3dv2 ( o algo asi)
metiendo los recursos por medio de un rc y diciendole grabar como fos.dll
(llenita) me decia que ya existia, me la sobreescribia con mis recursos y
voil�!! solo quedan mis recursos y lo otro (misterio)
19.-Todos tenemos el prg calendar que viene en samples
Lo pones solo y funciona, lo llamo desde mi rutina y nada, ni con
parametros ni sin parametros,

Compilalo y llamalo desde tu programa con el Winexec("calendar")


haber si asi te funciona. y funciona !!!1

20.-en lugar de Run Tienes que usar la funci�n de FiveWin WaitRun()


Pero tiene algunas cosas raras ...
si quieres que te aparezca el posible mensaje de la ventana y que esta no se
cierre
lo usas " a pelo "
WaitRun('miprog')
Pero si quuieres que solo te la ejecute y despues se salga, facil , (cuando se
sabe)
WaitRun('command.com /c miprog')

21.- Variables estaticas Esto debido a que un amigo de Brasil me preguntaba sobre
por que de sus GPF en una gran aplicacion El problema estaba en las STATIC. El
amigo utilizaba muchas variables STATIC por PRG, cosa que FW soporta en menor
cantidad respecto al MSDOS. Igualmente JAMAS seria necesario escribir mas de 1
variable por modulo PRG, veamos el ejemplo:

No es conveniente hacer esto !!!!!!!!


STATIC aVar
STATIC bVar
STATIC cVar
STATIC dVar

Se debe hacer esto !!!!!!!


STATIC aArrayVars:= {Nil,Nil,Nil,Nil}
#xtranslate aVar => aArrayVars\[1\]
#xtranslate bVar => aArrayVars\[2\]
#xtranslate cVar => aArrayVars\[3\]
#xtranslate dVar => aArrayVars\[4\]

En realidad con esto definimos 1 variable STATIC y consumimos menos los recursos
del sistema, y esta solucion EVITA modificar el codigo del PRG, excepto la
definicion inicial, y lo mas importante EVITA GPF !!! Algunos diran que es lo
mismo poner #define, PERO NO ES LO MISMO !!!!!!!!, dado que estos defines no se
resuelven cuando se incorporan en COMANDOS, cosa que si resuelve #xtranslate. :-)

Ahora respecto a las PUBLIC. Tambien es conveniente usar 1 (UNA) variable en


todo el sistema.......Siiiiiiiiiiii seamos bien amarretes y avaros para el uso de
estas tambien, y evitaremos dolores de cabeza y conflictos !!!!! Supognamos que
tenemos las siguientes variables:

PUBLIC cSistema:= "Sistema Pepe"


PUBLIC cPath:= "\Datos"
PUBLIC cCopyright:= "Topo Gigio Sistemas"

....... NO NO Y NO !!!!! NO DEBEBMOS HACER ESTO !!!!!

Deberiamos hacer esto otro:


Function Main()
PUBLIC oApp:= TApplication()
.......

return nil

CLASS TApplication
DATA cSistema INIT "Sistema Pepe"
DATA cPath INIT "\Datos"
DATA cCopyright INIT "Topo Gigio Sistemas"
........... y asi todas las que quisieramos !!!!! :-)
ENDCLASS

........... y como es un objeto publico podremos modificar sus variables de


instancia cuando se nos de la regalada gana !!!!! y tenemos 1 sola public, osea
oApp en forma de objeto y accederiamos asi
Alert( oApp:cCopyright ) !!!!!!!!!! es bien facil !!!!!!!!!!!!!!!!!

Llega el turno de las PRIVATE, es conveniente NO USARLAS usemos siempre las


LOCAL y pasemolas por referencia. Tambien podr�amos usar una LOCAL objeto TARRAY y
esta nos sirve para pasar argumentos cientos de varialbes en 1 sola. OLVIDEMONOS
qure existen las PRIVATE !!!!!

CONCLUSION: Si optimizamos el codigo de una aplicacion lograremos:

1) Mayor rapidez
2) Mayores disponibilidad de resursos
3) Menores errores GPF (seran casi imposibles de visualizar)
4) Un codigo mas legible

22.- Una forma muy buena de armar todos los controles es ponerle la clausula
UPDATE
De esta forma efectuas los cambios de las variables y solo tenes que hacer
oDlg:update()
y listo se refresca todo el dialogo.

23.- para que no se pueda editar el get debes poner la condicion WHEN .F.

24.-como poner color a los static text?

> Estimados amigos como se hace para poner color a los static text generados
> desde el Work Shop. �Se puede hacer desde c�digo?
> Actualmente para los REDEFINE SAY utilizo
> REDEFINE SAY oMunicipi VAR cCMunici ID 122 OF Odlg UPDATE;
> COLOR RGB(000,000,255),RGB(255,255,255)
>
> Pero si genero un texto de cabecera al campo desde el Work Shop no se
> cambiarle el color. �Es posible?
Lo haces de igual manera al ejemplo que mandaste, solo asegurate de que el
texto no tenga ID -1 sino un ID valido.

25.-El ENTER se comporta como en Clipper-DOS.

Si a ti no se te comporta asi, entonces entra al WS, y en los dialogos, le


pones a cada boton (en sus propiedades), PUSH BUTTON en vez de DEFAULT PUSH
BUTTON.

26.-checkbox.
Si quieres que una variable logica cambie de estado no uses:
if(vclival=.t.,vclival:=.f.,vclival:=.t) es mas facil y mas limpio usar:
vclival := !vclival, de esta manera te olvidas de las preguntas.... ;)
2) El valor de vclival cambia dependiendo del estado de checkbox..... no veo
para que lo cambias vos en el programa.
PS: Tienes un ejemplo MUY SENCILLO EN SAMPLES\TESTCHCK.PRG

el error parece estar en que la variable vClival


se cambia sola, y si tu en el programa la cambias, pues
vuelve a lo mismo.

intentalo as�:

ON CLICK (CAMBIAR('CLIENTES','CLI_VAL',IF(VCLIVAL,'SI','NO') ) )

27.- > Asunto: [fivewin-la] alguien sabe de algun gestor tipo dbu para windows
> que use cdx??
>Prometheus de Daniel Andrade (Free)
http://www.dbwide.freeservers.com/

28.-Alineacion en los gets numericos


En la pagina de Rene Flores (Cibertec) viene una seccion de tips para
fivewin . Me he bajado varios, os la recomiendo a todos
Segun AL, la solucion era : ademas de decirle alineacion derecha, el
declarar el get como multilinea
No tiene logica pero funciona. antes era horroroso
Editando el numero sale bien, con la coma y demas

29.-Aqui van direcciones donde podes conseguir manuales e informacion en


general sobre FiveWin.
http://Olivares2000.WebHostMe.com/ Grupo Olivares 2000
http://here.as/FiveWin/ Patrick Mast's FiveWin Page
http://start.at/edf "E.D.F" de Trucos
http://members.tripod.cl/fivewin Fivewinweros de chile
http://personales.mundivia.es/rar/
http://teleline.terra.es/personal/ravendano/SOBREFW.HTM Sobre FiveWin
http://users.fast.co.za/~georgem/ George's Little Web Page
http://www.aglsl.com/cincowin/ Cinco Win, la casa del
programador en Fivewin
http://www.aulaware.com/ FiveWin
http://www.ciber-tec.com/ Cibernética y
Tecnología, S.A. de C.V Home Page
http://www.come.to/manuales
http://www.eclipse.com.mx/web/fivewin/ Directory of /web/fivewin/
http://www.fivetech.com/ Fivetech: Xbase technology
http://www.grafxsoft.com/ GrafX Software CA MicroSoft
Imprise Development Tools
http://www.htcsoft.freeservers.com/ htcsoft
http://www.olsonsoft.co.nz/ The Olson Software Web Site
http://ourworld.compuserve.com/homepages/jbott James Bott -
Intellitech - Computer Consulting for Small Business
http://www.argcon.net/manual5w/ hay un manual recien subido

En mi sitio tambien podes bajar un generador de aplicaciones, WiseCoder.


(Esta en desarrollo)
Mi sitio: http://www.citynet.com.ar/verger/wisecoder.htm

30.-Problemas con impresora


cuando el operador pide un listado, generalmente le pongo
printersetup() para que pueda seleccionar impresora, papel o lo que fuese,
Pienso que el Boton cancelar "No es para Cancelar" la impresion, sino para
Cancelar la accion de haber tomado otro tipo de papel, u otra impresora, en
el dialogo de Printersetup().
Yo lo hago asi:
Un dialogo de captura de datos (el rango de fechas), con 3 botones:
Un boton OK (que dispara la impresion)
Otro boton Setup , que debera disparar el Printersetup() (pero sin
imprimir).
Y otro Boton de Cancelar (este si cancela el listado).
Si el usuario quiere cambiar el tama�o del papel, por ejemplo; entonces
1ero. pulsa Setup. Luego de cambiar, el programa le vuelva a presentar el
dialogo anterior, y pulsa OK para imprimir.

31.-Mas sobre estaticas


S� que funciona: ya s� que no se pueden colocar sentencias ejecutables
fuera de las funciones o procedimientos. La soluci�n para una variable est�tica
externa es la siguiente:

static aArrayVars

FUNCTION Main()

DEFAULT aArrayVars := Array( 30 )

RETURN NIL

32.-No se ven los dialogos creados en WS.


Yo tampoco podia leer el dialogo 12 (el 9 si lo vi bien), y lo que hice fue
exportarlo
a DIAL12.RC (resource/save resource as/) y lo edite con un editor de texto
y me di
cuenta que traia un control VBX, lo quite, y luego lo importe (FILE/ADD TO
PROYECT)
pero antes, cambiale el nombre del recurso (DIALOG_12 en el .RC) para que no
se repita en tu DLL.

33.-PROCESOR TABLE OVERFLOW......

> Se me bloquea en un modulo de indexado que sacado de la aplicacion y hecho


> aparte funciona perfectamente , indexando hasta el final Ya le he puesto
> sysrefresh() por todos los sitios y nada ....

Estas compilando con 5.2? Si asi es trata de linkear con ALLOC.obj.....

> Al compilar uno de los prg me da memory overboked, pero lo compilo con lh
> clipper ... y a pesar de que da el error no se sale, sigue hasta el
> final ---

Algunos colegas recomendaron no utilizar LH clipper, la razon es que anula


el mensaje pero este continua!! :((((

Te has tropezado con la pesadilla de la mayoria: PROCESOR TABLE


OVERFLOW......
Solucion: No la hay.
La unica solucion es quitar los archivos de cabecera *.ch que no vayas a
usar.
Como por ejemplo: De fivewin.ch quita:
OBDC.ch, DDE.ch, Tree.ch (si no usas trees), etc.
Y pon: el #INCLUDE FIVEWIN.ch de ultimo en cada prg...................

> he probado a recompilar con 5.3 y horror!!! los preprocesor table overflow
> que habia logado quitar con un mejor manejo de las variables de memoria,
> vuelven en todos los modulos, gestiona peor el preprocesado Hay alguna
forma
> de aumentarle la memoria de preprocesado???

En 5.2 hay mucho mas probabilidad de que esto no ocurra.


Esa es una de las razones por las cuales sigo usando 5.2e.

Tenes que eliminar Chs que no utilizas, como colocando estas definiciones
antes de FIVEWIN.CH, este los llama y esta es la forma de anular las
llamadas.

Otra cosita:
Te recomiendo que armes prgs donde requieran llamadas especificas juntos.
Por ejemplo:
impre.prg // defini este funciones para imprimir
de esta forma solo aca nesesitas por ejemplo REPORT.CH, y en los otros no!!

34.- El problema tambien me ocurria..


el problema no se si lo solucione pero los dialogos se crean...

cuando utilizaba por ejemplo el

SET RESOURCE TO "ELARCHIVO.DLL"


siempre me daba el problema, pero cuando lo hice de esta forma

SET RESOURCE TO "C:\PROGRAMAS\...\ELARCHIVO.DLL"

comenzo a funcionar, raro, si le indicaba toda la ruta funciona y si


no se la doy surge el problema..

35.-DLL`s Al cambiar de maquina, tenes que copiar el bwcc.dll al directorio


\windowsDir\system, no hace falta que lo tengas en otro lugar.
Tienes que tener tambien en ese dir. ctl3d.dll, el que viene con FW.
Si tenes problemas, puede ser que alguno este con problemas.

SET RESOURCES TO
loadlibrary("bwcc.dll")
SET RESOURCES TO "MENU.DLL"

36.-Manejo de fuentes >


> @ 7, 13 CHECKBOX Pagado PROMPT "Pagar &Importe" ;
> OF oDlg

prueba esto:

Pagado:SetFont(oWnd:oFont)

o incluso esto otro:

Pagado:SetFont(oDlg:oFont)

Por cierto, el define del oDlg lo referenciastes al oWnd? Es decir lo


hiciste parecido a esto:

DEFINE DIALOG oDlg OF oWnd

En caso contrario creo que el oDlg no toma como oFont el del oWnd.

37.-filtros dentro de tu indices (scopes)


puedes usar la clausula Select del comando @...ListBox, el cual te
permite hacer filtros
dentro de tu indices (scopes). Es algo como :

@ 1,1 ListBox oLbx ;


FIELDS Clientes->Nombre , Clientes->Deuda ;
HEADERS "Nombre", "Deuda" ;
FIELDSIZES 100,400 ;
SELECT Nombre FOR "America" TO "Pedro"
OF oDlg

38.- Y una de las mejores...


No funcionaba fivewin 2.0; decia que faltaba una funcion
voy a fivewin.lnk cambio el search por lib y !funciona !!!
O sea que a veces hay que hacer lo contrario de lo que dicen.....

39.- Trucar los valid..


En una rutina de calculo necesito hacer unos calculos con unos gets numericos; el
on change no funciona, el valid no "vale" puesto que no puedo utilizar parametros;
solucion, intermedia, utilizar partes de uno y otro:

REDEFINE GET gDIV_LITOT VAR vDIV_LITOT ID 122 OF odlg PICTure "@E


99.999999" update READONLY // para el resultado

REDEFINE GET gDIV_LIRAS VAR vDIV_LIRAS ID 102 OF odlg


valid(vDIV_LITOT :=vDIV_LIRAS /vDIV_LICAM,odlg:update(),.t. ) // operacion
fijaos en el .t. despues de update() !! Este es el truco!!!
Se puede utilizar valid con comandos, sin funciones
*************** RESPETAD ESTO,POR FAVOR **********************************
Principales autores de estos trucos:
Juan Jose Machado. Jos� Enrique Serrano Exp�sito, Fabi�n Acevedo ,Antonio Linares,
Luciano Cedr�s, Hernan ,Marcelo Montenegro, Martin Gomez Reyes, Guillermo Verger
Eduardo Rizzolo,F�lix Pablo Grande Ramos,Fredy, The Full

y muchos mas ... Yo solo me he limitado a preguntar cosas y a recogerlas


Angel Martin (Bilbao.-Espa�a)