Page 2 of 3
Re: Nuevo FWH 13.07
Posted: Wed Jul 31, 2013 4:36 pm
by Antonio Linares
Manuel,
No creo que sea buena idea redimensionar el listview puesto que las mini páginas no pueden redimensionarse (son bitmaps pertenecientes a un ImageList -salvo que este admita redimensionamiento) por lo que habria que volver a crearlas todas nuevamente en cada redimensión...
preferible mantener su ancho y evitar esperas ó parpadeos

Re: Nuevo FWH 13.07
Posted: Wed Jul 31, 2013 4:47 pm
by mastintin
Antonio Linares wrote:Manuel,
No creo que sea buena idea redimensionar el listview puesto que las mini páginas no pueden redimensionarse (son bitmaps pertenecientes a un ImageList -salvo que este admita redimensionamiento) por lo que habria que volver a crearlas todas nuevamente en cada redimensión...
preferible mantener su ancho y evitar esperas ó parpadeos

Me refiero a acortar el alto , si se hace aparece un control vscroll para poder ver las miniaturas que no entren , pero estas no se redimensionan

.
En otro orden de cosas , el comportamiento de las ventans MDI a cambiado notablemente . Mañana si tengo tiempo intentaré hacer un código "contenido" que muestre "mi" problema , pero te adelanto lo que pasa . su pongamos una ventana MDI con botonBar , un boton lanza una ventana MDICHILD que tiene un xbrowse con foco ( permite moverse por los registros) . pulso otro boton que me saca un msginfo con informacion , cuando cierro ese msginfo , el foco queda "perdido".
Antes devolvía el foco al brwse de la ventana MDICHILD , ahora no se realmente donde queda el foco , pero no es el browse seguro.
Re: Nuevo FWH 13.07
Posted: Wed Jul 31, 2013 5:17 pm
by fgondi
Antonio,
Funciono. Muchas gracias
Re: Nuevo FWH 13.07
Posted: Wed Jul 31, 2013 5:31 pm
by Antonio Linares
Manuel,
Entendido, gracias

Te agradezco si me proporcionas un ejemplo de lo que comentas de las MDI, gracias
Re: Nuevo FWH 13.07
Posted: Wed Jul 31, 2013 9:23 pm
by mastintin
Antonio Linares wrote:Te agradezco si me proporcionas un ejemplo de lo que comentas de las MDI, gracias
Aqui te coloco para descargar un archivo zip con testfoco.prg y los programas compilados con las dos versiones para que veas la diferencia .
http://ge.tt/3a4PtTn/v/0?cPara ver la diferencia lanza el programa , pulsa el primer boton de la barra , se abre una ventana hija , con las teclas de cursor te mueves por los registros , pulsas el boton dos , sale un msginfo , lo cierras y pulsas las teclas de cursor , veras que en una version el foco sigue en el browse y en la nueva no .
El codigo :
Code: Select all | Expand
// Working with MDI enviroments
#include "FiveWin.ch"
#include "xbrowse.ch"
REQUEST DBFCDX
static oWnd
//----------------------------------------------------------------------------//
function Main()
local oWndEdit, oBar, oIcon, oImage
local cName := "FiveWin power"
USE Clientes NEW SHARED VIA "DBFCDX"
DEFINE ICON oIcon RESOURCE "test"
DEFINE WINDOW oWnd FROM 1, 1 TO 20, 70 TITLE "I am the MDI Frame" ;
MDI ;
ICON oIcon
SET MESSAGE OF oWnd TO "Main Window"
DEFINE BUTTONBAR oBar 2007 OF ownd
DEFINE BUTTON OF oBar GROUP ;
PROMPT "mdi" TOOLTIP "lanzar mdichild" ;
ACTION CreaMdiChild()
DEFINE BUTTON OF oBar GROUP ;
PROMPT "info" TOOLTIP "lanzar msginfo" ;
ACTION Msginfo("hola")
ACTIVATE WINDOW oWnd MAXIMIZED ;
VALID MsgYesNo( "Want to End ?" )
return nil
//----------------------------------------------------------------------------//
Function CreaMdiChild()
local oChild, oBrw
DEFINE WINDOW oChild TITLE "Basic Cell selector browse" MDICHILD OF oWnd
DEFINE BUTTONBAR oBar 2007 OF oChild
@ 0,0 XBROWSE oBrw OF oChild ALIAS Alias() AUTOCOLS
oBrw:CreateFromCode()
oBrw:cToolTip = "This is a test"
oChild:oClient := oBrw
oBrw:SetFocus()
RETURN NIL
Saludos.
Re: Nuevo FWH 13.07
Posted: Thu Aug 01, 2013 8:34 am
by mastintin
Respecto al redimensionado del listview . Ya lo tengo funcionanado . El código
Code: Select all | Expand
METHOD Activate() CLASS TPreview
ACTIVATE WINDOW ::oWnd MAXIMIZED ;
ON RESIZE ( ::PaintMeta() , ::ChangeListView() )
......
METHOD ChangeListView() CLASS TPreview
local oRect := ::oWnd:GetCliRect()
local nHeight := oRect:nHeight
::oLvw:nHeight := nHeight - If( ::oWnd:oBar != nil, ::oWnd:oBar:nHeight() - 2,;
::oWnd:oTop:nHeight() ) - ;
If( ::oWnd:oMsgBar != nil, ::oWnd:oMsgBar:nHeight(),;
::oWnd:oBottom:nHeight() )
::oLvw:refresh()
Return nil
Re: Nuevo FWH 13.07
Posted: Thu Aug 01, 2013 12:00 pm
by Antonio Linares
Manuel,
Localizado el problema del foco, se debe al cambio reciente en mdi.c:
Antes teníamos (y con este código el foco va bien):
Code: Select all | Expand
LRESULT WINAPI _WndFrameProc( HWND hWnd, UINT wMsg, WPARAM wParam, LPARAM lParam )
{
return DefFrameProc( hWnd, GetWindow( hWnd, GW_CHILD ), wMsg, wParam, lParam );
}
Este es el más reciente y que causa el problema:
Code: Select all | Expand
LRESULT WINAPI _WndFrameProc( HWND hWnd, UINT wMsg, WPARAM wParam, LPARAM lParam )
{
HWND hWndClient = GetWindow( hWnd, GW_CHILD );
char szName[ 20 ];
GetClassName( hWndClient, szName, 19 );
while( hWndClient && strcmp( szName, "MDICLIENT" ) != 0 )
{
hWndClient = GetWindow( hWndClient, GW_HWNDNEXT );
GetClassName( hWndClient, szName, 19 );
}
return DefFrameProc( hWnd, hWndClient, wMsg, wParam, lParam );
}
Asi que de momento hay que usar la versión anterior hasta que verifiquemos si hay algun error en el código del nuevo.
Re: Nuevo FWH 13.07
Posted: Thu Aug 01, 2013 12:56 pm
by Antonio Linares
El asunto me ha hecho desempolvar mi viejo libro Windows++ de Paul Dilascia, para ver que decía el gran maestro:

Y en base a mis pruebas, salvo que me equivoque, parece que ese código no es correcto...
Asi que tengo que ver donde está mi error ó el suyo
Re: Nuevo FWH 13.07
Posted: Thu Aug 01, 2013 1:21 pm
by Antonio Linares
Para aquellos que se pregunten por que quiero modificar
un codigo que ha funcionado bien durante años y que ademas
avala Paul Dilascia, la razon es que ese codigo parece fallar
en 64 bits.
De todas formas voy a tracearlo con OutputDebugString() y ver
si es correcto o si mis cambios estaban mal
Re: Nuevo FWH 13.07
Posted: Thu Aug 01, 2013 2:32 pm
by Antonio Linares
Pues el código de Paul Dilascia y el que usaba FWH está bien,
el fallo, en la nueva versión, era comparar el nombre de la clase con "MDICLIENT" cuando el nombre que usa Windows es "MDIClient"
asi que volvemos a usar el código que hasta ahora hemos usado

y seguir buscando cual pueda ser la causa de que a veces falle en 64 bits.
Re: Nuevo FWH 13.07
Posted: Thu Aug 01, 2013 3:17 pm
by Antonio Linares
Bueno, pues pese a lo que diga Paul Dilascia, este el es código que vamos a usar:
Code: Select all | Expand
LRESULT WINAPI _WndFrameProc( HWND hWnd, UINT wMsg, WPARAM wParam, LPARAM lParam )
{
if( wMsg == WM_SETFOCUS )
return DefFrameProc( hWnd, GetWindow( hWnd, GW_CHILD ), wMsg, wParam, lParam );
else
return DefFrameProc( hWnd, NULL, wMsg, wParam, lParam );
}
La razón es que con este codigo aplicaciones MDI con un control situado a un lado, funcionan correctamente. Podeis probar samples\test2003.prg. Suprimir la funcion WinRun() incluida en el ejemplo y vereis que con los cambios propuestos funciona bien

Y con esa pequeña salvedad para WM_SETFOCUS para que nos situe bien el foco.
Vamos a publicar un nuevo build de FWH 13.07 con estos cambios.
Re: Nuevo FWH 13.07
Posted: Thu Aug 01, 2013 4:05 pm
by Antonio Linares
Podemos mantener el código de Paul Dilascia:
Code: Select all | Expand
LRESULT WINAPI _WndFrameProc( HWND hWnd, UINT wMsg, WPARAM wParam, LPARAM lParam )
{
return DefFrameProc( hWnd, GetWindow( hWnd, GW_CHILD ), wMsg, wParam, lParam );
}
Si hacemos esta modificación en La Clase TMdiFrame Method Command:
Code: Select all | Expand
METHOD Command( nWParam, nLParam ) CLASS TMdiFrame
local lToolBar := ( GetClassName( nLParam ) == "ToolbarWindow32" )
if ::oWndActive != nil
do case
case nWParam == 61472
::oWndActive:Minimize()
case nWParam == 61728
::oWndActive:Restore()
case nWParam == 61536
::oWndActive:End()
endcase
endif
do case
case ! lToolBar .and. nWParam - If( IsExe64(), 1791, 0 ) < 100 // MdiChild Menu Selection
nWParam -= 1791
if nWParam >= 1 .and. nWParam <= Len( ::oWndClient:aWnd )
::oWndClient:aWnd[ nWParam ]:SetFocus()
endif
otherwise
::Super:Command( nWParam, nLParam )
endcase
return 0
Asi que este va a ser el código definitivo. Funciona bien samples/test2003.prg sin necesidad de la función WinRun() que incluye y funciona bien con FWH 64 tambien

Re: Nuevo FWH 13.07
Posted: Thu Aug 01, 2013 4:28 pm
by lucasdebeltran
Antonio,
Por favor, ¿podrías esperar hasta solucionar los errores del rpreview que te he comentado?.
Adicionalmente, en el icono, las opciones PDF y WORD format, en español deben llamarse formato o quitar el format.
Muchas gracias.
Re: Nuevo FWH 13.07
Posted: Thu Aug 01, 2013 4:36 pm
by Antonio Linares
Lucas,
En el preview el botón de exportar a PDF funciona en 32 bits y de momento no funciona en 64 bits. No sabemos lo que tardaremos en solucionar esto. Igual ocurre con la opción de email, teneis que probarla en distintas configuraciones y que nos comenteis los resultados.
Pero no podemos esperar a todo eso para publicar un nuevo build que es necesario ya

Re: Nuevo FWH 13.07
Posted: Thu Aug 01, 2013 4:47 pm
by Antonio Linares
Lucas,
Las traducciones en prev64sp.dll y los literales que faltaban se han incluido debidamente traducidos