Page 3 of 3

Re: Luz en la caja del get

PostPosted: Sat Nov 15, 2014 3:10 pm
by Antonio Linares
Paco,

Para añadir una funcionalidad asi a FWH más usuarios deberían estar de acuerdo. No es una funcionalidad estandard de Windows y me gusta no añadirle cosas extra a FWH que lo hacen crecer y que algunas veces no son útiles para todos. Confio en que me entiendas :-)

Re: Luz en la caja del get

PostPosted: Sat Nov 15, 2014 3:43 pm
by hmpaquito
Claro que si Antonio, te entiendo perfectamente.
Pero me parece que siempre hay una eterna disyuntiva: Esperar a que alguien lo pida u ofrecer mejoras sin que alguien las pida.
Sin la segunda opcion seria dificil que las cosas (=software) crecieran/ mejoraran.

Re: Luz en la caja del get

PostPosted: Sat Nov 15, 2014 7:32 pm
by devtuxtla
Hola Antonio.

En lo personal, apoyo la idea de incluirlo en FW, ya que estamos utilizando en nuestras aplicaciones, algunas ideas parecidas cuando hacemos los GET's, para indicarle al usuario cual es el get activo, esta idea es mejor que la que hemos aplicado.

Saludos

Re: Luz en la caja del get

PostPosted: Sat Nov 15, 2014 8:59 pm
by sysctrl2
que bonito control,
yo que no uso resources,
me viene de maravilla.
saludos..

Re: Luz en la caja del get

PostPosted: Sun Nov 16, 2014 1:53 am
by carlos vargas
ok,es mi opinión que para que fuera incluido en fwh deberían controles como combobox, buttons, radiobuttons tener esa misma funcionalidad ya que no se vería bien que solo un tipo de control tenga ese efecto.

Re: Luz en la caja del get

PostPosted: Sun Nov 16, 2014 9:53 am
by mastintin
Mi opinión es que esto solo es un "ejercicio de funcionamiento" . Está muy verde , no funciona bien con recursos , no funciona bien con fondos ni texturas en los diálogos, el cruce de los degradados en las esquinas es bastante evidente. Para incluirlo tendría que funcionar en los demás controles también .
Estas cosas cambian rápido , este estilo de resaltado comienzo con macosx hace tiempo pero a día de hoy Apple lo ha quitado por otro sin degradados ( como Microsoft en win8 que quita todo degradado existente ) .
Lo que mostraron es de una página web realizada en jQuery ( probablemente) y se hace con estilos css , lo que quiere decir que las funciones que lo realizan están dentro del motor de renderizado de los navegadores y cada uno realizará "su" degradado .
Para hacerlo mas correctamente ,tendríamos que usar el código inicial de Antonio ( el que coloca rectangulos que cambian de color ) pero en vez usar la funcion nRgb para los colores tendría que ser una función nRGBA ( que no se si existe ) , ademas los degradados hacen unas "aguas" ( no son constantes ) , supongo que se podría conseguir un código por internet que lo realice.
Dos cosas :
1.- Si interesa resaltar el get con foco ,tenemos ya el cambio de fondo, pero se podría implementar un cambio de color de marco que lo haga mas evidente incluso con cambio de grosor de éste y sería mas fácil de implementar en todos los controles y al ser en la superficie del control no machacaría los fondos .
2.- Necesitamos una función nRGBA que nos permita realizar degradados a transparente mas fácilmente . Antoniooooo.... :D

Re: Luz en la caja del get

PostPosted: Mon Nov 17, 2014 6:38 am
by Antonio Linares
Manuel,

Tenemos que decidir si usar rectángulos (con esquinas redondeadas) ó degradados.

Y una vez decidamos eso, ver la opción de que sean transparentes y se mezclen con el fondo.

Si hacemos una función lo suficientemente genérica podriamos llamarla para cualquier control y entonces incluirla estandard (aunque opcional) en FWH.

Re: Luz en la caja del get

PostPosted: Wed Nov 19, 2014 11:21 am
by Carlos Mora
Hola gente,
tener algo que ayude a resaltar el control activo de esa forma tan estética se ve fantástico.
Respecto de la implementación se me ocurren algunas ideas:
- Para no afectar el código existente, ¿Por que no crear una nueva clase? con un par de toques en los comandos y redefines se usa una u otra, sin perjuicio de lo que ya hay escrito.
- Los problemas de pintado vienen porque el area pintada pertenece al diálogo/windows y no al control, con lo que se afecta todo el diálogo.
¿Que opinais de tener un 'resaltador', un bitmap móvil, que se adapta al tamaño del control que queremos resaltar? Se pinta con canal alpha y los degradados, y hace el pintado independiente del control, con lo que valdría también para otras clases distintas de la tGet Tendríamos uno solo por Win/Dlg, se movería 'debajo' del control que toma foco (o desaparecería si el control no hace uso del resaltado), No habría que modificar las clases existentes, o tal vez muy poco, disminuyendo el impacto sobre el código existente.

Bueno, esos son mis 2 cents. :)

Re: Luz en la caja del get

PostPosted: Wed Nov 19, 2014 2:09 pm
by mastintin
otra versión ... con gdi+ .
Code: Select all  Expand view

function LightBorder( oGet,lfocus,lRounded )

   local hDC := oGet:oWnd:GetDC()
   local hBrush, hOldBrush, n
   local aTopLeft, aBottomRight
   local hPen1
   local aRect := GetClientRect( oGet:hWnd )
   local oGraphics := Graphics():New( hDC ) //Graphic-Object, High Quality is standard
   local oPen
   
  local nRed := nRGBRed( oget:ownd:nClrPane )
  local nGreen := nRGBGreen( oget:ownd:nClrPane )
  local nBlue := nRGBBlue( oget:ownd:nClrPane )
 

 
    if lFocus
      hPen1 = CreatePen( PS_SOLID, 1,  nRGB( 102 , 175, 233 ) )
     else
      hPen1 = CreatePen( PS_SOLID, 1,  nRGB( 180 , 180, 180 ) )
    endif
 
   SelectObject( hDC,hPen1)
     
    aTopLeft = ClientToScreen( oGet:hWnd, { aRect[1], aRect[2] } )
    aTopLeft = ScreenToClient( oGet:oWnd:hWnd, aTopLeft )

    aBottomRight = ClientToScreen( oGet:hWnd, {aRect[3], aRect[4] } )
    aBottomRight = ScreenToClient( oGet:oWnd:hWnd, aBottomRight )
   
     SetBkMode( hDC , 1 )
       
 
     if lRounded
        RoundRect( hDC, aTopLeft[2]-4, aTopLeft[1]-2, aBottomRight[ 2 ]+3,  aBottomRight[ 1 ]+2 , 7, 7 )
    else
        Rectangle( hDC, aTopLeft[1]-2, aTopLeft[2]-2, aBottomRight[ 1 ]+2,  aBottomRight[ 2 ]+2 )
    endif
   
     DeleteObject( hpen1 )
     
       
    for n = 1 to 10 // 10 es mejor
           
      if lFocus
        oPen := Pen():New( 255-n*25 , 214, 234, 249 , 1 , .T.)
      else
        oPen := Pen():New( 255 , nRed, nGreen, nBlue , 1 , .T.)
      endif  
       
      open:setsize(1)
     
      oGraphics:DrawRect( oPen, , aTopLeft[2]-n-4 , aTopLeft[1]-n-2,  aBottomRight[ 2 ]- aTopLeft[2]+(n+3)*2 , aBottomRight[ 1 ]- aTopLeft[1]+ (n+2)*2 )
       
      open:destroy()
 
   next
 oGraphics:destroy()
 oGet:oWnd:ReleaseDC()

Return nil
 

Re: Luz en la caja del get

PostPosted: Mon Dec 01, 2014 2:36 pm
by D.Fernandez
Para que no se pierda...Me interesa..
Gracias

Saludos.

Re: Luz en la caja del get

PostPosted: Wed Apr 06, 2016 8:32 pm
by karinha
Antonio Linares wrote:Manuel,

Tenemos que decidir si usar rectángulos (con esquinas redondeadas) ó degradados.

Y una vez decidamos eso, ver la opción de que sean transparentes y se mezclen con el fondo.

Si hacemos una función lo suficientemente genérica podriamos llamarla para cualquier control y entonces incluirla estandard (aunque opcional) en FWH.



Master esto está incluido en el nuevo FWHX?

Gracias, saludos.

Re: Luz en la caja del get

PostPosted: Thu Apr 07, 2016 7:14 am
by Antonio Linares
João,

No