PROBLEMA CON ON CHANGE

PROBLEMA CON ON CHANGE

Postby Ruben » Fri Feb 22, 2008 2:44 pm

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 ALGUNOS CAMPOS 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
User avatar
Ruben
 
Posts: 40
Joined: Wed Feb 20, 2008 5:40 pm
Location: Tampico,Tamps. México

Postby Patricio Avalos Aguirre » Fri Feb 22, 2008 4:09 pm

Ruben

Prueba lo siguiente
Code: Select all  Expand view  RUN
@ 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

Saludos
Patricio

__________________________________________________________________
Version: Harbour 3.2.0dev (r1307082134),Compiler: Borland C++ 5.8.2 (32-bit)
PCode version: 0.3, FWH 13.2
http://www.sialm.cl
User avatar
Patricio Avalos Aguirre
 
Posts: 1060
Joined: Fri Oct 07, 2005 1:56 pm
Location: La Serena, Chile

Excelente Patricio

Postby Ruben » Fri Feb 22, 2008 4:15 pm

Ok Patricio deja probar esta opcion, ya que si habia logrado que funcionara solo que me falta que visualice los campos 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 los campos

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
User avatar
Ruben
 
Posts: 40
Joined: Wed Feb 20, 2008 5:40 pm
Location: Tampico,Tamps. México

Postby Vital » Fri Feb 22, 2008 11:59 pm

Raul, yo lo hago desde recursos asi :

Code: Select all  Expand view  RUN
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.
Vital
 
Posts: 58
Joined: Mon Nov 06, 2006 6:56 am

GRACIAS VITAL

Postby Ruben » Sat Feb 23, 2008 12:33 am

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
User avatar
Ruben
 
Posts: 40
Joined: Wed Feb 20, 2008 5:40 pm
Location: Tampico,Tamps. México


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 36 guests