Pintar Cuadritos de Colores en un dialogo ( Folder )

Pintar Cuadritos de Colores en un dialogo ( Folder )

Postby Raymundo Islas M. » Tue Sep 16, 2008 6: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.


Image

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
User avatar
Raymundo Islas M.
 
Posts: 592
Joined: Tue Mar 14, 2006 11:34 pm
Location: Acapulco, Gro. MEXICO

Postby quique » Fri Sep 19, 2008 2:57 pm

¿por que no intentas con un browse y le indicas color a cada celda?
Saludos
Quique
User avatar
quique
 
Posts: 408
Joined: Sun Aug 13, 2006 5:38 am

Postby Raymundo Islas M. » Fri Sep 19, 2008 9: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 :

Image


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.


Image



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


Image


Saludos y gracias por tu atencion.
FWH 10.6 + xHarbour + Borland 582
User avatar
Raymundo Islas M.
 
Posts: 592
Joined: Tue Mar 14, 2006 11:34 pm
Location: Acapulco, Gro. MEXICO

Postby derpipu » Fri Sep 19, 2008 9:47 pm

Hola aun no se como subir una imagen, pero yo lo hago asi...

Code: Select all  Expand view
    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
derpipu
 
Posts: 94
Joined: Tue Mar 28, 2006 4:09 pm
Location: Tequila, Jalisco Mexico

Postby Raymundo Islas M. » Fri Sep 19, 2008 9: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
User avatar
Raymundo Islas M.
 
Posts: 592
Joined: Tue Mar 14, 2006 11:34 pm
Location: Acapulco, Gro. MEXICO

Postby FranciscoA » Sat Sep 20, 2008 3: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
::oWnd:SetFont( oFont )

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

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

::DispEnd( aInfo )

return nil
[
User avatar
FranciscoA
 
Posts: 2110
Joined: Fri Jul 18, 2008 1:24 am
Location: Chinandega, Nicaragua, C.A.

Postby joseluisysturiz » Sat Sep 20, 2008 5: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!
User avatar
joseluisysturiz
 
Posts: 2064
Joined: Fri Jan 06, 2006 9:28 pm
Location: Guatire - Caracas - Venezuela

Postby Carlos Mora » 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.
Carlos Mora
 
Posts: 988
Joined: Thu Nov 24, 2005 3:01 pm
Location: Madrid, España

Postby Raymundo Islas M. » Sat Sep 20, 2008 4: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
User avatar
Raymundo Islas M.
 
Posts: 592
Joined: Tue Mar 14, 2006 11:34 pm
Location: Acapulco, Gro. MEXICO

Postby FranciscoA » Sat Sep 20, 2008 5: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]ImageImage
User avatar
FranciscoA
 
Posts: 2110
Joined: Fri Jul 18, 2008 1:24 am
Location: Chinandega, Nicaragua, C.A.

Postby Raymundo Islas M. » Sat Sep 20, 2008 6:38 pm

Hola a todos,

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


Image


Este es el codigo que me sirvio para tal caso :

Code: Select all  Expand view
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
User avatar
Raymundo Islas M.
 
Posts: 592
Joined: Tue Mar 14, 2006 11:34 pm
Location: Acapulco, Gro. MEXICO


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 94 guests