PINTAR CUADRO FRAME

HMG en Español

Moderator: Rathinagiri

Post Reply
User avatar
SALINETAS24
Posts: 173
Joined: Tue Feb 27, 2018 3:06 am
DBs Used: DBF
Has thanked: 2 times
Been thanked: 3 times

PINTAR CUADRO FRAME

Post by SALINETAS24 » Thu Jun 07, 2018 6:13 pm

Hola, es posible pintar el marco del FRAME.
Solo el marco.
Gracias

User avatar
mustafa
Posts: 690
Joined: Fri Mar 20, 2009 11:38 am
Location: Alicante - Spain
Been thanked: 78 times

Post by mustafa » Fri Jun 08, 2018 10:33 am

Hola colega:

Mirate el Sample ---> Hmg_BoxLetterShow_2018_New.zip

viewtopic.php?f=15&t=1389&p=55225&hilit ... how#p55225

la Function ---> MiFrame que está dentro de ---> hmg_BoxLetterShow.ch

puedes poner el color que quieras

Code: Select all


#include "hmg.ch"
#include "hmg_BoxLetterShow.ch"

  Function Main
*--------------------------------------------------------*
* (c) Mustafa López  mustalopez@gmail.com
*--------------------------------------------------------*

         DEFINE WINDOW Form_1              ;           
		AT 0,0                     ;
		WIDTH 460 HEIGHT 370       ;  
		TITLE "MiFrame"   ;
                FONT "Arial" SIZE 10 BACKCOLOR { 211,218,236 } ;
                NOSIZE NOMAXIMIZE ;  
                MAIN                       ;
		             
                ON KEY ESCAPE ACTION Form_1.Release 

          MiFrame(050,150,175,50,"14a","Mi Frame", { 005,186,010 } , { 211,218,236 } )                                                 
          MiFrame(150,150,175,50,"15a","Mi Frame", { 007,002,204 } , { 211,218,236 } )     
          MiFrame(250,150,175,50,"16a","..."     , RED , VERDE  )  // Opcional si no se pone nada "..." sale solo Rojo 

   END WINDOW
   
   CENTER WINDOW Form_1
   ACTIVATE WINDOW Form_1

Return Nil
Regards :D
Mustafa

User avatar
SALINETAS24
Posts: 173
Joined: Tue Feb 27, 2018 3:06 am
DBs Used: DBF
Has thanked: 2 times
Been thanked: 3 times

Post by SALINETAS24 » Sat Jun 09, 2018 6:15 pm

De guay ..., Mustafa siempre eres el mejor ... nº 1.
Gracias.

User avatar
SALINETAS24
Posts: 173
Joined: Tue Feb 27, 2018 3:06 am
DBs Used: DBF
Has thanked: 2 times
Been thanked: 3 times

Post by SALINETAS24 » Sat Jun 09, 2018 8:36 pm

..., pero que pasa cuando quieres pintar el cuadro de otro color, osease, lo tengo en azul y lo quiero poner en rojo, o viceversa, dependiendo de que este activo o no los objetos que continene dicho FRAME

Mira mustafa, he realizado este pequeña función que permite cambiar el color de un Frame realizado con tu función, pero tengo 2 pequeños problemas.

1- No lo puedo compilar dentro de las funciones genericas, no se porque demonios lo tengo que compilar como parte de mi programa.
2- Sería un "pasote" poder pasarle el nombre del Ventana a la que pertene el FRAME para colorearlo.., eso tampoco se como hacerlo, por eso siempre pinto bajo la WIN_1

Este es el código en cuestión.

Code: Select all

// ----------------------------------------------------------------------------
// ----------------------------------------------------------------------------
// --> Repinta el cuadrado
// --> MiFrame("16","Mi Frame",BLUE,GREEN)  
// --> Parametros (Ventana,"Nombre_l", "titulo", color1, color2)

//-->  Estaria bien que la varible VENTANA tuviese el nombre de ventana que tiene el control label
//-->  &Ventana..&Clavel02..Fontcolor:=RED ----- ¡¡PERO NO FUNCIONA!!

FUNCTION ReFrame(Ventana,cControl,cTexto,Color,ColorBackground)	



Local clavel01 := ALLTRIM("Label_") + ALLTRIM(cControl)
Local clavel02 := ALLTRIM("Label_") + ALLTRIM(cControl)+ "a"
Local clavel03 := ALLTRIM("Label_") + ALLTRIM(cControl)+ "b" 
Local clavel04 := ALLTRIM("Label_") + ALLTRIM(cControl)+ "c" 
Local clavel05 := ALLTRIM("Label_") + ALLTRIM(cControl)+ "d" 

	Win_1.&Clavel02..BACKCOLOR := Color 
	Win_1.&clavel03..BACKCOLOR := Color 
	Win_1.&clavel04..BACKCOLOR := Color  
	Win_1.&clavel05..BACKCOLOR := Color 
	Win_1.&clavel01..BACKCOLOR := ColorBackground   
	Win_1.&clavel01..FONTCOLOR := Color


    Win_1.&Clavel02..Refresh
	Win_1.&Clavel03..Refresh
	Win_1.&Clavel04..Refresh
	Win_1.&Clavel05..Refresh
	Win_1.&Clavel01..Refresh

RETURN
Como siempre un verdadero placer contar con tu sabiduría.

User avatar
SALINETAS24
Posts: 173
Joined: Tue Feb 27, 2018 3:06 am
DBs Used: DBF
Has thanked: 2 times
Been thanked: 3 times

Post by SALINETAS24 » Sun Jun 10, 2018 7:46 pm

Vaya telaaaa., jajajaja. :lol:
El compilador da problemas dependiendo de donde se compile la función ReFrame, :shock: ya que si no tiene la ventana Win_1 previamente definida..., "error". La solución sería poder pasar el valor de la ventana con el &, al igual que hace con el Label, :?: pero ante el silencio aporto esta solución.
Tienes que incluir, donde guardes la "boxlettershow", la función ReFrame y estas lineas.

Code: Select all

// ----------------------------------------------------------------------------
// ----------------------------------------------------------------------------
//--> una chorrada para que funcione la rutina que le sigue.., la de repintal el win_1
//--> y engañar al compilardor 

STATIC FUNCTION PROBATURA
	DEFINE WINDOW Win_1 ;
		ROW 0 ;
		COL 0 ;
		WIDTH 400 ;
		HEIGHT 400 ;
		TITLE 'Hello World!' ;
		WINDOWTYPE MAIN  
	END WINDOW
	Win_1.Center
	Win_1.Activate
RETURN

:idea: y a funcionar.., claro que la putada es que todas las ventanas que donde quieras crearte un FRAME y cambiarlo de color se tienen que llamar Win_1.., :shock: , no obstante quedamos a la espera de una solucion mejor.

Muchas gracias y a disfrutarlo.

User avatar
mustafa
Posts: 690
Joined: Fri Mar 20, 2009 11:38 am
Location: Alicante - Spain
Been thanked: 78 times

Post by mustafa » Mon Jun 11, 2018 12:04 pm

Hola Nanu

..., pero que pasa cuando quieres pintar el cuadro de otro color, osease, lo tengo en azul y lo quiero poner en rojo, o viceversa, dependiendo de que este activo o no los objetos que continene dicho FRAME
Te mando un Sample , haber si puede servir ?

Sigo investigando
Saludos
Mustafa
Attachments
Pantallazo.jpg
Pantallazo.jpg (41.26 KiB) Viewed 625 times
New_Frame.zip
(8.89 KiB) Downloaded 44 times

User avatar
SALINETAS24
Posts: 173
Joined: Tue Feb 27, 2018 3:06 am
DBs Used: DBF
Has thanked: 2 times
Been thanked: 3 times

Post by SALINETAS24 » Wed Jul 04, 2018 4:33 pm

Ya esta resuelto, gracias a una aportación del amigo Mol he creado una funcion generica se puede llamar y con dos lineas pinta y repinta...
Mira amigo.., esto seria la función generica.

Code: Select all

// ----------------------------------------------------------------------------
// ----------------------------------------------------------------------------
// --> Dibuja un cuadrado
// --> MiFrame(300,300,175,50,"16","Mi Frame",BLUE,GREEN)  
// --> Parametros (Fila, Columna, Alto, Largo, "Nombre_l", "titulo", color1, color2)


FUNCTION MiFrame(nRow,nCol,nWidth,nHeight,cControl,cTexto,Color,ColorBackground)	

Local clavel01 := ALLTRIM("Label_") + ALLTRIM(cControl)
Local clavel02 := ALLTRIM("Label_") + ALLTRIM(cControl)+ "a"
Local clavel03 := ALLTRIM("Label_") + ALLTRIM(cControl)+ "b" 
Local clavel04 := ALLTRIM("Label_") + ALLTRIM(cControl)+ "c" 
Local clavel05 := ALLTRIM("Label_") + ALLTRIM(cControl)+ "d" 

LOCAL CurSRow1		:= nRow
LOCAL CurSCol1 		:= nCol
LOCAL LastSWidth1 	:= nWidth
LOCAL LastSHeight1 	:= 1

LOCAL CurSRow2		:= nRow
LOCAL CurSCol2 		:= nCol 
LOCAL LastSWidth2  	:= 1
LOCAL LastSHeight2 	:= nHeight

LOCAL CurSRow3		:= nRow
LOCAL CurSCol3 		:= nCol+nWidth
LOCAL LastSWidth3  	:= 1
LOCAL LastSHeight3 	:= nHeight

LOCAL CurSRow4		:= nRow+nHeight
LOCAL CurSCol4 		:= nCol 	
LOCAL LastSWidth4  	:= nWidth + 1
LOCAL LastSHeight4 	:= 1

    DEFINE label &clavel02   
         ROW   CurSRow1
         COL   CurSCol1  
         WIDTH  LastSWidth1 
         HEIGHT LastSHeight1 
         VALUE ""
         FONTNAME "Arial"// "Ms Sans Serif"
         FONTSIZE 09
         TOOLTIP ""
         FONTBOLD .T. 
         FONTITALIC .F.
         FONTUNDERLINE .F.
         FONTSTRIKEOUT .F.
         HELPID Nil
         VISIBLE  .T.  
         TRANSPARENT .F.
         ACTION Nil
         AUTOSIZE .F.
         BACKCOLOR Color  
         FONTCOLOR Nil
         BORDER .F. 
         CLIENTEDGE .F. 
    END LABEL
	
    DEFINE label &clavel03 
         ROW   CurSRow2
         COL   CurSCol2  
         WIDTH  LastSWidth2 
         HEIGHT LastSHeight2 
         VALUE ""
         FONTNAME "Arial"// "Ms Sans Serif"
         FONTSIZE  09 
         TOOLTIP ""
         FONTBOLD  .T. 
         FONTITALIC .F.
         FONTUNDERLINE .F.
         FONTSTRIKEOUT .F.
         HELPID Nil
         VISIBLE  .T.  
         TRANSPARENT .F.
         ACTION Nil
         AUTOSIZE .F.
         BACKCOLOR Color  
         FONTCOLOR Nil
         BORDER .F. 
         CLIENTEDGE .F. 
    END LABEL

    DEFINE label &clavel04  
         ROW   CurSRow3
         COL   CurSCol3  
         WIDTH  LastSWidth3 
         HEIGHT LastSHeight3 
         VALUE ""
         FONTNAME "Arial"// "Ms Sans Serif"
         FONTSIZE  09 
         TOOLTIP ""
         FONTBOLD  .T.
         FONTITALIC .F.
         FONTUNDERLINE .F.
         FONTSTRIKEOUT .F.
         HELPID Nil
         VISIBLE  .T.  
         TRANSPARENT .F.
         ACTION Nil
         AUTOSIZE .F.
         BACKCOLOR Color 
         FONTCOLOR Nil
         BORDER .F. 
         CLIENTEDGE .F. 
    END LABEL

    DEFINE label &clavel05 
         ROW   CurSRow4
         COL   CurSCol4 
         WIDTH  LastSWidth4 
         HEIGHT LastSHeight4 
         VALUE ""
         FONTNAME "Arial"// "Ms Sans Serif"
         FONTSIZE  09
         TOOLTIP ""
         FONTBOLD  .T. 
         FONTITALIC .F.
         FONTUNDERLINE .F.
         FONTSTRIKEOUT .F.
         HELPID Nil
         VISIBLE  .T.  
         TRANSPARENT .F.
         ACTION Nil
         AUTOSIZE .F.
         BACKCOLOR Color  
         FONTCOLOR Nil
         BORDER .F. 
         CLIENTEDGE .F. 
    END LABEL
	
    DEFINE label &clavel01   
         ROW   CurSRow1 - 8
         COL   CurSCol1 + 5
         WIDTH  LastSWidth1 
         HEIGHT LastSHeight1 
         VALUE cTexto
         FONTNAME "Arial"// "Ms Sans Serif"
         FONTSIZE  09 
         TOOLTIP ""
         FONTBOLD  .T. 
         FONTITALIC .F.
         FONTUNDERLINE .F.
         FONTSTRIKEOUT .F.
         HELPID Nil
         VISIBLE  .T.  
         TRANSPARENT .F.
         ACTION Nil
         AUTOSIZE .T.
         BACKCOLOR ColorBackground  
         FONTCOLOR Color
         BORDER .F. 
         CLIENTEDGE .F. 
    END LABEL	
	
RETURN NIL	


// ----------------------------------------------------------------------------
// ----------------------------------------------------------------------------
// Esta funcion repinta el cuadro ya definido, y lo cambia de color
// Yo la uso cuando activo los GETS y quiero un golpe visual.
// Recibe 
//--> Ventana : nombre de la Window que contiene el FRAME
//--> "16a"     :  Control definido previamente en el MiFrame
//--> Titulo   : si le quieres poner un titulo visual al frame
//--> COLOR1, COLOR2 : La combinación de colores que más te guste.
// --> Repinta el cuadrado
// --> MiFrame(Ventana,"16a","Mi Frame",BLUE,GREEN)  
// --> Parametros (Ventana,"Nombre_l", "titulo", color1, color2)

FUNCTION ReFrame(Ventana,cControl,cTexto,Color,ColorBackground)	
	Local clavel01 := ALLTRIM("Label_") + ALLTRIM(cControl)
	Local clavel02 := ALLTRIM("Label_") + ALLTRIM(cControl)+ "a"
	Local clavel03 := ALLTRIM("Label_") + ALLTRIM(cControl)+ "b" 
	Local clavel04 := ALLTRIM("Label_") + ALLTRIM(cControl)+ "c" 
	Local clavel05 := ALLTRIM("Label_") + ALLTRIM(cControl)+ "d" 
	Local cn

	
    SetProperty(Ventana, Clavel02, "BackColor", Color)
    SetProperty(Ventana, Clavel03, "BackColor", Color)
	SetProperty(Ventana, Clavel04, "BackColor", Color)
	SetProperty(Ventana, Clavel05, "BackColor", Color)
	SetProperty(Ventana, Clavel01, "BackColor", ColorBackground)
	SetProperty(Ventana, Clavel01, "FontColor", Color)

	SetProperty(Ventana, clavel02, "Refresh")
	SetProperty(Ventana, clavel03, "Refresh")
	SetProperty(Ventana, clavel04, "Refresh")
	SetProperty(Ventana, clavel05, "Refresh")	
	SetProperty(Ventana, clavel01, "Refresh")
	
	
/*
	Asi lo tenia antes, y obligatoriamente la ventana se llamaba win_1, cuando tienes solo una WIN_1 activa
	no hay problemas, pero cuando hay más de una o le cambias el nombre......
	
    Win_1.&clavel02..BACKCOLOR := Color 
	Win_1.&clavel03..BACKCOLOR := Color 
	Win_1.&clavel04..BACKCOLOR := Color  
	Win_1.&clavel05..BACKCOLOR := Color 
	Win_1.&clavel01..BACKCOLOR := ColorBackground   
	Win_1.&clavel01..FONTCOLOR := Color

	Win_1.&Clavel02..Refresh
	Win_1.&Clavel03..Refresh
	Win_1.&Clavel04..Refresh
	Win_1.&Clavel05..Refresh
	Win_1.&Clavel01..Refresh
*/
RETURN



Y para llamarla, pues por ejemplo asi

MiFrame(56,400,380,260, "16a", "" , BLUE , GREEN )

y para cambiarla de color

ReFrame("Win_1","16a","",BLUE, GREEN)

Le tienes que mandar el nombre de la ventana activa y yasta.
Muy poco código y a funciona.., que la disfruten.

ASESORMIX
Posts: 78
Joined: Thu Oct 25, 2012 8:08 pm
Location: Bqto, Venezuela
Been thanked: 6 times

Post by ASESORMIX » Wed Jul 04, 2018 6:18 pm

Gracias por compartir...

Post Reply