Desaparcene Says con tecla ALT

Desaparcene Says con tecla ALT

Postby Francisco Horta » Tue Dec 13, 2011 10:05 pm

Hola foro,

pues eso, tengo un dialogo desde recurso, y al presionar la tecla ALT todos mis SAYS desaparecen, e visto algo en el foro, pero no me da solucion
he probando usando un BRUSH y el GRADIENTFILL y de las 2 formas desapaecen,,
fwh1103 xharbour windows 7
salu2
paco
____________________
Paco
Francisco Horta
 
Posts: 845
Joined: Sun Oct 09, 2005 5:36 pm
Location: la laguna, mexico.

Re: Desaparcene Says con tecla ALT

Postby Antonio Linares » Tue Dec 13, 2011 10:15 pm

Paco,

Prueba añadiendo esta función a tu aplicación:

function IsAppThemed()
return .F.

Aqui en este hilo comentamos el tema:
viewtopic.php?f=3&t=22979
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: Desaparcene Says con tecla ALT

Postby Francisco Horta » Tue Dec 13, 2011 10:21 pm

Antonio,

Ahora si no desaparecen los SAY pero no toma el fondo transparente,

DEFINE DIALOG ::oDlgVe RESOURCE "DLG_PDVVENTAS" ;
FONT oApp:fBold BRUSH oBrush

::oDlgVe:lHelpIcon := .F.

REDEFINE SAY PROMPT "Mesa: " + StrZero(::aMesas[pnNumMesa,1],2) ;
ID 901 OF ::oDlgVe ;
FONT ::oFont[2] ;
COLOR Brown_Dark ;
TRANSPARENT

adjunto imagen
Image

Uploaded with ImageShack.us

gracias
paco
____________________
Paco
Francisco Horta
 
Posts: 845
Joined: Sun Oct 09, 2005 5:36 pm
Location: la laguna, mexico.

Re: Desaparcene Says con tecla ALT

Postby carlos vargas » Tue Dec 13, 2011 10:30 pm

solo como prueba
pon:
Code: Select all  Expand view  RUN

ACTIVATE DIALOGO oDlg CENETER ON INIT FixSays( oDlg:hWnd )
 


cambia oDlg por la variable que contiene tu dialogo y comenta como te fue

salu2
Salu2
Carlos Vargas
Desde Managua, Nicaragua (CA)
User avatar
carlos vargas
 
Posts: 1721
Joined: Tue Oct 11, 2005 5:01 pm
Location: Nicaragua

Re: Desaparcene Says con tecla ALT

Postby Francisco Horta » Tue Dec 13, 2011 10:43 pm

Que tal Carlos,

Funcionó !! el único detalle es que los say desde recurso en las propiedades lo tenia centrado y ese valor ya no lo respeto,,,
en otro dialogo con 2 buttonbmp y al presionar la tecla ALT, los textos de los botones y los say los pone en negritas,,, tengo un brush en el dialogo, pero los say no los estoy redefiniendo, estos estan tan cual en el recurso.
saludos
paco
____________________
Paco
Francisco Horta
 
Posts: 845
Joined: Sun Oct 09, 2005 5:36 pm
Location: la laguna, mexico.

Re: Desaparcene Says con tecla ALT

Postby Francisco Horta » Tue Dec 13, 2011 11:00 pm

con el fixsays() el ultimo caracter me lo elimina si tengo "Producto:" me pone "Producto", en la fecha me la deja "13 de Diciebre de 201"
algo mas?
:-(
saludos
paco
____________________
Paco
Francisco Horta
 
Posts: 845
Joined: Sun Oct 09, 2005 5:36 pm
Location: la laguna, mexico.

Re: Desaparcene Says con tecla ALT

Postby carlos vargas » Tue Dec 13, 2011 11:07 pm

Antonio aun esta trabajando para corregir algunos detalles, como te comento antonio sigue el hilo de la discucion, y encontraras que es un trabajo en progreso.

ese codigo es como un atajo, no es recomendable. :-)

realmente ese codigo es ejecutado en el metodo initiate en tdialog, cuando pones la clausula TRANSPARENT

Code: Select all  Expand view  RUN

DEFINE DIALOG oDlg ... TRANSPARENTE
 


agrega un nuevo prg a tu proyecto, que contenga este codigo
Code: Select all  Expand view  RUN

#pragma BEGINDUMP

#include <hbapi.h>
#include <windows.h>

void WindowBoxBlack( HDC hDC, RECT * pRect );

LRESULT static CALLBACK LabelProc( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam )
{
   if( uMsg == WM_ERASEBKGND )
   {
      return 1;
   }
   else if( uMsg == WM_UPDATEUISTATE )
   {
      LONG lResult = CallWindowProc( ( WNDPROC ) GetProp( hWnd, "__FWTRANS" ), hWnd, uMsg, wParam, lParam );
      InvalidateRect( hWnd, NULL, TRUE );
      return lResult;
   }
   else if( uMsg == WM_PAINT )
   {
      PAINTSTRUCT ps;
      char text[ 256 ];
      RECT rct;
      HDC hDC = BeginPaint( hWnd, &ps );
      HGDIOBJ hOldFont;

      GetWindowText( hWnd, text, 255 );
      GetClientRect( hWnd, &rct );
      SetBkMode( hDC, TRANSPARENT );
      SelectObject( hDC, GetStockObject( DEFAULT_GUI_FONT ) );

      SendMessage( GetParent( hWnd ), WM_CTLCOLORSTATIC, ( WPARAM ) hDC, ( LPARAM ) hWnd );
      hOldFont = SelectObject( hDC, ( HGDIOBJ ) SendMessage( hWnd, WM_GETFONT, 0, 0 ) );

      if( ( GetWindowLong( hWnd, GWL_STYLE ) & SS_BLACKFRAME ) ==   SS_BLACKFRAME )
      {
         RECT rct;
         GetClientRect( hWnd, &rct );
         WindowBoxBlack( hDC, &rct );
      }
      else if( GetWindowLong( hWnd, GWL_STYLE ) & SS_CENTER )
      {
         DrawText( hDC, text, lstrlen( text ), &rct,  DT_CENTER | DT_WORDBREAK );
      }
      else if( GetWindowLong( hWnd, GWL_STYLE ) & SS_RIGHT )
      {
         DrawText( hDC, text, lstrlen( text ), &rct,  DT_RIGHT | DT_WORDBREAK );
      }
      else if( GetWindowLong( hWnd, GWL_STYLE ) & SS_LEFTNOWORDWRAP )
      {
         DrawText( hDC, text, lstrlen( text ), &rct,  DT_LEFT );
      }
      else
      {
         DrawText( hDC, text, lstrlen( text ), &rct,  DT_LEFT );
      }
      SelectObject( hDC, hOldFont );
      EndPaint( hWnd, &ps );
      return 0;
   }
   else
   {
      return CallWindowProc( ( WNDPROC ) GetProp( hWnd, "__FWTRANS" ), hWnd, uMsg, wParam, lParam );
   }
}

HB_FUNC( FIXSAYS )
{
   HWND hDlg = ( HWND ) hb_parnl( 1 );
   HWND hCtrl = GetWindow( hDlg, GW_CHILD );
   char className[ 64 ];
   WNDPROC pLabelProc;

   while( hCtrl != NULL )
   {
      GetClassName( hCtrl, className, sizeof( className ) );

      if( ! lstrcmp( "Static", className ) && ! ( ( GetWindowLong( hCtrl, GWL_STYLE ) & SS_ICON ) == SS_ICON ) && ! ( ( GetWindowLong( hCtrl, GWL_STYLE ) & WS_BORDER ) == WS_BORDER ) )
      {
         if( GetWindowLong( hCtrl, GWL_WNDPROC ) != ( LONG ) LabelProc )
         {
            pLabelProc = ( WNDPROC ) SetWindowLong( hCtrl, GWL_WNDPROC, ( LONG ) LabelProc );
            SetProp( hCtrl, "__FWTRANS", ( HANDLE ) pLabelProc );
         }
      }

      hCtrl = GetWindow( hCtrl, GW_HWNDNEXT );

   }
}

#pragma ENDDUMP

 


tambiem prueba redefinir esos says. yo estoy haciendo eso. mientras se resuelve el fallo.

salu2
Salu2
Carlos Vargas
Desde Managua, Nicaragua (CA)
User avatar
carlos vargas
 
Posts: 1721
Joined: Tue Oct 11, 2005 5:01 pm
Location: Nicaragua

Re: Desaparcene Says con tecla ALT

Postby Francisco Horta » Tue Dec 13, 2011 11:23 pm

carlos,

fijate que como son varios y eso de redefinirlos y hide y show, opte por ponerles un espacio en blanco al final de cada say y solucionado, pequeño truco a la mexicana, pero funciona, esperamos la respuesta de Antonio,
saludos
Paco
____________________
Paco
Francisco Horta
 
Posts: 845
Joined: Sun Oct 09, 2005 5:36 pm
Location: la laguna, mexico.

Re: Desaparcene Says con tecla ALT

Postby carlos vargas » Tue Dec 13, 2011 11:45 pm

con el fixsay se soluciona lo del ultimo char.
el codigo que te puse es el fuente de fixsays

saul2
Salu2
Carlos Vargas
Desde Managua, Nicaragua (CA)
User avatar
carlos vargas
 
Posts: 1721
Joined: Tue Oct 11, 2005 5:01 pm
Location: Nicaragua

Re: Desaparcene Says con tecla ALT

Postby Antonio Linares » Wed Dec 14, 2011 12:55 am

Arreglado FixSays() para que no haga el efecto "negrita" de pintado:

viewtopic.php?f=3&t=22979&p=123701#p123701
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: Desaparecen Says con tecla ALT (SOLVED)

Postby Francisco Horta » Thu Dec 15, 2011 3:44 pm

Hola,

Pues probe quitando:
Function IsAppThemed()
Return(.f.)

y en el ON INIT del Dialogo puse Fixsays() y le agregue a mis says al final un espacio en blanco, y
ya no elimina los say con la tecla ALT y respeta la transparencia, nomas no me respeta el centrado del objeto say desde las propiedades en el recurso.
Antonio, no del cambio a negritas, no encontre donde hacer la modificacion
salu2
paco
Francisco Horta
 
Posts: 845
Joined: Sun Oct 09, 2005 5:36 pm
Location: la laguna, mexico.

Re: Desaparcene Says con tecla ALT

Postby Antonio Linares » Thu Dec 15, 2011 4:51 pm

Paco,

Si el diálogo re repinta (llamando a oDlg:Refresh( .F. )) los SAYs se iran viendo más oscuros, salvo que se use el nuevo cambio que hemos implementado. Puedes verificarlo ? gracias
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: Desaparcene Says con tecla ALT

Postby Francisco Horta » Thu Dec 15, 2011 5:03 pm

Antonio,

El Dialogo lo defino asi:

DEFINE DIALOG oDlg ;
RESOURCE "DLG_ACCESO" ;
BRUSH oBrush ;
TRANSPARENT ;
FONT ::fNormal

REDEFINE SAY ID 103 OF oDlg
REDEFINE SAY ID 104 OF oDlg

redefiniendo los say es la unica manera en que no pone en negritas los say y los desaparece, al menos voy a tener que redefinir todos mis says, esto sin usar fixsays() en el on init del dialogo

gracias
salu2
paco
____________________
Paco
Francisco Horta
 
Posts: 845
Joined: Sun Oct 09, 2005 5:36 pm
Location: la laguna, mexico.

Re: Desaparcene Says con tecla ALT

Postby Antonio Linares » Thu Dec 15, 2011 5:24 pm

Paco,

Precisamente eso es lo que hace FixSays(): evitar que se tengan que redefinir todos los SAYs, lo cual seria un trabajo enorme.

No te funciona bien FixSays() ?
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


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 106 guests