Page 1 of 1

PROBLEMA CON ON CHANGE

Posted: Fri Feb 22, 2008 2:44 pm
by Ruben
BUENOS DIAS A TODOS Y SALUDOS DESDE TAMPICO, TAMPS. MEXICO

COMO LES HABIA COMENTADO EN OTROS MENSAJES SOY NUEVO EN ESTO Y PUES SI LES ESTARE PREGUNTANDO DE MUCHAS DUDAS QUE ME VAN SURGIENDO.

AHORITA ESTOY HACIENDO UN MODULO DE CXC Y EN UN LISTBOX YA VISUALICE _ QUE NECESITO DEL DBF DE CLIENTE, PERO QUIERO HACER QUE CUANDO VAYA RECORRIENDO UN REGISTRO, EN OTRO DLG O EN ESE MISMO PERO EN LA PARTE DE ABAJO SE DESPLIEGUE EL RESTO DE LA INFORMACION DE ESOS CLIENTES.

EJEMPLO
DESPLIEGO LOS 3 PRIMEROS DATOS QUE SOLO SON DE CONSULTAS

CLAVE NOMBRE RFC
1 NOMBRE1 GFSE312323
2 NOMBRE2 ERTY423423
...
...
--------------------------------------------------------
AL MOMENTO DE ESTAR UBICADO EN NOMBRE 1 EN ESE MISMO DIALOGO O EN OTRO APARECER EL RESTO DE LA INFORMACION DE NOMBRE1 QUE SERIAN DIRECCION, TELEFONO, ETC. ETC.

AQUI LES ENVIO LA FUNCION QUE LLEVO HASTA EL MOMENTO EN DONDE ME MARCA ERROR EN EL ON CHANGE.

function BrwClientes()

local oDlg, oBrw
local oLbx
local cVar
local n
local oDlg1



local aHBitMaps:= { ReadBitmap( 0, "..\bitmaps\Level1.bmp" ), ; // BitMaps de 14 x 32
ReadBitmap( 0, "..\bitmaps\Level2.bmp" ), ;
ReadBitmap( 0, "..\bitmaps\Level3.bmp" ), ;
ReadBitmap( 0, "..\bitmaps\Level4.bmp" ),;
ReadBitmap( 0, "..\bitmaps\Level5.bmp" ) }

aXDts := {"4","30","30","10","6","10","12","10","6","3","10" }
// WHEN .F. al final


USE Cat_cli

if RecCount() == 0
APPEND BLANK
endif

INDEX ON cat_cli->Nombre TO Nombre
SET INDEX TO Nombre

GO TOP

DEFINE DIALOG oDlg FROM 3, 3 TO 26, 85 TITLE "Administrador de Clientes"
@ 2, 2 SAY oSay PROMPT "Datos Generales"
@ 2, 3 say oSay Prompt "Generales" of oDlg

@ 0, 1 SAY " &Listado de Clientes" OF oDlg
@ 10,1 get aXDts[1] OF oDlg UPDATE when .F.
@ 1, 1 LISTBOX oLbx FIELDS;
cat_cli->Clave, AllTrim( cat_cli->Nombre ),;
cat_cli->RFC;
HEADERS "CLAVE", "NOMBRE", "RFC";
FIELDSIZES 50, 300, 100;

ON CHANGE ( aXDts[1] := cat_cli->clave, aXDts[2] := cat_cli->Nombre, aXDts[3] := cat_cli->calle,;
aXDts[4] := cat_cli->colonia, aXDts[5] := cat_cli->codigo, aXDts[6] := cat_cli->ciudad,;
aXDts[7] := cat_cli->rfc, aXDts[8] := cat_cli->saldo, aXDts[9] := cat_cli->tipo,;
aXDts[10] := cat_cli->cve, aXDts[11] := cat_cli->importe, oDlg:Update() ) ;
SIZE 284, 137 OF oDlg



//oBrw:bChange := {|| Cambios1() }

oLbx:aJustify = {.f., .f., .t.}

@ 8.8, 1 BUTTON "&Agregar" OF oDlg //ACTION EditClient( oLbx, .t. ) SIZE 40, 12
@ 8.8, 10 BUTTON "&Modificar" OF oDlg //ACTION EditClient( oLbx, .f. ) SIZE 40, 12
@ 8.8, 21 BUTTON "&Borrar" OF oDlg //ACTION DelClient( oLbx ) SIZE 40, 12
@ 8.8, 29 BUTTON "&Buscar" OF oDlg //ACTION SeekClient( oLbx ) SIZE 40, 12
@ 8.8, 37 BUTTON "&Imprimir" OF oDlg ;
//ACTION oLbx:Report( "clients Report", .t. ) ; // .t. --> wants preview
//SIZE 40, 12

@ 8.8, 47 BUTTON "&Salir" OF oDlg ACTION oDlg:End() SIZE 40, 12

ACTIVATE DIALOG oDlg

USE

AEval( aHBitmaps, { | hBmp | DeleteObject( hBmp ) } )

return nil



ME GUSTARIA QUE ME AYUDARAN CON ALGUNA SUGERENCIA Y PUES ESTE ES EL CODIGO DE ESTA FUNCION

SALUDOS
RUBEN REYES

Posted: Fri Feb 22, 2008 4:09 pm
by Patricio Avalos Aguirre
Ruben

Prueba lo siguiente

Code: Select all

@ 10,1 get aXDts[1] OF oDlg UPDATE when .F. 
@ 11,1 get aXDts[2] OF oDlg UPDATE when .F. 
...
...

@ 1, 1 LISTBOX oLbx FIELDS;
cat_cli->Clave, AllTrim( cat_cli->Nombre ),;
cat_cli->RFC;
HEADERS "CLAVE", "NOMBRE", "RFC";
FIELDSIZES 50, 300, 100;
ON CHANGE ( aXDts[1]:Varput( cat_cli->clave), ;
aXDts[2]:Varput(cat_cli->Nombre)..
..,:
aEval( aXDts, { |x| x:Refresh() } ) ) ;
SIZE 284, 137 OF oDlg 


Excelente Patricio

Posted: Fri Feb 22, 2008 4:15 pm
by Ruben
Ok Patricio deja probar esta opcion, ya que si habia logrado que funcionara solo que me falta que visualice _ restantes porque aparece a medias solo un pedacito del Listbox de abajo

y pues voy a ver que pasa pero primero probare el tuyo, por cierto no se si tambien tenga que definir otro HEADERS para el resto de _

te envio nuevamente mi codigo hasta donde lo tengo donde ya me funciona, bueno a medias



function BrwClientes()

local oDlg, oBrw
local oLbx
local cVar
local n
local oDlg1



local aHBitMaps:= { ReadBitmap( 0, "..\bitmaps\Level1.bmp" ), ; // BitMaps de 14 x 32
ReadBitmap( 0, "..\bitmaps\Level2.bmp" ), ;
ReadBitmap( 0, "..\bitmaps\Level3.bmp" ), ;
ReadBitmap( 0, "..\bitmaps\Level4.bmp" ),;
ReadBitmap( 0, "..\bitmaps\Level5.bmp" ) }

aXDts := {"4","30","30","10","6","10","12","10","6","3","10" }
// WHEN .F. al final


USE Cat_cli

if RecCount() == 0
APPEND BLANK
endif

INDEX ON cat_cli->Nombre TO Nombre
SET INDEX TO Nombre

GO TOP

DEFINE DIALOG oDlg FROM 3, 3 TO 45, 85 TITLE "Administrador de Clientes"
@ 2, 2 SAY oSay PROMPT "Datos Generales"
@ 2, 3 say oSay Prompt "Generales" of oDlg

@ 0, 1 SAY " &Listado de Clientes" OF oDlg
@ 12, 1 get aXDts[1] OF oDlg UPDATE when .F.
@ 1, 1 LISTBOX oLbx FIELDS;
cat_cli->Clave, AllTrim( cat_cli->Nombre ),;
cat_cli->RFC;
HEADERS "CLAVE", "NOMBRE", "RFC";
FIELDSIZES 50, 300, 100;
ON CHANGE ( aXDts[1] := cat_cli->clave, aXDts[2] := cat_cli->Nombre, aXDts[3] := cat_cli->calle,;
aXDts[4] := cat_cli->colonia, aXDts[5] := cat_cli->codigo, aXDts[6] := cat_cli->ciudad,;
aXDts[7] := cat_cli->rfc, aXDts[8] := cat_cli->saldo, aXDts[9] := cat_cli->tipo,;
aXDts[10] := cat_cli->cve, aXDts[11] := cat_cli->impte, oDlg:Update() ) ;
SIZE 284, 137 OF oDlg



//oBrw:bChange := {|| Cambios1() }

oLbx:aJustify = {.f., .f., .t.}

@ 16, 1 BUTTON "&Agregar" OF oDlg //ACTION EditClient( oLbx, .t. ) SIZE 40, 12
@ 16, 10 BUTTON "&Modificar" OF oDlg //ACTION EditClient( oLbx, .f. ) SIZE 40, 12
@ 16, 21 BUTTON "&Borrar" OF oDlg //ACTION DelClient( oLbx ) SIZE 40, 12
@ 16, 29 BUTTON "&Buscar" OF oDlg //ACTION SeekClient( oLbx ) SIZE 40, 12
@ 16, 37 BUTTON "&Imprimir" OF oDlg ;
//ACTION oLbx:Report( "clients Report", .t. ) ; // .t. --> wants preview
//SIZE 40, 12

@ 16, 47 BUTTON "&Salir" OF oDlg ACTION oDlg:End() SIZE 40, 12

ACTIVATE DIALOG oDlg

USE

AEval( aHBitmaps, { | hBmp | DeleteObject( hBmp ) } )

return nil

Posted: Fri Feb 22, 2008 11:59 pm
by Vital
Raul, yo lo hago desde recursos asi :

Code: Select all

FUNCTION Clientes
	Local oDlg, oBrow, cBus := Space(50), oBus, oMue := Array(17), oCte, vMue := Array(17)
	Select CLIENTES
	OrdSetFocus(2)
	DbGoTop()
	DATABASE oCte
	oCte:Load()
	ActualizaDat(oMue,oCte,vMue,0)
	DEFINE DIALOG oDlg RESOURCE "CLIENTES_01" OF oWin Icon "AAsesores"
		oDlg:lHelpIcon := .F.		
		REDEFINE BTNGET 	oBus Var cBus ID 101 OF oDlg PICTURE "@!" VALID CadenaCte(cBus,oBrow) Message "Teclee la palabra a filtrar los clientes"
			oBus:cToolTip := "Teclee la palabra a filtrar los clientes"
		REDEFINE SAY oMue[01] Var vMue[01] ID 210 Of oDlg COLOR Rgb(255,0,0) 
		REDEFINE SAY oMue[02] Var vMue[02] ID 211 Of oDlg COLOR Rgb(255,0,0) 
		REDEFINE SAY oMue[03] Var vMue[03] ID 212 Of oDlg COLOR Rgb(255,0,0) 
		REDEFINE SAY oMue[04] Var vMue[04] ID 213 Of oDlg COLOR Rgb(255,0,0) 
		REDEFINE SAY oMue[05] Var vMue[05] ID 214 Of oDlg COLOR Rgb(255,0,0) 
		REDEFINE SAY oMue[06] Var vMue[06] ID 215 Of oDlg COLOR Rgb(255,0,0) 
		REDEFINE SAY oMue[07] Var vMue[07] ID 216 Of oDlg COLOR Rgb(255,0,0) 
		REDEFINE SAY oMue[08] Var vMue[08] ID 217 Of oDlg COLOR Rgb(255,0,0) 
		REDEFINE SAY oMue[09] Var vMue[09] ID 218 Of oDlg COLOR Rgb(255,0,0) 
		REDEFINE SAY oMue[10] Var vMue[10] ID 219 Of oDlg COLOR Rgb(255,0,0) 
    REDEFINE SAY oMue[11] Var vMue[11] ID 221 Of oDlg COLOR Rgb(255,0,0) 
    REDEFINE SAY oMue[12] Var vMue[12] ID 222 Of oDlg COLOR Rgb(255,0,0) 
    REDEFINE SAY oMue[13] Var vMue[13] ID 223 Of oDlg COLOR Rgb(255,0,0) 
    REDEFINE SAY oMue[14] Var vMue[14] ID 224 Of oDlg COLOR Rgb(255,0,0) 
    REDEFINE SAY oMue[15] Var vMue[15] ID 220 Of oDlg COLOR Rgb(255,0,0) 
    REDEFINE SAY oMue[16] Var vMue[16] ID 225 Of oDlg COLOR Rgb(255,0,0) 
    REDEFINE SAY oMue[17] Var vMue[17] ID 226 Of oDlg COLOR Rgb(255,0,0) 
		oBrow := TxBrowse():New(oDlg)
			oBrow:CreateFromResource( 102 )
			oBrow:nMarqueeStyle       := MARQSTYLE_HIGHLROW
   		oBrow:nColDividerStyle    := LINESTYLE_BLACK
   		oBrow:nRowDividerStyle    := LINESTYLE_BLACK
   		oBrow:nFreeze             := 4
    	oBrow:bRClicked 					:= { | nRow, nCol | Clientes1ClickRight(oDlg,oBrow,nRow,nCol) }
      oBrow:blDblClick 	 				:= {|| (ModiCliente(oDlg),oBrow:SetFocus())}
      oBrow:bClrStd 						:= {|| { IIF(CLIENTES->ESTATUS="B",Rgb(255,0,0),CLR_BLACK) , IIF(OrdKeyNo()%2=0,Rgb(193,221,255),Rgb(221,245,255))  } }   
      oBrow:bKeyDown            := {|nKey,nFlags| ValidKeyClientes1(nKey,oDlg,oBrow)}
      oBrow:bChange							:= {|| ActualizaDat(oMue,oCte,vMue,1)}
	ACTIVATE DIALOG oDlg ON INIT (Efectos( oDlg, 16 ),MsgInDlg(oDlg,"Catalogo de Clientes"),BarraClientes(oDlg,oBrow))  
	DbClearFilter()
RETURN

// Actualiza los datos que se consultan en clientes
// *******************************************************
FUNCTION ActualizaDat(oMue,oCte,vMue,nNum)
	oCte:Load()
	vMue[01] := AllTrim(oCte:DIRECCION)+" "+oCte:N_EXT+" "+oCte:N_INT
	vMue[02] := "Col. : "+AllTrim(oCte:COLONIA)+", "+AllTrim(oCte:LOCALIDAD)
	vMue[03] := "C.P. : "+oCte:CP+"          Tel : "+oCte:TELEFONO
	vMue[04] := "Contacto : "+AllTrim(oCte:CONTACTO)
	vMue[05] := "Alta : "+Dtoc(oCte:F_INGRESO)+"          Ruta : "+AllTrim(Str(oCte:RUTA))+"          Vendedor : "+oCte:VENDEDOR
	vMue[06] := "Saldo : "+Transform(oCte:SALDO,"9,999,999.99")
	vMue[07] := "Condiciones : "+Transform(oCte:DIASCRED,"999")+" DIAS"
	vMue[08] := "Credito : "+Transform(oCte:MONTOCRED,"9,999,999.99")
	vMue[09] := "P. Venta : "+Dtoc(oCte:F_PRIVTA)
	vMue[10] := "U. Venta : "+Dtoc(oCte:F_ULTVTA)
	vMue[11] := "e-Mail : "+Alltrim(oCte:CORREO)
	vMue[12] := "Extranjero : "+IIF(oCte:EXTRANJERO,"Si","No")
	vMue[13] := "Es de Gobierno : "+IIF(oCte:GOBIERNO,"Si","No")
	vMue[14] := "Es Distribuidor : "+IIF(oCte:DISTRIBUIDOR,"Si","No")
	vMue[15] := "T. Vendido : "+Transform(oCte:TOTALCARGO,"999,999,999.99")
	vMue[16] := "Se le Factura : "+IIF(oCte:FACTURA,"Si","No")
	vMue[17] := "Cliente Fijo : "+IIF(oCte:FIJO,"Si","No")
	IF nNum = 1
		FOR i := 1 To Len(oMue)
			oMue[i]:Refresh()
		NEXT
	ENDIF	
RETURN .T.

GRACIAS VITAL

Posted: Sat Feb 23, 2008 12:33 am
by Ruben
GRACIAS VITAL, LO VOY A PROBAR Y TE COMENTARE

MUCHAS GRACIAS A TODOS POR SU AYUDA

SALUDOS DESDE MEXICO.

POR CIERTO SIN RECURSOS YA LO HECHE A ANDAR

AHORA VOY A PROBAR TU SUGERENCIA VITAL.

HASTA PRONTO