Tasa is Control y is int = 567 WHILE NOT HOut //Crear el control Tasa <- ControlCreate(dsTasas.name, typNum, 66, y, 200, 25) //Darle Valor Tasa = (EDT_SubTotal * dsTasas.rate)/100 //Maquetacion del control Tasa..Caption = dsTasas.name Tasa..Style = EDT_ID..Style Tasa..CaptionWidth = 150 Tasa..HorizontalAlignment = haRight Tasa..InputMask = "9.999,99" Tasa..State = DisplayOnly //Ubicacion del siguiente control y+=30 HReadNext(dsTasas) END
Categoría: Sin categoría
HSeek versus HRead
Los comandos:
HSeek, HSeekFirst y HSeekLast buscan la existencia de un registro,
pero no cargan los datos en memoria (el buffer de Windev)
HRead, HRead…. buscan el registro y SI que actualizan los datos
en memoria (el buffer de Windev)
Enviar mails
// Start an SMTP session
MySession is EmailSMTPSession
MySession..ServerAddress = "mail.mihost.com"
MySession..Name="micuenta@mihost.com"
MySession..Password="clave"
EmailStartSession(MySession)
// Build an email
MyMessage is Email
MyMessage..Sender ="micuenta@mihost.com"
Add(MyMessage..Recipient, "micuenta@mihost.com")
MyMessage..Message = "hola"
MyMessage..Subject = "asunto"
// Send the message
IF EmailSendMessage(MySession, MyMessage) = False THEN
Error()
END
EmailReset(MyMessage)
Manejo cadenas (comparación con FoxPro)

NOTA: Una descripción detallada del uso de funciones de manejo de cadena en Windev, lo puedes ver en: http://help.windev.com/en-US/?20001&name=Extracting_characters_or_words_from_a_string
NOTA 2 : En windev, casi todas las funciones suelen tener en parámetros la opción “Options”, que permite “matizar” como se hará la búsqueda o la comparación (ignorando mayúsculas y minúsculas, palabras completas, etc)
hSave
Posiblemente ya lo sepáis, pero Windev tiene los comandos: hadd y hmodify, para salvar un registro nuevo o modificado. Estos dos comandos se pueden unificar con hSave, que modifica o inserta el registro según exista o no en disco
Variables
En Windev, las variables se pasan por defecto por “Referencia” a los procedimientos y métodos (al revés que casi todos los lenguajes).
Para hacer que un procedimiento y/o método reciba el parámetro por valor, se debe hacer así:
PROCEDIMIENTO myProc( LOCAL x is int, LOCAL y is string, z is int)
Las variables “x” e “y” son locales y reciben el dato por “Valor”. La variable “z” recibe el valor por “Referencia”.
NOTA: La llamada no cambia, sería: mProc(var1, var2, var3) (donde var1 y var2 se pasan por valor y var3 por referencia).
NOTA2: Para forzar a pasar una variable por valor en la llamada de un método/función, hay que ponerla entre “dobles paréntesis”, así: mProc(var1, var2, ((var3)) ). Que como ves hace más feo el código que ponerlo en la declaración del método/función!