lstScreen is string = SysListScreen()
res is string
i is int = 0
Moni is Control
MoniRes is Control
y is int = 145
FOR EACH STRING screen OF lstScreen SEPARATED BY CR
i++
Moni <- ControlCreate("Monitor_"+i, typStatic, 170, y, 300, 26)
Moni..Caption = ExtractString(screen, lastRank, "\")
res = SysScreenResolution(screen)
MoniRes <- ControlCreate("MonitorRes_"+i, typStatic, 474, y, 300, 26)
MoniRes..Caption = ExtractString(res, 1) + " x " + ExtractString(res, 2)
y+=27
END
Saber la version del .NET instalada
// Display the version of the .NET Framework
Info(«Version of .NET Framework: » + DotNetVersion())
Y para ver todos los .NET instalados puedes usar:
Info(«Versions of .NET Framework: » + CR + DotNetVersion(dnvList))
Visualmente lo puedes mirar en el registry:

Visualizar mails HTML y texto en el mismo control HTML
Los mails pueden ser tipo texto o tipo html.
WinDev guarda en la propiedad HTML el contenido HTML y en la propiedad Message el contenido texto.
Para mostrar la información de forma correcta en un Edit box de tipo HTML.
Podemos hacer:
MySession is EmailPOP3Session
MySession..ServerAddress = "mail.mihostpop.com"
MySession..Name = "pruebas@mihostpop.com"
MySession..Password = "clave"
EmailStartSession(MySession)
// Se trae todos los mensajes
arrMessage is array of Emails
arrMessage = EmailGetAll(MySession)
FOR EACH AMessage OF MySession
// Si el mensaje es HTML
IF AMessage..HTML <> "" THEN
edt_noname1 = AMessage..HTML
ELSE
EDT_NoName1 = TextToHTML(AMessage..Message) // Aqui esta el truco. Convertir el texto a HTML
END
END
Nota: Para ver un mensaje concreto podemos usar la ID. Para eso tenemos AMessage..MessageID = «<op.yua3m7ip6biz1x@desktop-jji97or>»
Optimizar MySQL en Windows (II)
Cuando instalas mySQL te deja el fichero de configuración my.ini en: c:\programData\MySQL\MYSQL Server 5.6\my.ini
Para ver qué consultas SQL van lentas puedes activar el log de consultas lentas cambiando los parametros:
log-output=NONE
slow-query-log=0
long_query_time=10
por
log-output=FILE
slow-query-log=1
long_query_time=5
Con eso se activaba el log para consultas lentas que duren mas de 5 segundos.
Una vez reiniciado el servidor… veras que en la carpeta DATA aparece un fichero *.log de consultas lentas en las que puedes ver qué consultas están ralentizando los procesos y crear los indices oportunos.
La propiedad month (mes)
Suponte que estás en el mes de Enero y quieres trabajar con el mes anterior (diciembre).
Si usas:
MyDate1..Month = MyDate1..Month – 1
Te devolverá 0 (en vez de 12 que es lo que esperas)
En este caso tienes que usar:
MyDate1..Month -= 1
Los unicos operadores que puedes usar con Month son:
++ and —
+= and – =
Una forma rápida de poner colores a las cifras numérica

Si es un importe positivo, sale AZUL y si es negativo, sale ROJO
Editor de informes
Efectivamente al editor de informes puedes ir via:
iPreview() iPrintReport(nombre del informe)
Y con los botones crear/modificar accedes al editor de informes. Pero eso es algo confuso… Es mucho mejor ir a través de
RunReportsAndQueries(nombre del informe)
te ahorras la vision preliminar que con su cumulo de opciones desconcierta un poco.
Report & Queries
Una de las cosas buenas de WinDev es que tiene un editor de informes que se le puede entregar al cliente.
Para que se esto le funcione al cliente tienes que hacer 3 cosas:
1.- Decirlo en el proyecto (en la opción Advanced)
2.- Decirlo individualmente en cada informe en (options). Yo suelo marcar todo (all modificable/ Include the compiled code)
3.- Al cliente tienes que adjuntarle el exe del Reports & Queries que te lo tienes que bajar de la web de WinDev.
Cuando el cliente abre el preview del informe tiene un par de botones para modificar o para crear informes. Nos vamos a centrar en modificar informes.
Dándole al boton modificar te abre el diseñador del informe y te permite hacer cambios en él. Cuando una vez realizados los cambios le das a guardar verás que WD te crea al lado del exe una carpeta llamada Reports and Queries. En esa carpeta junto con diversos ficheros que si los eliminas parece que no pasa nada… te crea un fichero con el mismo nombre que tu report. Si el Report se llamaba Informe1…. verás que aparece un fichero que se llama Informe1.wde
Lo mas curioso es que una vez modificado el informe por el usuario, las veces siguientes que accedes al preview te muestra siempre el informe modificado. No hay forma de recuperar el informe original salvo que borres el que se ha creado dentro de la carpeta Reports & Queries.
Para acceder a esos informes puedes usar:
IF InTestMode() THEN
iPreview(i100,Informe1)
iPrintReport(Informe1)
ELSE
iPreview(i100,CompleteDir(fExeDir()) + "Reports and Queries\Informe1.wde")
iPrintReport(CompleteDir(fExeDir()) + "Reports and Queries\Informe1.wde")
END
Nota: para modificar el directorio de los informes por defecto puedes usar: fReportsAndQueriesDir()
Los EXE de WD 22 no funcionan en XP
¿Sabias que los *.exe de WD 22 no funcionan en XP? Pues ya lo sabes…
¿Donde se guarda la información de la aplicación?
En modo desarrollo (cuando lo ejecutas desde los fuentes) se guarda en:
HKEY_CURRENT_USER\SOFTWARE\PC SOFT\WINDEV\21.0\TestMode (o ModeTest en WD 20)\<project>
Desde el ejecutable en:
HKEY_CURRENT_USER\SOFTWARE\Applications WinDev\<project>
Para grabar en otro sitio podrias usar:
InitParameter(paramRegistry, «HKEY_CURRENT_USER\Software\DDSoft\DDTool\3.51»)
De todos modos yo te recomiendo guardar en XML en el propio directorio de la aplicación. Esto tiene muchas ventajas:
1.- Es más fácil recuperar la configuración por defecto de la aplicación. Basta con que borres el fichero *.xml y te evitas navegar por oscurantistas claves del registry.
2.- Se puede tener 2 instalaciones en la misma máquina con configuraciones distintas.
InitParameter(paramXML, <path de la aplicacion> + «configuracion.xml»)
También le puedes añadir un parametro para indicar el usuario.