Ayuda con REDEFINE GET ... BITMAP ... ACTION (Solucionado)

Ayuda con REDEFINE GET ... BITMAP ... ACTION (Solucionado)

Postby Blessed » Sun Aug 02, 2009 4:40 pm

Buen dia amigos del foro:

Estoy haciendo uso de Gets con Boton (No se si llamarlo BTNGet) y no esta funcionando adecuadamente.
Cuando se pulsa el boton se desencadena la accion correctamente, pero al retorno no se refresca el contenido del Get y tampoco se evalua el Get como tal.
Lo del refrescamiento lo solucionaba forzando un oGet:Refresh() pero con la FWH 9.06 ya ni esto puedo hacer.
Pero y como solucionar lo del VALID? Ya que el foco al parecer queda en el BOTON del GET.
Este es mi codigo :
Code: Select all  Expand view
  REDEFINE GET oGet VAR cAct_Codig ;
            ID 795 OF oDlg UPDATE PICTURE "###-##-##" ;
          BITMAP "lista" ACTION Consulta @cAct_Codig ) ;
            VALID ValCTA( @cAct_Codig, oGet, @cDescr )
 


Busque en el foro y halle una falla similar.

http://forums.fivetechsupport.com/viewtopic.php?f=6&t=12467&p=62781&hilit=hotkey#p62781

Pero con la clase BUTTON.

Saludos desde Honduras.
Last edited by Blessed on Wed Feb 10, 2010 7:56 pm, edited 1 time in total.
Oscar A. Martinez
http://www.multisofthn.com
Honduras, Centro America
xHarbour Enterprise 1.2.2, Fivewin 13.06
User avatar
Blessed
 
Posts: 243
Joined: Wed Sep 19, 2007 4:32 pm
Location: Honduras, C.A.

Re: Ayuda con REDEFINE GET ... BITMAP ... ACTION .. FWH 9.06

Postby Andrés González » Mon Aug 03, 2009 9:17 am

No te puedo comentar nada si en la versión fwh 9.06 han modificado algo o no, puesto que aun no lo tengo. Pero si efectivamente ese es el funcionamiento de ACTION del get. Te obliga a pulsar un nuevo intro para salir del get, lo cual evalua de nuevo el VALID. Plantee la misma pregunta hace muy poco y la respuesta ha sido en cierto modo elegante. Fijate en este hilo sobre lo mismo:

http://forums.fivetechsupport.com/viewtopic.php?f=6&t=16188&p=83926&hilit=forzar+salida#p83926

Por otra parte que no te refresque es porque deberias poner UPDATE como clausula final (no se si influye que la tengas al principio), siempre y cuando pases las variables por referencia (@variable,....) que veo que lo haces, ya que al ser modificadas tendría que actualizarse, lo que tu haces con oGet:Refresh() es volver a pintar-refrescar todo el objeto, que en cierto modo es lo mismo. La clausula update me funciona perfectamente con la 8.11.
Saludos

Andrés González desde Mallorca
User avatar
Andrés González
 
Posts: 627
Joined: Thu Jan 19, 2006 10:45 am
Location: Mallorca

Re: Ayuda con REDEFINE GET ... BITMAP ... ACTION .. FWH 9.06

Postby Blessed » Mon Aug 03, 2009 2:49 pm

Andrés Gracias por tu respuesta,

Ordene el codigo como lo indica FIvewin.ch, y no resulto.
Tambien aplique la sugeriancia de Daniel del Post al que me referiste y tampoco me funciona.

Creo que no puedo esperar ya que el cliente se habia acostumbrado a ese gadget, asi que tendre que implementar una solucion no sofisticada, un Get comun y corriente con un BtnBMP al lado, no muy elegante, pero bueno que mas... de esa manera lo tenia adelante andes de inclinarme por una elegante REDEFINE GET...BITMAP...ACTION

Saludos :?
Oscar A. Martinez
http://www.multisofthn.com
Honduras, Centro America
xHarbour Enterprise 1.2.2, Fivewin 13.06
User avatar
Blessed
 
Posts: 243
Joined: Wed Sep 19, 2007 4:32 pm
Location: Honduras, C.A.

Re: Ayuda con REDEFINE GET ... BITMAP ... ACTION .. FWH 9.06

Postby Andrés González » Mon Aug 03, 2009 3:15 pm

Estas seguro de que pones correctamente la función postmessage:
Code: Select all  Expand view

  @ f_px[n] - nInicio + 0.3 , f_py[n] - 2  GET &oGet VAR &v_temp OF  oDlgAlta ;
                                                            SIZE    v_long , v_high ;
                                                            PICTURE &p               ;
                                                            VALID   &v_fval          ;
                                                            ACTION  ( &v_fval, PostMessage( ::hWnd, WM_KEYDOWN, 13 ) ) ;
                                                            UPDATE
 


La funcion &v_fval guarda una funcion igual que la tuya pero ejecuta una diferente para cada objeto get. El mio forma parte de un FOR ... NEXT, ya que cojo los get de forma dinámica. En tu caso al ser un objeto conocido basta que pongas el handle oGet:hWnd en vez de ::hWnd. Fijate en el codigo tget que en mi caso es de la version 8.11 pero seguro que no debe haber cambiado mucho. Si te fijas la clausa ACTION ejecuta el codeblock y hagas lo que hagas siempre termina dándole el foco al get y por lo tanto tras el codeblock siempre vuelve al get que estas editando. Con el postmessage obligas a ejecutar la pulsación en ultimo lugar, después de recibir el foco de nuevo. Hice mil pruebas hasta que BIEL MORAGUES me abrió los ojos ya que hagas lo que hagas siempre vuelve a dar el foco al propio objeto y por lo tanto es difícil de que lo consigas sin cambiar ese trozo de código. Pero como has leído en el hilo, postmessage envía un mensaje a ese objeto que se ejecuta siempre en ultimo lugar y por lo tanto fuera del bucle que obliga siempe el a coger el propio foco.
Saludos

Andrés González desde Mallorca
User avatar
Andrés González
 
Posts: 627
Joined: Thu Jan 19, 2006 10:45 am
Location: Mallorca

Re: Ayuda con REDEFINE GET ... BITMAP ... ACTION .. FWH 9.06

Postby Blessed » Tue Feb 09, 2010 11:06 pm

Amigos del foro:

Una pregunta, acerca del GET...BITMAP...ACTION, en la 9.06 no funcionaba correctamente; lo hace bien en las versiones posteriores.

Saludos desde Honduras :)
Oscar A. Martinez
http://www.multisofthn.com
Honduras, Centro America
xHarbour Enterprise 1.2.2, Fivewin 13.06
User avatar
Blessed
 
Posts: 243
Joined: Wed Sep 19, 2007 4:32 pm
Location: Honduras, C.A.

Re: Ayuda con REDEFINE GET ... BITMAP ... ACTION .. FWH 9.06

Postby Antonio Linares » Tue Feb 09, 2010 11:54 pm

Oscar,

Este código parece funcionar correctamente aqui. Puedes probarlo y ver si te funciona bien a ti ? gracias

Code: Select all  Expand view
#include "FiveWin.ch"

function Main()

   local oWnd, oGet, cTest := Space( 20 ), cAnother := "Another Get"

   DEFINE WINDOW oWnd COLOR "N/W*"

   @ 2, 2 GET oGet VAR cTest SIZE 110, 22 ;
      ACTION ( cTest := "A test", oGet:Refresh(), oGet:SetFocus() ) BITMAP "..\bitmaps\16x16\find.bmp" ;
      VALID ! Empty( cTest )
     
   @ 4, 2 GET cAnother SIZE 110, 22  

   ACTIVATE WINDOW oWnd

return nil
 
regards, saludos

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

Re: Ayuda con REDEFINE GET ... BITMAP ... ACTION .. FWH 9.06

Postby Blessed » Wed Feb 10, 2010 3:51 pm

Antonio, Gracias por atender

Ya habia usado una recomendacion similar lo use tanto en el codigo donde me funciona y al querer intentar colocarlo en la clase TGET, no lo he hecho funcionar; por lo cual he engordado el codigo.
Code: Select all  Expand view

METHOD CreateButton() CLASS TGet

   local oThis := Self
   local hBitmap
   local nBmpWidth := 1
   local lFileBmp := .t.
   
   if ValType( ::bAction ) == "B" .and. Upper( ::ClassName() ) == "TGET"
      if Empty( ::cBmpName )
         @ 0, ::nWidth - ::nHeight BUTTONBMP ::oBtn OF Self ;
         ACTION ( Eval( oThis:bAction, oThis ), oThis:Refresh(), oThis:SetFocus() ) ;
 


Y como no he usado la ribbonbar estoy queriendo actualizar;

Saludos
Oscar A. Martinez
http://www.multisofthn.com
Honduras, Centro America
xHarbour Enterprise 1.2.2, Fivewin 13.06
User avatar
Blessed
 
Posts: 243
Joined: Wed Sep 19, 2007 4:32 pm
Location: Honduras, C.A.

Re: Ayuda con REDEFINE GET ... BITMAP ... ACTION .. FWH 9.06

Postby Antonio Linares » Wed Feb 10, 2010 4:11 pm

Oscar,

Lo has modificado tambien en el "else" de ese último "if" ?
regards, saludos

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

Re: Ayuda con REDEFINE GET ... BITMAP ... ACTION .. FWH 9.06

Postby Blessed » Wed Feb 10, 2010 7:55 pm

Antonio, Gracias

Veo que me falta mucho por aprender, hice omision de ello, he hecho la correccion y funciona correctamente.

Saludos desde Honduras :)
Oscar A. Martinez
http://www.multisofthn.com
Honduras, Centro America
xHarbour Enterprise 1.2.2, Fivewin 13.06
User avatar
Blessed
 
Posts: 243
Joined: Wed Sep 19, 2007 4:32 pm
Location: Honduras, C.A.

Re: Ayuda con REDEFINE GET ... BITMAP ... ACTION (Solucionado)

Postby Blessed » Thu Feb 11, 2010 11:18 am

Saludos a todos dejo aqui me funciono, no se si es prudente el uso de la funcion __Keyboard(), en este punto veremos los resultados :)
El cambio ha sido en PostMessage( oThis:Refresh, oThis:SetFocus(), WM_KEYDOWN, __Keyboard( Chr( 13 ) ) ) )

Code: Select all  Expand view

   if Empty( ::cBmpName )
      @ 0, ::nWidth - ::nHeight BUTTONBMP ::oBtn OF Self ;
      ACTION ( Eval( oThis:bAction, oThis ), PostMessage( oThis:Refresh, oThis:SetFocus(), WM_KEYDOWN, __Keyboard( Chr( 13 ) ) ) ) ;
      SIZE ::nHeight - 4, ::nHeight - 4 PIXEL

      if Empty( ::oBtn:hBitmap )
         ::oBtn:SetText( "..." )
      endif      
   else

      hBitmap   = If( ( lFileBmp := File( ::cBmpName ) ), ReadBitmap( 0, ::cBmpName ),;
                  LoadBitmap( GetResources(), ::cBmpName ) )        

      if ::lAdjustBtn
         nBmpWidth := nBmpWidth( hBitmap ) + 5
         ::SetMargins( 1, nBmpWidth )
      else
         nBmpWidth := ::nHeight - 4
      endif
     
      if ::lBtnTransparent
         ::oBtn := TBtnBmp():New(0, ::nWidth - nBmpWidth - 4, nBmpWidth, ::nHeight - 4,;
         if ( !lFileBmp, ::cBmpName, ),,if ( lFileBmp, ::cBmpName, ),,{|| Eval( oThis:bAction, oThis ), PostMessage( oThis:Refresh, oThis:SetFocus(), WM_KEYDOWN, __Keyboard( Chr( 13 ) ) ) },;
         Self,,,,,,,,,.f.)
         ::oBtn:lTransparent := ::lBtnTransparent
      else
         ::oBtn := TButtonBmp():New(0, ::nWidth - nBmpWidth - 4, , Self, {|| Eval( oThis:bAction, oThis ), PostMessage( oThis:Refresh, oThis:SetFocus(), WM_KEYDOWN, __Keyboard( Chr( 13 ) ) ) }, ;
         nBmpWidth, ::nHeight - 4,,,,.t.,,,,,,,::cBmpName )
      endif

      DeleteObject( hBitmap )          

   endif  
 


Saludos desde Honduras
Oscar A. Martinez
http://www.multisofthn.com
Honduras, Centro America
xHarbour Enterprise 1.2.2, Fivewin 13.06
User avatar
Blessed
 
Posts: 243
Joined: Wed Sep 19, 2007 4:32 pm
Location: Honduras, C.A.


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 41 guests