FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Nuevo FWH 13.07
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: Nuevo FWH 13.07
Posted: Wed Jul 31, 2013 04:36 PM

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 :-)

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 1516
Joined: Thu May 27, 2010 02:06 PM
Re: Nuevo FWH 13.07
Posted: Wed Jul 31, 2013 04:47 PM
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.
Posts: 694
Joined: Fri Oct 07, 2005 06:58 AM
Re: Nuevo FWH 13.07
Posted: Wed Jul 31, 2013 05:17 PM

Antonio,
Funciono. Muchas gracias

Un saludo

Fernando Gonz谩lez Diez

ALSIS Sistemas Inform谩ticos
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: Nuevo FWH 13.07
Posted: Wed Jul 31, 2013 05:31 PM

Manuel,

Entendido, gracias :-)

Te agradezco si me proporcionas un ejemplo de lo que comentas de las MDI, gracias

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 1516
Joined: Thu May 27, 2010 02:06 PM
Re: Nuevo FWH 13.07
Posted: Wed Jul 31, 2013 09:23 PM
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?c

Para 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 (fw): Select all Collapse
// 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.
Posts: 1516
Joined: Thu May 27, 2010 02:06 PM
Re: Nuevo FWH 13.07
Posted: Thu Aug 01, 2013 08:34 AM
Respecto al redimensionado del listview . Ya lo tengo funcionanado . El c贸digo
Code (fw): Select all Collapse
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
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: Nuevo FWH 13.07
Posted: Thu Aug 01, 2013 12:00 PM
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 (fw): Select all Collapse
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 (fw): Select all Collapse
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.
regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: Nuevo FWH 13.07
Posted: Thu Aug 01, 2013 12:56 PM
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
regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: Nuevo FWH 13.07
Posted: Thu Aug 01, 2013 01:21 PM

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

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: Nuevo FWH 13.07
Posted: Thu Aug 01, 2013 02:32 PM

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.

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: Nuevo FWH 13.07
Posted: Thu Aug 01, 2013 03:17 PM
Bueno, pues pese a lo que diga Paul Dilascia, este el es c贸digo que vamos a usar:

Code (fw): Select all Collapse
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.
regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: Nuevo FWH 13.07
Posted: Thu Aug 01, 2013 04:05 PM
Podemos mantener el c贸digo de Paul Dilascia:

Code (fw): Select all Collapse
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 (fw): Select all Collapse
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 :-)
regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 1303
Joined: Tue Jul 21, 2009 08:12 AM
Re: Nuevo FWH 13.07
Posted: Thu Aug 01, 2013 04:28 PM

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.

Muchas gracias. Many thanks.



Un saludo, Best regards,



Harbour 3.2.0dev, Borland C++ 5.82 y FWH 13.06 [producci贸n]



Implementando MSVC 2010, FWH64 y ADO.



Abandonando uso xHarbour y SQLRDD.
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: Nuevo FWH 13.07
Posted: Thu Aug 01, 2013 04:36 PM

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 :-)

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: Nuevo FWH 13.07
Posted: Thu Aug 01, 2013 04:47 PM

Lucas,

Las traducciones en prev64sp.dll y los literales que faltaban se han incluido debidamente traducidos

regards, saludos

Antonio Linares
www.fivetechsoft.com