FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Pintar Cuadritos de Colores en un dialogo ( Folder )
Posts: 592
Joined: Tue Mar 14, 2006 11:34 PM
Pintar Cuadritos de Colores en un dialogo ( Folder )
Posted: Tue Sep 16, 2008 06:42 PM
Hola a todos,

Necesito mostrar en pantalla varios cuadritos, cada uno con un color diferente para que señalen un dato individual.

Imaginemos los que salen cuando desfragmentamos un disco duro con PerfectDisk o DiskKeeper.




Busque en las funciones, creo que podria usar : FillRect() pero no la he usado antes.

Muchas Gracias por anticipado.


Saludos
FWH 10.6 + xHarbour + Borland 582
Posts: 408
Joined: Sun Aug 13, 2006 05:38 AM
Pintar Cuadritos de Colores en un dialogo ( Folder )
Posted: Fri Sep 19, 2008 02:57 PM

¿por que no intentas con un browse y le indicas color a cada celda?

Saludos

Quique
Posts: 592
Joined: Tue Mar 14, 2006 11:34 PM
Pintar Cuadritos de Colores en un dialogo ( Folder )
Posted: Fri Sep 19, 2008 09:06 PM
Hola Quique,

Efectivamente, es lo que estaba platicando con Jose Luis de este tema, al parecer no me explique correctamente y para acabarla, la imagen que puse empeoro el asunto.

En realidad esto es lo que necesito :




Lo del browse ya lo tengo hecho, tome "prestada" la idea de Otto y Antonio del control que hace poco hicieron para mostrar un calendario y poder mostrar X datos en X fechas.

Aunque el control resultante que hicieron esta estupendo, yo necesito mostrar rangos de fechas que a veces son diferentes al año completo ya que el usuario especifica tales rangos, eso ya lo hice usando un Browse.






Solo me faltaba hacer los cuadritos que indiquen el tipo de dato segun su color.





Saludos y gracias por tu atencion.
FWH 10.6 + xHarbour + Borland 582
Posts: 94
Joined: Tue Mar 28, 2006 04:09 PM
Pintar Cuadritos de Colores en un dialogo ( Folder )
Posted: Fri Sep 19, 2008 09:47 PM
Hola aun no se como subir una imagen, pero yo lo hago asi...

    REDEFINE SAY oGet COLOR CLR_BLACK, CLR_CYAN              ID 4001 OF oDlg FONT oApp:fBold
    REDEFINE SAY oGet COLOR CLR_WHITE, CLR_GREEN             ID 4002 OF oDlg FONT oApp:fBold
    REDEFINE SAY oGet COLOR CLR_WHITE, nRGB( 255, 128, 64 )  ID 4003 OF oDlg FONT oApp:fBold
    REDEFINE SAY oGet COLOR CLR_BLACK, nRGB( 255, 255, 128 ) ID 4004 OF oDlg FONT oApp:fBold


con un say del tamaño que lo deseas, le pones un texto y solo defines el color, espero que sea lo que necesitas..
Luis Fernando Rubio Rubio
Posts: 592
Joined: Tue Mar 14, 2006 11:34 PM
Pintar Cuadritos de Colores en un dialogo ( Folder )
Posted: Fri Sep 19, 2008 09:56 PM

Hola Luis,

De hecho asi como lo tengo en este momento, con un SAY.

En las imagenes que puse, podras ver una que tiene XXX con diferentes colores, mismas que quiero eliminar y pintar los dichosos cuadritos de colores.

Saludos

FWH 10.6 + xHarbour + Borland 582
Posts: 2170
Joined: Fri Jul 18, 2008 01:24 AM
Pintar Cuadritos de Colores en un dialogo ( Folder )
Posted: Sat Sep 20, 2008 03:22 AM
Raymundo Islas M. wrote:Hola Luis,

De hecho asi como lo tengo en este momento, con un SAY.

En las imagenes que puse, podras ver una que tiene XXX con diferentes colores, mismas que quiero eliminar y pintar los dichosos cuadritos de colores.


Saludos


Raymundo:
Esto es un mini-proyecto que estoy desarrollando. Puede ser lo que necesitas para los dichosos cuadritos. Si lo mejoras, agradeceré copia.

Ejemplo del uso:

oRecta:=TRectang():New( 20,20, 30,30, oDlg,, nRGB(255,198,0),nRGB(135,82,40),"", ,1)

Puedes ver el cuadrito en la imagen. ¿Cual? si aún no sé como subirlas.


#include "FiveWin.ch"

#define COLOR_BTNFACE 15

#ifdef __XPP__
#define Super ::TControl
#endif

// Francisco J. Alegría P., Sept 10/2008
/*
Tareas pendientes:
1 Que texto lo ponga donde queramos y del color deseado
2 Metodo SayTexto(nRow, nCol, oFont, nClrFont, nPad, lRect, nClrRect, cBmp)
nPad: xPad..., lRect: Enmarcado o no,
*/

//----------------------------------------------------------------------------//

CLASS TRectang FROM TControl

DATA l3D
DATA nRGB1, nRGB2

CLASSDATA lRegistered AS LOGICAL

METHOD New( nRow, nCol, nHeight, nWidth, oWnd, l3D, nRGB1, nRGB2, cTitle, oFont, nStyle ) CONSTRUCTOR

METHOD Display() INLINE ::BeginPaint(), ::Paint(), ::EndPaint(), 0

METHOD Paint()

ENDCLASS

//----------------------------------------------------------------------------//

METHOD New( nRow, nCol, nHeight, nWidth, oWnd, l3D, nRGB1, nRGB2, cTitle, oFont, nStyle ) CLASS TRectang

local oRect := oWnd:GetCliRect()

DEFAULT nWidth:=100, nHeight:=oWnd:nHeight, l3D := .f.,;
nRGB1:=NIL, nRGB2:=NIL, cTitle:="TITULO", oFont:= NIL, nStyle := 1

nStyle := IF(nStyle==1, nOR( WS_BORDER, WS_CHILD, WS_VISIBLE, WS_CLIPCHILDREN ),; //BORDER
nOR( WS_CHILD, WS_VISIBLE, WS_CLIPCHILDREN ) ) //NOBORDER

::nStyle = nStyle
::oWnd = oWnd
::nTop = nRow
::nLeft = nCol
::nBottom = nHeight
::nRight = nWidth
::l3D = l3D
::nClrPane = If( l3D, GetSysColor( COLOR_BTNFACE ), CLR_GRAY )
::nRGB1 = nRGB1
::nRGB2 = nRGB2
::cTitle = cTitle
::oFont = oFont

#ifdef __XPP__
DEFAULT ::lRegistered := .f.
#endif

::SetColor( ::nClrText, ::nClrPane )

::Register( nOR( CS_VREDRAW, CS_HREDRAW ) )
::Create()

return Self

//----------------------------------------------------------------------------//

METHOD Paint() CLASS TRectang

local aInfo := ::DispBegin(), oFont

//colores personalizados degradados
Gradient( ::hDC, { 0, 0, ::nHeight, ::nWidth },;
::nRGB1, ::nRGB2, .T. )

if ::oFont == nil
DEFINE FONT oFont NAME "Tahoma" SIZE 0, -12 BOLD
endif
::SetFont( oFont )

::Say( 8, 1, xPadC(::cTitle, ::nWidth ), nRGB( 0,0,0 ), nRGB(0,0,0), ::oFont, .T., .T.,)
::End()

if ::bPainted != nil
Eval( ::bPainted, ::hDC )
endif

::DispEnd( aInfo )

return nil
[
Francisco J. Alegría P.

Chinandega, Nicaragua.



Fwxh-MySql-TMySql
Posts: 2064
Joined: Fri Jan 06, 2006 09:28 PM
Pintar Cuadritos de Colores en un dialogo ( Folder )
Posted: Sat Sep 20, 2008 05:16 AM

Raymundo, por lo que veo lo que trate no te funciono, a ojo de pajaro veo lo que ofrece Francisco y luce bastante bien, mañama lo probare y alguno cambio o mejora se los hare llegar..saludos. nos vemos por los lados del MSN.... :shock:

Dios no está muerto...



Gracias a mi Dios ante todo!
Posts: 989
Joined: Thu Nov 24, 2005 03:01 PM
Pintar Cuadritos de Colores en un dialogo ( Folder )
Posted: Sat Sep 20, 2008 11:41 AM
Raymundo,

Raymundo Islas M. wrote:

De hecho asi como lo tengo en este momento, con un SAY.

En las imagenes que puse, podras ver una que tiene XXX con diferentes colores, mismas que quiero eliminar y pintar los dichosos cuadritos de colores.
Saludos


Lo que entiendo que te sugiere el compañero (y que es como lo uso) es cambiando el COLOR DE FONDO DEL SAY, no las letras. Es más, como texto le pones un par de espacios si no quieres ver nada, o usas el mismo color para el texto y el fondo. ¿Has probado hacerlo? creo que te resultará mas sencillo que usar una clase nueva, sin desmerecer el trabajo del compañero.

CArlos.
Saludos
Carlos Mora
http://harbouradvisor.blogspot.com/
StackOverflow http://stackoverflow.com/users/549761/carlos-mora
“If you think education is expensive, try ignorance"
Posts: 592
Joined: Tue Mar 14, 2006 11:34 PM
Pintar Cuadritos de Colores en un dialogo ( Folder )
Posted: Sat Sep 20, 2008 04:57 PM

Hola Carlos,

Sip eso lo probe desde un principio, un SAY con solo espacios y usando el mismo color tanto para el fore como para el back y nop.

Francisco,

Probe la clase que amablemente enviaste y estos son los resultados :

Cuando la pruebo tal y como esta : pinta el cuadrito OK
pero al momento de cambiarle las coordenas se pierde, al checar el codigo vi que hacia faltaba calcular en forma correcta las variables ::nBottom y ::nRight

Ahora, con esos pequeños cambios para las pocisiones ya salen OK pero por alguna razon, ya no me respeta los colores para el pintado.

Sigo probando.

Saludos a todos

FWH 10.6 + xHarbour + Borland 582
Posts: 2170
Joined: Fri Jul 18, 2008 01:24 AM
Pintar Cuadritos de Colores en un dialogo ( Folder )
Posted: Sat Sep 20, 2008 05:48 PM
Raymundo Islas M. wrote:Hola Carlos,

Sip eso lo probe desde un principio, un SAY con solo espacios y usando el mismo color tanto para el fore como para el back y nop.

Francisco,

Probe la clase que amablemente enviaste y estos son los resultados :

Cuando la pruebo tal y como esta : pinta el cuadrito OK
pero al momento de cambiarle las coordenas se pierde, al checar el codigo vi que hacia faltaba calcular en forma correcta las variables ::nBottom y ::nRight

Ahora, con esos pequeños cambios para las pocisiones ya salen OK pero por alguna razon, ya no me respeta los colores para el pintado.

Sigo probando.


Saludos a todos


Hola aqui me funciona bien, puedes verlo.

oRect1:=TRectang():New( 10,150, 20,180, oBar ,, nRGB(255,98,60),nRGB(235,82,40),"", ,1)
oRect2:=TRectang():New( 30,150, 40,180, oBar ,, nRGB(155,98,60),nRGB(135,82,40),"", ,1)


[/img]
Francisco J. Alegría P.

Chinandega, Nicaragua.



Fwxh-MySql-TMySql
Posts: 592
Joined: Tue Mar 14, 2006 11:34 PM
Pintar Cuadritos de Colores en un dialogo ( Folder )
Posted: Sat Sep 20, 2008 06:38 PM
Hola a todos,

Por fin pude crear esos %/#"$#"#$ cuadros :-)





Este es el codigo que me sirvio para tal caso :

oFldESPrd:aDialogs[6]:bPainted := { |hDC| DrwBxsClrs( hDC ) }

Static Function DrwBxsClrs( hDC )
LOCAL nQ, aBx1Coords := { 393, 43, 405, 55 }, aBx2Coords := { 393, 413, 405, 425 }
LOCAL aBrshClrs[11]
LOCAL aBClrsDts := { {224,102,255},{255,193,193},{222,184,135},{250,128,114},{118,238,198},{100,149,237}, ;
	{255,193,37},{171,130,255},{255,192,203},{255,255,0},{255,48,48} }

FOR nQ := 1 TO 11
	DEFINE BRUSH aBrshClrs[nQ] COLOR RGB( aBClrsDts[nQ,1],aBClrsDts[nQ,2],aBClrsDts[nQ,3] )
NEXT
FOR nQ := 1 TO 5
	FillRect( hDC, aBx1Coords, aBrshClrs[nQ]:hBrush )
	aBx1Coords[1] += 15
	aBx1Coords[3] += 15
NEXT
FOR nQ := 6 TO 10
	FillRect( hDC, aBx2Coords, aBrshClrs[nQ]:hBrush )
	aBx2Coords[1] += 15
	aBx2Coords[3] += 15
NEXT

Return NIL
*-----*




Agradezco a todos por su tiempo y atencion.


Saludos
FWH 10.6 + xHarbour + Borland 582

Continue the discussion