Page 1 of 1

New FTDN February 2020 (FWH 20.02)

Posted: Wed Feb 26, 2020 10:24 am
by Antonio Linares
February 2020
=============

* GET
- ReadOnly: Even when a Get is readonly, the user can navigate to the
Get by mouseclick. This facility is provided to enable the user to
scroll horizontally to view the text overflowing the size of Get.
In some cases where the datasource is readonly, runtime error occurs
while exiting the Get.
http://forums.fivetechsupport.com/viewt ... =3&t=38289
Fixed.

- @Z picture format: With this picture format, empty numeric values should
be displayed as blanks when the get is not in focus. This is the standard
behaviour of Clipper and (x)Harbour. But FWH displays 0 in all gets with and
without focus. Now fixed. Gets not having focus display blanks.
http://forums.fivetechsupport.com/viewt ... =3&t=38282

- It is possible to edit only the time-part of a DateTime value by providing
the picture clause as "HH:MM:SS"
http://forums.fivetechsupport.com/viewt ... 67#p229767

- Picture clause "@!" for Password Get from resource is not converting
text to uppercase, since FWH1912. Fixed. (Works only for non Unicode apps)

- Sameway, if the Get in RC file has the flag ES_UPPERCASE, it is considered
as picture clause "@!"

- In password gets, setting of SET INSERT is respected for insert/overwrite.

- In password gets, Values of :VarGet(), :cText are as expected when queried
in bChange block

- Password Gets: The points raised in
http://forums.fivetechsupport.com/viewt ... =3&t=38415
Fixed.

* New: FW_ValidCreditCard( cardNo, @cIssuer, @cInfo ) --> lValidNum
cIssuer --> Visa, MasterCard, etc.
cInfo --> More details reg. bank, debit/credit, country, etc

* CenterMsgs()

- After calling this function all msg* dialogs are centered in
in the active window instead of desktop window.
But an unwated side-effect was that all normal dialogs were
also centered in the active window. This is fixed now.
This function now affects only Windows Api Msg* dialogs, i.e.,
MsgInfo(), MsgStop(), MsgAlert(), MsgYesNo(), MsgYesNoCancel(),
MsgRetryCancel(), MsgAbout() and also FWH functions MsgRun(),
MsgWait().

- After calling CenerMsgs(), calling MsgRun() was crashing. Fixed.
http://forums.fivetechsupport.com/viewt ... 35#p228435

- Enhanced Syntax
CenterMsgs() or CenterMsgs( .t. ) --> lPrevSet // Start Centered Msgs
CenterMsgs( .f. ) --> lPrevSet // Stop centered Msgs
CenterMsgs( NIL or non-logical value ) --> lCurrentSetting

- Language of prompts on Buttons:
SetMsgLangId( [nLangID] ) --> nPrevLangID
nLangID can be set to one of the constants available in
https://docs.microsoft.com/en-us/window ... nd-strings

* Enhancement MsgRun( cCaption, cTitle, bAction, oWndParent, aColor )
- New: 5th optional parameter aColor. Array of 2 colors, Text and back colors
- If oWndParent is speicified, the msg da=ialog is centered inside the
oWndParent. If ommitted, objeys the settings if CenterMsgs()

Enhancement MsgWait( cCaption, cTitle, nSeconds, oWndParent, aColor )
- New params: oWndParent, aColor
Same as MsgRun.

* Enhancement: function cFileUNC( cFile/cPath ) --> cUncName.
This function introdiced in FWH1805 returns UNC path only when connected.
Now enhanced to return the UNC path in case of persistent
connections even if not currently connected.

* New function FW_NetRmtName( cDrive ) --> cMappedUncName
Enhanced version of (x)Harbour's function NETRMTNAME()
Returns mapped UNC path of persistent connections not currently
connected also.

* XBrowse:

- Enhanced logic for evaluation of expressions used while browing
ADO and MySql.
When columns are defined as "NAME","QTY","QTY*RATE", etc., expressions
like "QTY*RATE" are internally translated as:
oRs:Fields( "QTY" ):Value * oRs:Fields( "RATE" ):Value, etc.
Logic for this translation is improved.

- New CLASSDATA lRestoreFilters INIT .f.
By default any filters set by incremental filters are retained when
xbrowse exits.
If this classdata is set to .T., while exiting xbrowse, the original
filters when starting the xbrowse are restored.
Note: This modifies the behavior introduced in FWH1906.

- ADO TIME field type (type:adTime): (x)Harbour ADO reads and writes
adTime fields (corresponding to TIME fieldtype) as DateTime values.
However, XBrowse while reading and writing data as DateTime variables
from/to the recordset, displays and editable as Harbour time strings
in the format "HH:MM:SS".
http://forums.fivetechsupport.com/viewt ... 67#p229767

* datarow.prg: TDataRow class
- Save() method made comaptible with SQLRDD.
- ADO TIME field type (type:adTime): (x)Harbour ADO reads and writes
adTime fields (corresponding to TIME fieldtype) as DateTime values.
However, XBrowse while reading and writing data as DateTime variables
from/to the recordset, displays and editable as Harbour time strings
in the format "HH:MM:SS".
- If the programmer writes his own get, he needs to provide picture clause
as "HH:MM:SS"
eg @ r,c GET oRec:timefield PICTURE "HH:MM:SS" <other clauses>
http://forums.fivetechsupport.com/viewt ... 67#p229767

* Printer.prg
- Fix: Method SayText(): Ampersand (&) contained in text is coverted as
underscrore of the next character while printing. Fixed.
Please see for details and fix to be applied in previous builds
http://forums.fivetechsupport.com/viewt ... =3&t=38485

* Control.prg
- Fix: Behavior of accelerator keys:
Pressing Alt-F4 should close the active window. Instead Alt-F4 is interpreted
as Alt-S and if a btnbmp's prompt contains "&S", that button click is activated
Alt-1 to 9 using keys on numeric pad are interpreted as ALT-A to ALT-I instead.
Fixed now.

- DATA bSysKeyDown. If this codeblock is specified for any control, this is
evaluated as Eval( ::bSysKeyDown, nVirtualKeyCode, nFlags, Self ) when the user
presses any Alt-Key combination. At present, the return value is ignored.
Now, if the return value is 0, it is treated that the key is handled and is
not further processed.

Re: New FTDN February 2020 (FWH 20.02)

Posted: Fri Feb 28, 2020 7:55 am
by Antonio Linares
Febrero 2020
============

* GET

- ReadOnly: Incluso cuando un Get es de sólo lectura, el usuario puede
navegar hasta el "get" con el ratón. Esta función se proporciona para
permitir al usuario desplazarse horizontalmente para ver el texto que
desborda el tamaño del "get".
En _ donde el origen de datos es de sólo lectura, se produce
un error de tiempo de ejecución mientras sale del "get".
viewtopic.php?f=3&t=38289
Corregido.

- Formato picture @Z: Con este formato, los valores numéricos vacíos deben
mostrarse como espacios en blanco cuando el "get" no tiene el foco. Este es
el comportamiento estándar de Clipper y (x)Harbour. Pero FWH muestra 0 en
todas las entradas con y sin el foco. Ahora está corregido. Los "gets" sin
el foco muestran espacios en blanco.
viewtopic.php?f=3&t=38282

- Es posible editar sólo la parte de tiempo de un valor DateTime proporcionando
la cláusula de picture como "HH:MM:SS".
viewtopic.php?f=3&t=38455&p=229767#p229767

- La cláusula "@!" para las contraseñas en los "gets", desde recursos no está
convirtiendo el texto a mayúsculas, desde la versión FWH 19.12
Corregido.(Sólo funciona para aplicaciones no Unicode).

- Del mismo modo, si el "get" en el fichero RC tiene el indicador ES_UPPERCASE,
se considera como una cláusula "@!".

- En los "gets" de contraseñas, la configuración de SET INSERT se respeta para
insertar / sobrescribir.

- En los "gets" de contraseñas, los valores de :VarGet(), :cText son los esperados
cuando son consutados en el bloque de código bChange.

- Los "gets" de contraseñas: Los puntos planteados en el hilo viewtopic.php?f=3&t=38415
Corregido.

* Nuevo: Nueva función FW_ValidCreditCard( cardNo, @cIssuer, @cInfo ) --> lValidNum
cIssuer --> Visa, MasterCard, etc.
cInf --> Más detalles banco, débito/crédito, país, etc.

* CenterMsgs()
- Después de llamar a esta función, todos los cuadros de diálogo de las funciones Msg*()
se centran en la ventana activa, en lugar de la ventana del escritorio.
Pero un efecto no deseado hacía que los cuadros de díalogo normales se centrasen en la
ventana activa. Se ha corregido.
Esta función ahora sólo afecta a las funciones Msg*() del API de Windows como por
ejemplo: MsgInfo(), MsgStop(), MsgAlert(), MsgYesNo(), MsgYesNoCancel(), MsgRetryCancel(),
MsgAbout() y también a las funciones MsgRun()y MsgWait() de FWH.

- Después de llamar a la función CenterMsgs(), llamando a MsgRun(), congelaba el programa.
Corregido.
viewtopic.php?f=3&p=228435#p228435

- Sintáxis mejorada
CenterMsgs() or CenterMsgs( .t. ) --> lPrevSet // Comienza a centrar los Msg*()
CenterMsgs( .f. ) --> lPrevSet // Deja de centrar los Msg*()
CenterMsgs( NIL o valor no lógico ) --> lCurrentSetting // Nos muestra la configuración actual

- Idioma de los avisos en los botones:
SetMsgLangId( [nLangID] ) --> nPrevLangID
nLangID puede ser una de las constantes disponibles en
https://docs.microsoft.com/en-us/window ... nd-strings

* Mejora en la función MsgRun( cCaption, cTitle, bAction, oWndParent, aColor )
- Nuevo: Quinto parámetro opcional aColor. Matriz de dos colores, color de texto y fondo.
- Si se especifica oWndParent, el cuadro de diálogo msg se centra en la ventana padre
(oWndParent). Si se omite, obedece a la configuración de CenterMsgs().
- Si el cuarto parámetro es una ventana, entonces se centrará en dicha ventana ( ya sea activa
o no). Si este parámetro es NIL, entonces utilizará la configuración de CenterMsgs().
Si CenterMsgs() es .T. se centrará en la ventana activa, si no lo hará en la ventana del escritorio.

* Mejora en la función MsgWait( cCaption, cTitle, nSeconds, oWndParent, aColor )
- Nuevos parámetros: oWndParent, aColor
Igual que MsgRun().

* Mejora en la función cFileUNC( cFile/cPath ) --> cUncName.
Esta función introducida en FWH1805 devuelve la ruta UNC sólo cuando está conectado.
Ahora mejorado para devolver la ruta UNC en caso de conexiones persistetes incluso si no está
conectado actualmente.

* Nueva función FW_NetRmtName( cDrive ) --> cMappedUncName
Versión mejorada de la función NETRMTNAME() de (x)Harbour.
Devuelve la ruta UNC de las conexiones concurrentes que no esten conectadas actualmente.

* XBrowse:
- Mejorada la lógica para evaluación de expresiones utilizadas mientras se explora ADO y MySQL.
Cuando las columnas se definen como "NAME","QTY","QTY*RATE", etc., las expresiones como "QTY*RATE"
son internamente traducidas como: oRs:Fields( "QTY" ):Value * oRs:Fields( "RATE" ):Value, etc.
Se ha mejorado la lógica para esta traducción.

- Nueva CLASSDATA lRestoreFilters INIT .F.
Por defecto cualquier filtro establecido como incremental se retiene cuando se sale del xbrowse.
Si esta CLASSDATA es puesta a .T., al salir del xbrowse, se restaurarán los filtros originales.
Nota: Esto modifica el comportamiento introducido en FWH 19.06.

- El tipo de campo ADO TIME ( adTime ): (x)Harbour ADO lee y escribe campos adTime, correspondientes
al tipo de campo TIME, como valores DateTime.
Sin embargo, XBrowse mientras lee y escribe datos como variables DateTime desde/hacia el
conjunto de registros, los muestra y edita como cadenas de caracteres en el formato "HH:MM:SS".
viewtopic.php?f=3&t=38455&p=229767#p229767

* datarow.prg: clase TDataRow
- Método Save() se ha hecho compatible con SQLRDD.

- El tipo de campo ADO TIME ( adTime ): (x)Harbour ADO lee y escribe campos adTime, correspondientes
al tipo de campo TIME, como valores DateTime.
Sin embargo, XBrowse mientras lee y escribe datos como variables DateTime desde/hacia el
conjunto de registros, los muestra y edita como cadenas de caracteres en el formato "HH:MM:SS".

- Si el programador escribe su propio "get", debe proporcionar una cláusula como "HH:MM:SS".
Por ejemplo: @ r,c GET oRec:timefield PICTURE "HH:MM:SS" <other clauses>
viewtopic.php?f=3&t=38455&p=229767#p229767

* Printer.prg
- Corrección: Método SayText():
El signo & contenido en el texto se convierte como subrayado del siguiente carácter durante la impresión.
Corregido. Consulte los detalles y correcciones a ser aplicadas en versiones anteriores.
viewtopic.php?f=3&t=38485

* Control.prg
- Corrección: Comportamiento de las teclas aceleradoras:
Presionando Alt-F4 debería cerrar la ventana activa. En su lugar Alt-F4 se interpreta como Alt-S
y si un botón BMP contiene "&S" en su notificación (prompt), se activa el click del botón, Alt-1 a
Alt-9 usando el teclado numérico se interpretarán como Alt-A a Alt-I en su lugar.
Corregido.

- DATA bSysKeyDown.
Si este bloque de código se especifica para cualquier control, se evalúa como
Eval( ::bSysKeyDown, nVirtualKeyCode, nFlags, Self ) cuando el usuario presiona
cualquier combinación de Alt-Tecla. En la actualidad, el valor de retorno se ignora.
Ahora, si el valor de retorno es 0, la tecla ha sido atendida y no se procesa más.