Page 1 of 1

Grid no funciona

Posted: Tue Jul 08, 2014 7:56 pm
by arroya2
Hola amigos estoy cambiando una consulta tipo tabla realizada con Browse a Grid y no consigo que funcione.
Haced el favor de echarle un vistazo e indicarme en que me puedo estar equivocando:

Code: Select all

Static Function Tabla()

Local nRecno:=Recno()
Local nOldIndice:=0
Local nTotalCli:=0

Private bColor := { || If( This.CellRowIndex/2==Int(This.CellRowIndex/2), ;
						{ 234 , 244 , 255 }, { 255 , 255 , 255 } ) }	
Private fColor := { || If( This.CellRowIndex/2==Int(This.CellRowIndex/2), ;
						{ 0 , 0 , 150 }, { 0 , 0 , 0 } ) }	

If Clientes->(OrdNumber())!=1
	nOldIndice:=Clientes->(OrdNumber())		// Recojo en nOldIndice el nº de indice activo
	Clientes->(OrdSetFocus(1))					// Establezco como índice activo el uno
EndIf

nTotalCli:=Clientes->(OrdKeyCount())		// Recojo en nTotalCli el número Total de Clientes

If nOldIndice!=0
	Clientes->(OrdSetFocus(nOldIndice))		// Vuelvo a activar el antiguo índice
EndIf

Clientes->(DbGoTo(nRecno))						// Y vuelvo a ir al antiguo registro

SET BROWSESYNC ON

DEFINE WINDOW wTabla AT 0 , 0 ;
	WIDTH		1024 ;
	HEIGHT	733 ;
	TITLE		'Fichero de Clientes' ;
	ICON		'C:\RecMedWin54\Iconos\AddSymbol.ico' ;
	MODAL ;
	FONT		'Times New Roman' ;
	SIZE		15 ;
	NOSIZE ;
	ON INIT ActualizaStatusBar()

	ON KEY ESCAPE OF wTabla ACTION wTabla.Release
	ON KEY PRIOR OF wTabla ACTION ActualizaStatusBar()
	ON KEY NEXT  OF wTabla ACTION ActualizaStatusBar()
**************************************************** StatusBar ****************************************
	DEFINE STATUSBAR
		STATUSITEM ''	WIDTH 100
		CLOCK				WIDTH 70
		DATE				WIDTH 100
	END STATUSBAR

**************************************************** Grid *********************************************
	@ 0 , 0 GRID Grid_1 ;
		WIDTH					1018 ;
		HEIGHT				682 ;
		HEADERS				{	'Apellidos',				'Nombre',					'DNI', ;
									'Dirección',				'Población', 				'Provincia', ;
									'Teléfono', 				'F. Nacimiento', 			'Restricción Arm.', ;
									'Restricción Con.',		'Restricción Emb.',		'F. Aviso Con.', ;
									'F. Aviso Emb.',			'F. Aviso Arm. A',		'F. Aviso Arm. AE', ;
									'F. Aviso Arm. AEM', 	'F. Aviso Arm. B',		'F. Aviso Arm. C', ;
									'F. Aviso Arm. D', 		'F. Aviso Arm. E', 		'F. Aviso Arm. F', ;
									'F. Aviso Arm. SP' } ;
		WIDTHS				{	460 ,							270 ,							140 , ;
									480 ,							270 ,							188 , ;
									125 ,							144 ,							150 , ;
									150 ,							150 ,							130 , ;
									130 ,							150 ,							160 , ;
									175 ,							150 ,							150 , ;
									150 ,							150 ,							150 , ;
									160 } ;
		ROWSOURCE 			'Clientes' ;
		COLUMNFIELDS		{	'Clientes->APELLIDOS',	'Clientes->NOMBRE',		'Clientes->DNI', ;
									'Clientes->DOMICILIO',	'Clientes->POBLACION',	'Clientes->PROVINCIA', ;
									'Clientes->TELEFONO', 	'Clientes->FECHANAC',	'Clientes->RESTRIARM', ;
									'Clientes->RESTRICON',	'Clientes->RESTRIEMB',	'Clientes->AVICON', ;
									'Clientes->AVIEMB',		'Clientes->AVIARMA',		'Clientes->AVIARMAE', ;
									'Clientes->AVIARMAEM', 	'Clientes->AVIARMB', 	'Clientes->AVIARMC', ;
									'Clientes->AVIARMD',		'Clientes->AVIARME',		'Clientes->AVIARMF', ;
									'Clientes->AVIARMSP' } ;
		VALUE					{Clientes->(OrdKeyNo()), 1} ;
		FONTCOLOR			{0 , 0 , 255} ;
		JUSTIFY				{	GRID_JTFY_LEFT,			GRID_JTFY_LEFT,			GRID_JTFY_LEFT, ;
									GRID_JTFY_LEFT,			GRID_JTFY_LEFT,			GRID_JTFY_LEFT, ;
									GRID_JTFY_LEFT,			GRID_JTFY_CENTER,			GRID_JTFY_RIGHT, ;
									GRID_JTFY_RIGHT,			GRID_JTFY_RIGHT,			GRID_JTFY_CENTER, ;
									GRID_JTFY_CENTER,			GRID_JTFY_CENTER,			GRID_JTFY_CENTER, ;
									GRID_JTFY_CENTER,			GRID_JTFY_CENTER,			GRID_JTFY_CENTER, ;
									GRID_JTFY_CENTER,			GRID_JTFY_CENTER,			GRID_JTFY_CENTER, ;
									GRID_JTFY_CENTER } ;
		DYNAMICBACKCOLOR	{	bColor,						bColor,						bColor, ;
									bColor,						bColor,						bColor, ;
									bColor,						bColor,						bColor, ;
									bColor,						bColor,						bColor, ;
									bColor,						bColor,						bColor, ;
									bColor,						bColor,						bColor, ;
									bColor,						bColor,						bColor, ;
									bColor } ;
		ON CHANGE		ActualizaStatusBar() ;
		ON DBLCLICK		wTabla.Release
END WINDOW

CENTER WINDOW wTabla
ACTIVATE WINDOW wTabla

Return
El problema que me da es que no sale nada porque se bloquea en un buqle que nunca termina.

Muchas gracias de antemano.

Rafael Pérez

Re: Grid no funciona

Posted: Tue Jul 08, 2014 10:47 pm
by danielmaximiliano
te falto la tabla....

Re: Grid no funciona

Posted: Wed Jul 09, 2014 3:55 am
by Javier Tovar
Al parecer esta bien, pero seria mejor que subieras un demo minimo completo!

Saludos
danielmaximiliano wrote:te falto la tabla....
:shock:

Saludos

Re: Grid no funciona

Posted: Wed Jul 09, 2014 10:31 am
by arroya2
Hola:
Os mando todo lo necesario y una versión resumida del programa.
Prueba09-07-2014.zip
(976.39 KiB) Downloaded 263 times
Sigue fallando

Saludos
Rafael Pérez

Re: Grid no funciona

Posted: Wed Jul 09, 2014 4:28 pm
by arroya2
Ya he encontrado el problema:

Code: Select all

Static Function ActualizaStatusBar()

*******wTabla.Grid_1.Refresh()
wTabla.StatusBar.Item(1):=	'Número de Cliente: '+Ltrim(Str(Tabla->NumCli))+ ;
									'   -   Elemento '+Ltrim(Str(OrdKeyNo()))+' de '+Ltrim(Str(OrdKeyCount()))

Return
wTabla.Grid_1.Refresh() provoca la inestabilidad, no entiendo por qué, pero he eliminado la línea y ya va bien

Saludos y gracias
Rafael Pérez