New FTDN April/Abril 2021 (FWH 21.04)

New FTDN April/Abril 2021 (FWH 21.04)

Postby Antonio Linares » Mon May 31, 2021 3:53 pm

March and April, 2021
=====================

* New: Class TGif Method Redefine( nId, oWnd, cGifName )
Please review new samples\testgifr.prg and testgifr.rc
http://forums.fivetechsupport.com/viewt ... 21#p240521

* Fix: function FW_MemoEdit(). Font leakage fixed.

* Window method Line( top, left, bottom, right, color, size )
Now 5th parameter color can also be oPen/hPen, In this case,
6th parm size should be nil or omitted.

* Fix: EDITVARS command runtime error (FWH2101 & 2102) with
character variables fixed.
http://forums.fivetechsupport.com/viewt ... db156cd46b

* MARIADB ROWSET:

- If any constant default values are specified in the table definition.
the same are shown in the edit record while appending.

- Due to a bug introduced in version 20.02, while simple Requery()
and Requery( {params} ) are working correctly, Requery( cNewSQL )
was making the rowset readonly. Fixed now.

* TMSGITEM enhancements:

- Codeblocks bAction and bRClicked were being evaluated with only two
parameters nRow,nCol. Now these are evaluated with three parameters
nRow,nCol,nSelf.

- New method ShowPopUp( oPopMenu ) displays the popup menu with its
bottom aligned to the top of he msgitem.

Usage:
DEFINE MSGITEM ... ACTION { |r,c,oItem| oItem:ShowPopup( MyPopUp() ) }

- New method Anchor( oDlg ): When used in ON INIT clause of a dialog,
moves the dialog to align its bottom with the top of the msgitem.

Usage:
ACTIVATE DIALOG oDlg ON INIT (..... oMsgItem:Anchor( oDlg ) )

* XBROWSE

- Method oCol( u ) enhanced.
Till now, the parameter can be either (1) creation order, (2) header
or ( 3 ) group header + "_" + header.
Enhancement:
oBrw:oCol( { |col| !Empty( col:cOrder ) } ) returns the sorted column.
oBrw:oCol( { "cSortOrder", "city" } ) or
oBrw:oCol( "cSortOrder", "city" ) returns the column whose cSortOrder is
"city" ( case insensitive).

- MultiRow Selection by using the method SetMultiSelCol:
Initially the datas lReadOnly and nEditType of oBrw:oMultiSelCol are
set to .f. and 1.
During runtime, this feature can be disabled/re-enabled by toggling the
values of lReadOnly or nEditType of oBrw:oMultiSelCol to .T./F. or 0/1.

- New: DATA oSortCbx: Enables defining a combobox with sort orders
synchronized with sorting with click on header.
Usage:
@ r,c COMBOBOX oBrw:oSortCbx VAR oBrw:cSortOrder SIZE w.h PIXEL OF oDlg
OR
First define a combobox from source/resource with no items and then
oBrw:oSortCbx := oCbx
See:
samples\xbsortcb.prg

* REPORT: When report is output to a text file with clause "TO FILE <file.prn>"'
center and right alignment of columns are ignored. Fixed.
Thanks for Mr. Juan Navas for pointing out.

* TDATABASE: (fwh\source\classes\database.prg)

- New method SetScope(), in addition to the present method OrdScope()
Syntax:
SetScope() with no params: No action
SetScope( nil ) // clear all scopes
SetScope( uVal ) // Set both top and bottom scopes to uVal
SetScope( uTop, uBot ) // TopScope uTop and Bottom Scope uBot
// NIL value removes that scope

After setting the scope, if the current record is out of scope,
record pointer is moved to the nearest record within the scope.

- Enhancement to SetFilter(...)
After setting the filter, if the current record does not respect
the filter, the record pointer is moved to the nearest record
respecting the filter.

* New function WNetAddConnection2W( cPath, cPassword, cUserName, cDrive )
is Unicode version of the existing function WNetAddConnection2.

* FW_STRICMP() improved. Can be used to compare strings as well as any
valtype.
Syntax-1:
FW_StrICmp( uVar1, uVar2, [lExact] ) --> -2/-1/0/+1/+2
lExact defaults to SET EXACT setting.
uVar1 and uVar2 can be of any data types. In case both are
strings, "case insensitive" comparision is made. In other cases,
normal comparision is made. ValTypes "D" aND "T" are converted
to same type and compared.

uVar1 and uVar2 can also be arrays/hashes.

Result:
0 --> Equal and Exactly Equal if lExact is true.
-1 --> uVar1 < uVar2
+1 --> uVar1 > uVar2
-2 --> ValType( uVar1 ) < ValType( uVar2 )
+2 --> ValType( uVar1 ) > ValType( uVar2 )

Syntax-2:
FW_StrICmp( uVar1, cOperator, uVar2, [lExact] ) --> .T. / .F.
cOperator can be "==", "=", ">", "<", ">=", "<=", "!=", "<>"
Eg: ? FW_StrICmp( "FWH", "==" "fwh" ) // --> .T.

Following translates are provided for those who find using these
translates more comfortable to use:
IC( <a> == <b> )
IC( <a> >= <b> )
IC( <a> <= <b> )
IC( <a> <> <b> )
IC( <a> != <b> )
IC( <a> = <b> )
IC( <a> > <b> )
Note: "ic" stands for ignore case.
Usage: if ic( "fwh" == "FWH" ); <do something>; endif

Also,
( <a> .XEQ. <b> )
( <a> .XNE. <b> )
( <a> .EQ. <b> )
( <a> .NE. <b> )
( <a> .GE. <b> )
( <a> .LE. <b> )
( <a> .GT. <b> )
( <a> .LT. <b> )

Usage: if ( "FWH" .GT. "abc" ); <dosomething>; endif

* Enhancements:
functions GetModuleFileName() and ShellExecute() are now
Unicode compatible, if FW_SetUnicode() is set to .T.

* New translate: xtrim( <u> ) returns trim of <u> if <u> is a
character value and otherwise returns <u>.

* New Miscellaneous functions:

- FW_AGE( dob, [dAsOn = date()] ) --> Age in years.

- FW_NEXTBIRTHDAY( dob, [dAsOn = date()], [lIncludetoday=.f.] )
--> dNextBirthday

* New Samples:
- xbmulsel.prg: demonstrates use of SetMultiSelCol() method.
- xbsortcb.prg: usage of oSortCbx.
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42203
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: New FTDN April/Abril 2021 (FWH 21.04)

Postby elvira » Wed Jun 02, 2021 12:07 pm

Hi,

What happened to EasyReport?

Thanks :)
elvira
 
Posts: 516
Joined: Fri Jun 29, 2012 12:49 pm

Re: New FTDN April/Abril 2021 (FWH 21.04)

Postby Antonio Linares » Wed Jun 02, 2021 2:22 pm

Elvira,

The EasyReport engine is already part of FWH. Please review FWH\samples\erep01.prg

Cristobal has managed to include the EasyReport designer in FWH, but we are waiting for his demos :-)
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42203
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: New FTDN April/Abril 2021 (FWH 21.04)

Postby leandro » Thu Jun 03, 2021 12:46 pm

Antonio buenos días

Nos puedes explicar un poco mas para que sirve esta función nueva
Code: Select all  Expand view  RUN

WNetAddConnection2W( cPath, cPassword, cUserName, cDrive )
 
Saludos
LEANDRO AREVALO
Bogotá (Colombia)
https://hymlyma.com
https://hymplus.com/
leandroalfonso111@gmail.com
leandroalfonso111@hotmail.com

[ Embarcadero C++ 7.60 for Win32 ] [ FiveWin 23.07 ] [ xHarbour 1.3.0 Intl. (SimpLex) (Build 20230914) ]
User avatar
leandro
 
Posts: 1688
Joined: Wed Oct 26, 2005 2:49 pm
Location: Colombia

Re: New FTDN April/Abril 2021 (FWH 21.04)

Postby Antonio Linares » Thu Jun 03, 2021 3:15 pm

regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42203
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: New FTDN April/Abril 2021 (FWH 21.04)

Postby Antonio Linares » Fri Jun 04, 2021 2:15 pm

Marzo y Abril 2021
==================

* Nuevo: Método Redefine( nId, oWnd, cGifName ) en la clase TGif.
Por favor, nuevos ejemplos samples\testgifr.prg y testgifr.rc
http://forums.fivetechsupport.com/viewt ... 21#p240521

* Corrección: En la función FW_MemoEdit(). Se ha corregido la pérdida
de recursos en las fuentes.

* Clase TWindow, método Line( top, left, bottom, right, color, size )
Ahora el quinto parámetro "nColor" puede ser también "oPen/hPen".
En este caso, el _ parámetro "size" debería ser NIL u omitido.

* Corrección: El comando EDITVARS daba errores en tiempo de ejecución
en las versiones FWH2101 y FWH2102 con variables de tipo carácter.
Corregido.
http://forums.fivetechsupport.com/viewt ... ff202e947a

* MARIADB ROWSET:

- Si se especifican valores constantes por defecto en la definición
de la tabla los mismos son mostrados en el registro de edición mientras
se añaden.

- Debido a un error introduccido en la versión FWH2002, mientras una simple
sentencia Requery() y Requery( {params} ) estaban funcionando correctamente,
una sentencia Requery( cNewSQL ) hacía que el conjunto de filas fuera de
sólo lectura. Ahora se ha corregido.

* Mejoras en TMSGITEM:

- Los bloques de código bAction y bRClicked estaban siendo evaluados con
sólo dos parámetros nRow y nCol. Ahora son evaluados con tres parámetros:
nRow,nCol y nSelf.

- Nuevo método ShowPopUp( oPopMenu ), este muestra el menú emergente, con su
parte inferior alineada con la parte superior del elemento de mensaje.

Uso:
DEFINE MSGITEM ... ACTION { |r,c,oItem| oItem:ShowPopup( MyPopUp() ) }

- Nuevo método Anchor( oDlg ): Cuando se utiliza en la cláusula ON INIT de un
cuadro de diálogo, mueve el cuadro de diálogo para alinear su parte inferior
con la parte superior del "msgitem".

Uso:
ACTIVATE DIALOG oDlg ON INIT (..... oMsgItem:Anchor( oDlg ) )

* XBROWSE

- Mejora en el método oCol( u )
Hasta ahora, el parámetro puede ser (1) orden de creación,
(2) cabecera o ( 3 ) cabecera de grupo + "_" + cabecera.
Mejora:
- oBrw:oCol( { |col| !Empty( col:cOrder ) } )
Devuelve la columna ordenada.
- oBrw:oCol( { "cSortOrder", "city" } ) o oBrw:oCol( "cSortOrder", "city" )
Devuelve la columna cuyo cSortOrder es "city" (no distingue entre mayúsculas y minúsculas).

- Selección multi fila usando el método SetMultiSelCol:
Inicialmente las DATAS lReadOnly y nEditType de oBrw:oMultiSelCol son
puestos a .F. y 1.
Durante el tiempo de ejecucción, esta característica puede ser deactivada/activada
mediante el cambio de los valores de las DATAS lReadOnly y nEditType de
oBrw:oMultiSelCol a .T./.F. o 0/1.

- Nueva DATA oSortCbx: Permite definir un cuadro combinado con órdenes de clasificación
sincronizado con la ordenación con un clic en la cabecera.

Uso:
@ r,c COMBOBOX oBrw:oSortCbx VAR oBrw:cSortOrder SIZE w,h PIXEL OF oDlg

Primero defina un cuadro combinado desde código fuente/recursos sin elementos y luego
oBrw:oSortCbx := oCbx

Revise el ejemplo samples\xbsortcb.prg

* REPORT: Cuando el informe se envía a un archivo de texto con la cláusula
"TO FILE <file.prn>", se ignora la alineación central y derecha de las columnas.
Corregido. Gracias a Juan Navas por señalarlo.

* TDATABASE: (fwh\source\classes\database.prg)

- Nuevo método SetScope(), además del método actual OrdScope()
Sintaxis:
SetScope() sin parámetros: No hay acción
SetScope( nil ) // elimina todos los ámbitos
SetScope( uVal ) // Establece los ámbitos superior e inferior en uVal
SetScope( uTop, uBot ) // Ambito superior uTop y ámbito inferior uBot
// Valor NIL elimina todos los ámbitos

Después de establecer el ámbito, si el registro actual está fuera del ámbito,
el puntero del registro se desplaza al registro más cercano dentro del ámbito.

- Mejora a SetFilter(...)
Después de configurar el filtro, si el registro actual no respeta
el filtro, el puntero de registro se mueve al registro más cercano
respetando el filtro.

* Nueva función WNetAddConnection2W( cPath, cPassword, cUserName, cDrive )
Es la versión unicode de la función existente WNetAddConnection2.

* FW_STRICMP() mejorado. Se puede utilizar para comparar cadenas, así como
cualquier tipo de dato.

Sintaxis - 1:
FW_StrICmp( uVar1, uVar2, [lExact] ) --> -2/-1/0/+1/+2
lExact por defecto el valor de SET EXACT.
uVar1 y uVar2 pueden ser de cualquier tipo de datos. En caso de que ambos
sean cadenas, se realiza una comparación "insensible a mayúsculas y minúsculas".
En los demás casos se realiza una comparación normal. Los tipos de datos
"D" y "T" se convierten al mismo tipo y se comparan.

uVar1 y uVar2 también pueden ser arrays/hashes.

Resultado:
0 --> Igual y exactamente igual si lExact es verdadero.
-1 --> uVar1 < uVar2
+1 --> uVar1 > uVar2
-2 --> ValType( uVar1 ) < ValType( uVar2 )
+2 --> ValType( uVar1 ) > ValType( uVar2 )

Sintaxis - 2:
FW_StrICmp( uVar1, cOperator, uVar2, [lExact] ) --> .T. / .F.

cOperator puede ser ==", "=", ">", "<", ">=", "<=", "!=", "<>"
Por ejemplo: ? FW_StrICmp( "FWH", "==" "fwh" ) // --> .T.

Para aquellos que les resulte más cómodo utilizar estas traducciones,
se ofrecen las siguientes traducciones más cómodas de usar:
IC( <a> == <b> )
IC( <a> >= <b> )
IC( <a> <= <b> )
IC( <a> <> <b> )
IC( <a> != <b> )
IC( <a> = <b> )
IC( <a> > <b> )

Nota: "IC" significa ignorar el caso.
Uso: if IC( "fwh" == "FWH" ); <do something>; endif

También,
( <a> .XEQ. <b> )
( <a> .XNE. <b> )
( <a> .EQ. <b> )
( <a> .NE. <b> )
( <a> .GE. <b> )
( <a> .LE. <b> )
( <a> .GT. <b> )
( <a> .LT. <b> )

Uso: if ( "FWH" .GT. "abc" ); <dosomething>; endif

* Mejoras:
Las funciones GetModuleFileName() y ShellExecute() ahora son
Unicode compatibles, si FW_SetUnicode() está puesto a .T.

* Nueva traducción: xtrim( <u> ) devuelve el recorte de <u>
si <u> es un valor de tipo carácter y en caso contrario
devuelve <u>.

* Nuevas funciones misceláneas:
- FW_AGE( dob, [dAsOn = date()] ) --> Edad en años.
- FW_NEXTBIRTHDAY( dob, [dAsOn = date()], [lIncludetoday=.f.] ) --> dNextBirthday

* Nuevos ejemplos:
- xbmulsel.prg: demuestra el uso del método SetMultiSelCol().
- xbsortcb.prg: uso de oSortCbx.
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42203
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: New FTDN April/Abril 2021 (FWH 21.04)

Postby leandro » Fri Jun 04, 2021 3:43 pm

Hola buenos días para todos

Quiero reportar un bug en la función memoedit(), en la nueva versión de fw2104. Cuando intento usarla el software se queda como en un bucle y se bloquea. Lo solucione cambiando por la función fw_memoedit().

Pero el tema es que uso esa función en muchos prg y no quiero tener que cambiarlas, me gustaría que se solucionara en error.

De antemano gracias,
Saludos
LEANDRO AREVALO
Bogotá (Colombia)
https://hymlyma.com
https://hymplus.com/
leandroalfonso111@gmail.com
leandroalfonso111@hotmail.com

[ Embarcadero C++ 7.60 for Win32 ] [ FiveWin 23.07 ] [ xHarbour 1.3.0 Intl. (SimpLex) (Build 20230914) ]
User avatar
leandro
 
Posts: 1688
Joined: Wed Oct 26, 2005 2:49 pm
Location: Colombia

Re: New FTDN April/Abril 2021 (FWH 21.04)

Postby Antonio Linares » Fri Jun 04, 2021 5:06 pm

Leandro

Puedes incluir en FiveWin.ch este define:

#define MemoEdit(x) FW_MemoEdit(x)

y asi al recompilar los corregirá todos

Es que la función MemoEdit() es de Harbour y es preferible respetar la de Harbour para evitar símbolos duplicados al enlazar
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42203
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: New FTDN April/Abril 2021 (FWH 21.04)

Postby leandro » Sat Jun 05, 2021 2:06 am

Antonio muchas gracias,

Solucionado :D
Saludos
LEANDRO AREVALO
Bogotá (Colombia)
https://hymlyma.com
https://hymplus.com/
leandroalfonso111@gmail.com
leandroalfonso111@hotmail.com

[ Embarcadero C++ 7.60 for Win32 ] [ FiveWin 23.07 ] [ xHarbour 1.3.0 Intl. (SimpLex) (Build 20230914) ]
User avatar
leandro
 
Posts: 1688
Joined: Wed Oct 26, 2005 2:49 pm
Location: Colombia


Return to WhatsNew / Novedades

Who is online

Users browsing this forum: No registered users and 1 guest