Page 1 of 2
Ayuda sobre xBrowse/Windows 7
Posted: Wed Feb 24, 2010 8:36 pm
by jll-fwh
Hola a todos:
A ver si alguien puede ayudarme ya que puse un anuncio hace unos dias para Antonio pero entiendo que tiene mucho trabajo y no me ha contestado, me dirijo ahora a todos vosotros a ver si me podeis ayudar sobre:
En el foro encontre un post de antonio que le comentaba a Jose luis como hacer un Gradiente estilo Windows 7 ( que por cierto, super bonito ), yo lo he implmentado pero he encontrado algunos fallos que sinceramente no logro solucionar, el post sobre este tema es:
viewtopic.php?f=6&t=17540
Pues los fallos que he detectado y no logro solucionar son los siguientes:
1.- Cuando se define un Gradiente en un xBrowse mediante una tabla con DBF, si el campo no contiene informacion no genera el Gradient en esa celda. Ver foto.
2.- Tanto en un xBrowse con DBF como definido con ARRAYs el gradient no lo aplica hasta el final de la declaracion del xBrowse, sino hasta la longuitud de las columnas, ver la imagen para entender mejor lo que quiero decir.
Temas adicionales:
1.- Tambien me gustaria hacer, asignar un gradient dentro de una celda para asignarle ademas otro color para la edicion de _ dentro de un xBrowse, para que el efecto sea mucho mas bonito, ya que sino me queda con este aspecto. Ver imagen.
2.- Supongo que sera porque estoy ya obcecado y no vea nada, pero como podria cambiar el BMP que aparece en un xBrowse cuando lo defines como edicion de la celda tipo EDIT_GET_BUTTOM.
Uso:
* Libreria: FWH/FWHX 8.12 28/December/2008
* Harbour: Harbour 1.0.1 Rev 9361 1999-2008
* Compilador: Borland C++ 5.5.1 versión 32bits
* Editor de Recursos: WorkShop 4.5 y ResEdit
* Gestor de B.D: A.D.A ( Advantage Data Architect )
* S.O Windows XP / Windows 7
Espero que alguien me ayude con estas cositas.
Un saludo y muchas gracias por vuestro tiempo.
JLL
Re: Ayuda sobre xBrowse/Windows 7
Posted: Wed Feb 24, 2010 10:23 pm
by Daniel Garcia-Gil
Saludos
jll-fwh wrote:1.- Cuando se define un Gradiente en un xBrowse mediante una tabla con DBF, si el campo no contiene informacion no genera el Gradient en esa celda.
puedes solventarlo agregando este "ELSE" a la clase XBROWSE despues puedes incluir xBROWSE.PRG como un prg mas de tu proyecto
en el methodo PainData busca al siguiente "IF"
Code: Select all
if ! Empty( cData ) .and. ! ( ::cDataType $ "PF" )
.....
Code: Select all
else
aRect := { nRow, nCol, nRow + nHeight, Min( nCol + nWidth, ::oBrw:BrwWidth() - 5 ) }
if ::bPaintText != nil
Eval( ::bPaintText, Self, hDC, "", aRect, aColors, lHighLite )
endif
jll-fwh wrote:2.- Tanto en un xBrowse con DBF como definido con ARRAYs el gradient no lo aplica hasta el final de la declaracion del xBrowse, sino hasta la longuitud de las columnas
Puedes solventarlo usando eso
Code: Select all
oBrw:nStretchCol = STRETCHCOL_LAST
jll-fwh wrote:1.- Tambien me gustaria hacer, asignar un gradient dentro de una celda para asignarle ademas otro color para la edicion de _ dentro de un xBrowse, para que el efecto sea mucho mas bonito, ya que sino me queda con este aspecto.
tienes la data de las columnas bClrEdit, la cual puedes asignarle a una columna o a todas
en ejemplo
para 1 columna
Code: Select all
oBrw:aCols[ 3 ]:bClrEdit := { || { CLR_BLACK, CLR_RED } }
para todas
Code: Select all
AEval( oBrw:aCols, { |o| o:bClrEdit := { || { CLR_BLACK, CLR_RED } } } )
jll-fwh wrote:2.- Supongo que sera porque estoy ya obcecado y no vea nada, pero como podria cambiar el BMP que aparece en un xBrowse cuando lo defines como edicion de la celda tipo EDIT_GET_BUTTOM.
revisa el ejemplo xbrbtn.prg te dejo una imagen del mismo
Re: Ayuda sobre xBrowse/Windows 7
Posted: Thu Feb 25, 2010 12:28 pm
by jll-fwh
Hola Daniel:
Antes que nada, muchas gracias por tu ayuda, ya que al final eres el unico que contesta a mis problemillas. Gracias. Ademas eres el GURU del xBrowse.
Te comento:
Posiblemente tengamos version de FWH diferentes ya que en el metodo PainData no veo las lineas que me comentas.
La funcion la publico Antonio en el foro, no era una modificacion del metodo sino una funcion independiente.
1.- Esta linea no existe en mi version: ( FWH 8.12 ), asi que no puedo probar lo que me comentabas.
if ! Empty( cData ) .and. ! ( ::cDataType $ "PF" )
Al funcion para el gradiente segun antonio era: ( en este caso la estoy probando con una ARRAY )
/*------------------------------------------------------------------------------*/
Function PaintColArray( oCol, hDC, cData, aRect, oGrid )
/*------------------------------------------------------------------------------*/
If oCol:oBrw:VGetPos() == oGrid:nArrayAT
GradientFill( hDC, aRect[ 1 ] - 2, aRect[ 2 ] - 3, aRect[ 3 ] + 1, aRect[ 4 ] + 5,;
{ { 1, RGB( 220, 235, 252 ), RGB( 193, 219, 252 ) } }, .T. )
RoundBox( hDC, 2, aRect[ 1 ] - 1, WndWidth( oCol:oBrw:hWnd ) - 22, aRect[ 3 ] + 1, 2, 2,;
RGB( 235, 244, 253 ), 1 )
RoundBox( hDC, 1, aRect[ 1 ] - 2, WndWidth( oCol:oBrw:hWnd ) - 21, aRect[ 3 ] + 2, 2, 2,;
RGB( 125, 162, 206 ), 1 )
End
SetTextColor( hDC, 0 )
DrawTextEx( hDC, cData, aRect, oCol:nDataStyle )
Return NIL
2.- PAra solucionar el segundo problema me comentabas que añadiera esta liena al xBrowse:
oBrw:nStretchCol = STRETCHCOL_LAST
Funciona pero el Grid tiene un comportamiento no correcto, se queda embuclado refrescando el objeto y por ejemplo no visualiza el menu popup que tiene asignado el GRid. Asi que he tenido que quitarlo porque en mi version de FWH no funciona bien.
3.- Y sobre como modificar el BMP de una celda, pues debo de estar gafado, pero no tengo el fuente xbrbtn.prg en \Samples., a no ser que venga en versiones posteriores. ASi que no puedo ver como se hace.
Muchas gracias por tu ayuda y tiempo
Un saludo
JLL
Re: Ayuda sobre xBrowse/Windows 7
Posted: Thu Feb 25, 2010 12:36 pm
by Daniel Garcia-Gil
Saludos
Ciertamente la mayoria de _ y caracteristicas estan reflejadas en las nuevas versiones... mi recomendacion seria que actualizaras tu actual version de fivewin y podras disfrutar de muchas mejoras del producto
Re: Ayuda sobre xBrowse/Windows 7
Posted: Thu Feb 25, 2010 9:05 pm
by pedrog
Hola Daniel,
tu solución al punto 1, gradient en celdas vacias funciona ok, por lo menos en la versión que yo tengo, pero sin embargo con la solución de la ultima columna : oBrw:nStretchCol = STRETCHCOL_LAST, obtengo un efecto indeseado, según avance a la ultima columna se ve bien el ultimo campo o me lo oculta, no sé si será por la versión que tengo, FWH906.
No sé si me he explicado bien, el tema es que no sé poner una imagen para explicarlo.
En este caso llego hasta el ultimo campo pulsando la felchita del scroll horizontal.
En este caso llego al ultimo campo pulsando sobrel la parte final del scroll horizontal.
A ver si ahora me explico mejor con las imagenes, ver la parte derecha del xbrowse...
gracias a los dos por la explicación para poner las imágenes.
Un saludo!
Re: Ayuda sobre xBrowse/Windows 7
Posted: Thu Feb 25, 2010 9:17 pm
by Bayron
Pedro,
Carga tu aplicacion,
presiona la techa PrtScrn,
entra al Microsoft Paint o algun otro editor de bmps,
presiona las teclas Ctrl-V para pegar,
graba el archivo,
entra a ImageShack.com,
presiona Browse para buscar el fichero en tu ordenador,
presiona UpLoad,
copia el Direct Link,
Entra al foro y presiona citar,
presiona Img,
pega el link,
presiona enviar.
Re: Ayuda sobre xBrowse/Windows 7
Posted: Thu Feb 25, 2010 9:18 pm
by Daniel Garcia-Gil
Pedro...
Puedes usar cualquier gestor de imagenes gratuitos en la red
si no me equivoco estos son algunos
http://imageshack.us/
http://photobucket.com/
http://www.flickr.com/
despues solo colocas con el entre el boton IMG para colocar entre el tag el link imagen que te generan esas paginas
Re: Ayuda sobre xBrowse/Windows 7
Posted: Mon Mar 01, 2010 7:45 pm
by pedrog
Hola,
he editado el mensaje anterior colocando las imagenes y nadie ha respondido, no sé si se ha visto o no se entiende el problema ?.
Saludos!
Re: Ayuda sobre xBrowse/Windows 7
Posted: Tue Mar 02, 2010 2:15 pm
by jll-fwh
Hola Daniel:
Gracias por tu ayuda, pero en la version que yo tengo no funciona.
Un saludo
JLL
Re: Ayuda sobre xBrowse/Windows 7
Posted: Tue Mar 02, 2010 5:51 pm
by pedrog
Hola Daniel,
¿sabes si el tema que comento sobre el comportamiento del xbrowse es por la versión ?, o no tiene solución ?.
Saludos!
Re: Ayuda sobre xBrowse/Windows 7
Posted: Tue Mar 02, 2010 7:03 pm
by Daniel Garcia-Gil
pedrog wrote:Hola Daniel,
¿sabes si el tema que comento sobre el comportamiento del xbrowse es por la versión ?, o no tiene solución ?.
Saludos!
Todo tiene solucion, oBrw:nStretchCol = STRETCHCOL_LAST lo que hace es hacer de la ultima columna visible, alcance al ancho visible disponible, puede que la version que usas no maneje esa caracteristica, la clase TXBrowse a sufrido _ a mejoras, probare con la version que usas y tratare de aportar alguna solucion disponible
Re: Ayuda sobre xBrowse/Windows 7
Posted: Tue Mar 02, 2010 7:37 pm
by pedrog
Daniel,
gracias de antemano, lo raro es que si que de una forma lo hace bien y de la otra no, supongo que será algún bug de la versión que yo tengo.
Saludos!
Re: Ayuda sobre xBrowse/Windows 7
Posted: Wed Mar 03, 2010 3:01 am
by Daniel Garcia-Gil
Pedro
pedrog wrote:Daniel,
gracias de antemano, lo raro es que si que de una forma lo hace bien y de la otra no, supongo que será algún bug de la versión que yo tengo.
Saludos!
no es un bug de la clase, asi debe comportarse, ajustara el ancho de la ultima columna al ancho disponible, pero he encontrado una posible solucion
cambia este IF en METHOD DrawLine()
Code: Select all
if nCol < nWidth
if lHighLite
if ::hWnd == GetFocus()
oCol := ::ColAtPos ( nLast )
if oCol:bPaintText != NIL
Eval( oCol:bPaintText, oCol, hDC, "", { nRow + 2, nCol, nTemp - 2, nWidth - 5 } )
else
hBrush := CreateSolidBrush( Eval( If( ::bClrRowFocus == nil, ::bClrSelFocus, ::bClrRowFocus ) )[ 2 ] )
endif
else
if oCol:bPaintText != NIL
Eval( oCol:bPaintText, oCol, hDC, "", { nRow + 2, nCol, nTemp - 2, nWidth - 5 } )
else
hBrush := CreateSolidBrush( Eval( ::bClrSel )[ 2 ] )
endif
endif
else
hBrush := CreateSolidBrush( Eval( ::bClrStd )[ 2 ] )
endif
if ( lHighLite .or. ! ( ::lTransparent == .t. ) ) .and. hBrush != NIL
FillRect( hDC, {nRow, nCol, nTemp, nWidth }, hBrush )
endif
if hBrush = NIL
DeleteObject( hBrush )
endif
endif
Re: Ayuda sobre xBrowse/Windows 7
Posted: Wed Mar 03, 2010 3:29 am
by Daniel Garcia-Gil
Jll-fw
para tu version el IF aparece de esta forma
incluye el ELSE que te comente anteriormente
Code: Select all
else
aRect := { nRow, nCol, nRow + nHeight, Min( nCol + nWidth, ::oBrw:BrwWidth() - 5 ) }
if ::bPaintText != nil
Eval( ::bPaintText, Self, hDC, "", aRect, aColors, lHighLite )
endif
jll-fwh wrote:2.- PAra solucionar el segundo problema me comentabas que añadiera esta liena al xBrowse:
oBrw:nStretchCol = STRETCHCOL_LAST
Funciona pero el Grid tiene un comportamiento no correcto, se queda embuclado refrescando el objeto y por ejemplo no visualiza el menu popup que tiene asignado el GRid. Asi que he tenido que quitarlo porque en mi version de FWH no funciona bien.
puedes usar el codigo que publique en el post anterior (para pedro), creo que puede servir hasta para la version actual
jll-fwh wrote:3.- Y sobre como modificar el BMP de una celda, pues debo de estar gafado, pero no tengo el fuente xbrbtn.prg en \Samples., a no ser que venga en versiones posteriores. ASi que no puedo ver como se hace.
Disculpa el error fue mio ese es un ejemplo para otro funcionalidad de los botones,
causalmente para tu version se implemento lo que necesitas, pero los ejemplo no fueron introducidos sino hasta la siguiente version, pero en su tiempo los publique
* Nuevo: En la clase TXBrowse, nuevo DATA nBtnBmp para seleccionar el índice de mapa de bits en la matriz oCol:aBitmaps por lo que la imagen del botón se puede cambiar, cuando se usan estos estilos de edición: EDIT_LISTBOX, EDIT_BUTTON, EDIT_GET_LISTBOX y EDIT_GET_BUTTON.
* Nuevo: En la clase TXBrowse, nuevo métodod ChangeBitmap(), selecciona la imagen del botón usando el valor de la DATA nBtnBmp.
tomado del Whatsnew de la version 8.12:
http://forums.fivetechsupport.com/viewt ... 601#p72601
este es el link dinde estan esos ejemplos que faltaron:
http://forums.fivetechsupport.com/viewt ... 563#p72563
te debe interesar xbbtget.rar
Re: Ayuda sobre xBrowse/Windows 7
Posted: Wed Mar 03, 2010 6:33 pm
by pedrog
Daniel,
gracias!, lo pruebo y te comento algo.
Saludos!