draw rectangle

HMG en Español

Moderator: Rathinagiri

Post Reply
User avatar
SALINETAS24
Posts: 667
Joined: Tue Feb 27, 2018 3:06 am
DBs Used: DBF
Contact:

draw rectangle

Post by SALINETAS24 »

Hola a todos.

¿es posible pintar un rectángulo trasparente...?

Estoy haciendo alguna prueba con los ejemplos que vienen en HMG\SAMPLES\GRAPH y lo consigo, me añade un color y me gustaría ver el de la pantalla de bajo..., solo pintar el recuadro.

Code: Select all


draw rectangle in window x at 100,50 to 150,200 ;
	 pencolor {random(255),random(255),random(255)} ;
	 penwidth 2 fillcolor {random(255),random(255),random(255)}    // Pinta el color de relleno indicado en FILLCOLOR


draw rectangle in window x at 100,50 to 150,200 ;
	pencolor {random(255),random(255),random(255)} penwidth 2  // Aqui no indico nada y me lo pinta blanco

Muchas gracias a todos desde mi confinamiento...., voy con una cervecita!!
Como dijo el gran pensador Hommer Simpson..., - En este mundo solo hay 3 tipos de personas, los que saben contar y los que no. :shock:
User avatar
SALINETAS24
Posts: 667
Joined: Tue Feb 27, 2018 3:06 am
DBs Used: DBF
Contact:

Re: draw rectangle

Post by SALINETAS24 »

Hola, aqui os paso un código cuyo comportamiento no termino de comprender.
Se supone que pinto un cuadro, y encima del cuadro tengo "label" y "textbox".
Para hace la prueba con el ENABLED cuando nos deplazamos con ENTER me desaparecen los LABEL del pantalla al hacer un
esto Form_1.Text_3.Enabled:=.f.

¿Alguien tiene solución...?

Code: Select all

/*
 * HMG - Harbour Win32 GUI library Demo
 *
 * Copyright 2002 Roberto Lopez <mail.box.hmg@gmail.com>
 * http://www.hmgforum.com//
*/

#include "hmg.ch"

Function Main

	SET NAVIGATION EXTENDED
	SET EPOCH TO 2000

	SET CENTURY ON
	SET DATE FRENCH

	DEFINE WINDOW Form_1 ;
		AT 0,0 ;
		WIDTH 640 HEIGHT 480 ;
		TITLE 'HMG Demo' ;
		MAIN 

		DEFINE MAIN MENU
			DEFINE POPUP 'Test'
				MENUITEM 'Set Text_1 Value' ACTION Form_1.Text_1.Value := Date()
				MENUITEM 'Set Text_2 Value' ACTION Form_1.Text_2.Value := ctod ('  /  /  ')
				MENUITEM 'Set Text_3 Value' ACTION Form_1.Text_3.Value := ctod('01/01/2005')
				MENUITEM 'Set Text_1 ReadOnly' ACTION Form_1.Text_1.ReadOnly := .T.
				MENUITEM 'Clear Text_1 ReadOnly' ACTION Form_1.Text_1.ReadOnly := .F.
			SEPARATOR
				MENUITEM 'Get Text_1 Value' ACTION MsgInfo ( dtoc ( Form_1.Text_1.Value ) )
				MENUITEM 'Get Text_2 Value' ACTION MsgInfo ( dtoc ( Form_1.Text_2.Value ) ) 
				MENUITEM 'Get Text_3 Value' ACTION MsgInfo ( dtoc ( Form_1.Text_3.Value ) )
			END POPUP
		END MENU

		// QUIERO DIBUJAR UN RECUADRO TRASPARENTE
		_Caja(100,50,400,300,RED,BLUE)
		@ 120,100 LABEL LB1 VALUE "TOMA"
		@ 120,210 TEXTBOX Text_1 ;
			VALUE ctod('01/01/2004') ;
			TOOLTIP 'Date TextBox 1' ;
			DATE ;
			ON ENTER(IF(Empty(Form_1.Text_1.Value),Form_1.Text_1.setfocus,nil),(Form_1.Text_3.Enabled:=.t.) ) ;

		@ 150,100 LABEL LB2 VALUE "TOMA2"
		@ 150,210 TEXTBOX Text_2 ;
			VALUE Date() ;
			TOOLTIP 'Date TextBox 2' ;
			DATE ; 
			ON ENTER (Form_1.Text_3.Enabled:=.f.) 
			
		@ 180,100 LABEL LB3 VALUE "TOMA2"
		DEFINE TEXTBOX Text_3
			ROW 180
			COL 210
			DATE .T.
		END TEXTBOX

	END WINDOW
	

	Form_1.Center

	Form_1.Activate

Return Nil


// -------------------------------------------------------------------
// DIBUJA UN RECTANGULO
// Parametros.
// nFil  : Fila Inicial
// nCol  : Columna Inicial
// nAncho: Ancho de la ventana <>
// nAlto : Alto de la Ventana  ^
// Color : Color de las lineas
// ColorFondo : Color de fondo. Por defecto trasparente.
//--------------------------------------------------------------------
PROC _Caja(nFil,nCol,nAncho,nAlto,Color,ColorFondo)
LOCAL Win:="Form_1"
DEFAULT ColorFondo:=""
    // Veo el tipo de cuadro
	IF Empty(ColorFondo)    
		// Línea Exterior 
		DRAW LINE in WINDOW &Win at nFil,nCol          TO nFil,        nAncho ;
					 PENCOLOR Color  PENWIDTH  1
		DRAW LINE in WINDOW &Win at nFil+nAlto,nCol   TO nFil+nAlto, nAncho ;
					 PENCOLOR Color  PENWIDTH  1 
		DRAW LINE in WINDOW &Win at nFil,nCol          TO nFil+nAlto, nCol    ;
					 PENCOLOR Color  PENWIDTH  1
		DRAW LINE in WINDOW &Win at nFil,nAncho       TO nFil+nAlto, nAncho ;
					 PENCOLOR Color  PENWIDTH  1
		// Línea Interior
		DRAW LINE in WINDOW &Win at nFil+2,nCol        TO nFil+2,       nAncho ;
					 PENCOLOR Color  PENWIDTH  1
		DRAW LINE in WINDOW &Win at nFil+nAlto-2,nCol TO nFil+nAlto-2, nAncho ; 
					 PENCOLOR Color  PENWIDTH  1
		DRAW LINE in WINDOW &Win at nFil+2,nCol-2      TO nFil+nAlto-2, nCol-2  ; 
					 PENCOLOR Color  PENWIDTH  1
		DRAW LINE in WINDOW &Win at nFil+2,nAncho+2   TO  nFil+nAlto-2, nAncho+2 ; 
					 PENCOLOR Color  PENWIDTH  1
	ELSE
		DRAW ROUNDRECTANGLE IN WINDOW &Win ;
			AT nFil,nCol TO nAlto,nAncho  ;
			ROUNDWIDTH 15 ROUNDHEIGHT 15 ;
			PENCOLOR color PENWIDTH 2 ;
			FILLCOLOR  ColorFondo
    ENDIF
RETURN




Como dijo el gran pensador Hommer Simpson..., - En este mundo solo hay 3 tipos de personas, los que saben contar y los que no. :shock:
User avatar
mustafa
Posts: 1172
Joined: Fri Mar 20, 2009 11:38 am
DBs Used: DBF
Location: Alicante - Spain
Contact:

Re: draw rectangle

Post by mustafa »

Hola amigacho. como estas ?
Encontré una Demo de Lucho Miranda
A ver si puede servir este código ?

Saludos
Mustafa
Attachments
Rectangle.zip
(2.68 KiB) Downloaded 97 times
User avatar
SALINETAS24
Posts: 667
Joined: Tue Feb 27, 2018 3:06 am
DBs Used: DBF
Contact:

Re: draw rectangle

Post by SALINETAS24 »

Yeeeep.. muy chulos, pero lamentablemente el problema es el mismo.

A mi me da que cuando haces Win_1.Text_3.Enabled:=.f. en un TEXTBOX se redibujan todos los DRAW y se posicionan encima, como si fueran capas. No entiendo porque se tienen que redibujar. Igual hay alguna forma de evitarlo.

Un saludo, y cuidate!!
Como dijo el gran pensador Hommer Simpson..., - En este mundo solo hay 3 tipos de personas, los que saben contar y los que no. :shock:
Post Reply