Nuevo FWH 13.07

Re: Nuevo FWH 13.07

Postby Antonio Linares » Wed Jul 31, 2013 4: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
User avatar
Antonio Linares
Site Admin
 
Posts: 42080
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Nuevo FWH 13.07

Postby mastintin » Wed Jul 31, 2013 4: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.
User avatar
mastintin
 
Posts: 1516
Joined: Thu May 27, 2010 2:06 pm

Re: Nuevo FWH 13.07

Postby fgondi » Wed Jul 31, 2013 5:17 pm

Antonio,
Funciono. Muchas gracias
Un saludo
Fernando González Diez
ALSIS Sistemas Informáticos
User avatar
fgondi
 
Posts: 694
Joined: Fri Oct 07, 2005 6:58 am
Location: Palencia, España

Re: Nuevo FWH 13.07

Postby Antonio Linares » Wed Jul 31, 2013 5: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
User avatar
Antonio Linares
Site Admin
 
Posts: 42080
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Nuevo FWH 13.07

Postby mastintin » Wed Jul 31, 2013 9: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: Select all  Expand view

// 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.
User avatar
mastintin
 
Posts: 1516
Joined: Thu May 27, 2010 2:06 pm

Re: Nuevo FWH 13.07

Postby mastintin » Thu Aug 01, 2013 8:34 am

Respecto al redimensionado del listview . Ya lo tengo funcionanado . El código
Code: Select all  Expand view


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

 
User avatar
mastintin
 
Posts: 1516
Joined: Thu May 27, 2010 2:06 pm

Re: Nuevo FWH 13.07

Postby Antonio Linares » 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: Select all  Expand view
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 view
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
User avatar
Antonio Linares
Site Admin
 
Posts: 42080
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Nuevo FWH 13.07

Postby Antonio Linares » 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:

Image

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
User avatar
Antonio Linares
Site Admin
 
Posts: 42080
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Nuevo FWH 13.07

Postby Antonio Linares » Thu Aug 01, 2013 1: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
User avatar
Antonio Linares
Site Admin
 
Posts: 42080
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Nuevo FWH 13.07

Postby Antonio Linares » Thu Aug 01, 2013 2: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
User avatar
Antonio Linares
Site Admin
 
Posts: 42080
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Nuevo FWH 13.07

Postby Antonio Linares » Thu Aug 01, 2013 3:17 pm

Bueno, pues pese a lo que diga Paul Dilascia, este el es código que vamos a usar:

Code: Select all  Expand view
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
User avatar
Antonio Linares
Site Admin
 
Posts: 42080
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Nuevo FWH 13.07

Postby Antonio Linares » Thu Aug 01, 2013 4:05 pm

Podemos mantener el código de Paul Dilascia:

Code: Select all  Expand view
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 view
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
User avatar
Antonio Linares
Site Admin
 
Posts: 42080
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Nuevo FWH 13.07

Postby lucasdebeltran » Thu Aug 01, 2013 4: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.
User avatar
lucasdebeltran
 
Posts: 1303
Joined: Tue Jul 21, 2009 8:12 am

Re: Nuevo FWH 13.07

Postby Antonio Linares » Thu Aug 01, 2013 4: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
User avatar
Antonio Linares
Site Admin
 
Posts: 42080
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Nuevo FWH 13.07

Postby Antonio Linares » Thu Aug 01, 2013 4: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
User avatar
Antonio Linares
Site Admin
 
Posts: 42080
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

PreviousNext

Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Google [Bot] and 48 guests