Page 1 of 1

Numero sequencial en ListBox

Posted: Mon Apr 28, 2014 9:22 pm
by daniel_halon
Buenas tardes amigos, estoy con un problema que debe ser simple pero no estoy encontrando la manera de hacerlo.
Tengo un ListBox y quiero que tenga a la izquierda en una columna el numero sequencial de la lbx, coloque oLbx:nRowPos e aparece solo el numero 1 y en la medida que voy bajando por la lbx van apareciendo los numeros sequenciales como en la foto

Code: Select all


           
     REDEFINE LISTBOX oLbx VAR retorno ;
             FIELDS ALLTRIM (str(oLbx:nAt)),;
                    str(Tempo60->a_numped60),; 
                    Tempo60->a_cli___60,;
                    IIF(TEMPO60->A_STATUS60 == 'C','CANCELADO',SubStr(Tempo60->a_nome__60,1,20)),;
                    Dtoc(Tempo60->a_dtped_60),;
                    Tempo60->a_turno_60,;
                    Tempo60->a_horae_60,;
                    Tempo60->a_horas_60,;
                    IIF ( !empty( Tempo60->a_progra60 ), 'PRO', strzero( ( time_secs( iIF (empty(Tempo60->a_horas_60),time(),Tempo60->a_horas_60) ) - time_secs(Tempo60->a_horae_60) )/60  ,3,0 ) ),;
                    Tempo60->a_entre_60;
             HEADERS "Seq",;
                     "Numero",;
                     "Telefone",;
                     "Nome",;
                     "Data",;
                     "T",;
                     "H.Ent",;
                     "H.Sai",;
                     "Dem",; 
                     "Entre";
                     ID 120;
                     FONT oFont1;
          FIELDSIZES 30,65,85,250,80,20,50,50,50,80 UPDATE;
                     OF oDlgPdia;
          On DBLCLICK( Dados_Pedido(oDlgPdia),lFora := .t.) //SELECT a_dtped_60 FOR tele0050->a_dtmov_50;
      
       oLbx:nAt      := 01
      oLbx:bKeyDown      :={|nKey|IF (nkey=13, Dados_Pedido(oDlgPdia), ''),oLbx:Refresh(),lFora := .T.,IF(nKey=46,Cancela_Pedido_dia(oLbx),'')}
      oLbx:nClrPane     := { || IIF( TEMPO60->A_STATUS60 == "C", CLR_ROSA, IIF( ( oLbx:cAlias)->( OrdKeyNo()) %2 == 1, CLR_LGREEN,CLR_HYEL ))}
      oLbx:nClrBackFocus := CLR_AZUL    // Cor do Cursor Em Cima do Ötem
    *  oLbx:nClrForeFocus := CLR_AMARELO // cor da letra da barra ativa
      oLbx:nLineStyle    := 3           // Estilo das linhas nos dados da Browse
      oLbx:aJustIFy      := { .T.,.T.,.F.,.F.,.F.,.F.,.F.,.F.,.F.,.F.} 
      oLbx:SetFocus()                   // Refocus on The Browse
      oLbx:Refresh()                    // Estabiliza o Browse/Listbox
      oLbx:lCellStyle   := .F.
      *oLbx:bRClicked= { || oLbx:ShowSizes() }      // nao sei tem q pesquisar
              
     ACTIVATE DIALOG oDlgPdia CENTERED //VALID lFora
     setkey(VK_F7,{|| Ver_pedidos_do_dia() })
 Return 
 
[img]
http://www.portobakers.com.br/lbx.jpg
[/img]

Re: Numero sequencial en ListBox

Posted: Tue Apr 29, 2014 1:05 am
by joseluisysturiz
Para los que quieran aprovechar, esta forma la encontre en un foro para usar con MYSQL, corrio perfectamente, saludos... :shock:

* CREAR COLUMNA VIRTUAL ENUMERANDO LOS REGISTROS, PARA SER USADO EN EL XBROWSE

SELECT @rownum:=@rownum + 1 'No.', producto_nombre FROM delipollo_productos P, (SELECT @rownum:=0) R

Re: Numero sequencial en ListBox

Posted: Tue Apr 29, 2014 1:23 am
by FranciscoA
Otra manera:
ADD TO oLbx AT 1 DATA StrZero(oLbx:KeyNo(),5) HEADER "Item"

Re: Numero sequencial en ListBox

Posted: Tue Apr 29, 2014 2:06 am
by Willi Quintana
Mas fácil que pellizcar un vidrio.. pero solo para arrays.... para dbfs,,, ave ,, veo

Code: Select all

       REDEFINE LISTBOX oLbx;
                FIELDS  STR(oLbx:nAt,2) + ".", ;  //    numero secuencial ....
                        aDetVen[oLbx:nAt,3], ;
                        aDetVen[oLbx:nAt,1], ;
                        aDetVen[oLbx:nAt,2], ;
 
 

Re: Numero sequencial en ListBox

Posted: Tue Apr 29, 2014 3:16 pm
by ACC69
Hola Daniel Halon otro ejemplo de numero secuencial o movimientos,espero que te ayude.

Code: Select all

REDEFINE LISTBOX oLbx4;
               FIELDS  [b]STR((S13)->MV_NUMV)[/b],EXT_xNIV((S13)->MV_NCTA),STR((S13)->SEGNEG,4),DTOC((S13)->MV_FHAM),SUBS((S13)->MV_REFE,1,12),SUBS((S13)->MV_CONC,1,28),;
                       TRANS((S13)->MV_CARG,"@Z 99,999,999.99"),TRANS((S13)->MV_ABON,"@Z 99,999,999.99"), ;
                       TRANS((S13)->IMPBS1,"@Z 9,999,999.99"),TRANS((S13)->TASA1,"@Z 99"),TRANS((S13)->IVA_1,"@Z 999,999.99"),;
                       TRANS((S13)->IMPBS2,"@Z 999,999.99"),TRANS((S13)->TASA2,"@Z 99"),TRANS((S13)->IVA_2,"@Z 999,999.99"),TRANS((S13)->OTROS,"@Z 99,999.99"),;
                       IF((S13)->AFECTAR, "Sí" ,"No")                                                    ;
               HEADER  "[b]Num Mov[/b]",Cuenta","Segm", "Fecha", "Ref.", "Concepto", "Cargo", "Abono", ;
                       "Base IVA","Tasa","IVA", "Base IVA", "Tasa","IVA", "Otros","Afect" ;
               SIZES   113,32,50,58,186,70,70    ,;
                        70,30,65, 60,35,70,60,36  ;
               ALIAS   (S13)->(ALIAS()) ID 114 OF oDlg2 colors CLR_BLACK, rgb( 210, 230, 250 )

//------------------------------------------------------------------------------

STATIC FUNCTION Reg_Cap()
 Local nNumMov,cCtaSN

 IF lAdd  // SI AGREGA NUEVO REGISTRO
     (S13)->(DbGoBottom())

     [b]nNumMov  += nNumMov     //(S13)->MV_NUMV + 1 // Incrementa nuevos registros de 1 a 99999[/b]

     (S13)->(DbSkip())
     (S13)->(DbAppend())

     (S13)->FECALTA := DATE()
     (S13)->REGHORA := AMPM(TIME())
     (S13)->NICKUSUA:= cNombUsua
     (S13)->NOMBUSUA:= cNombre
 ELSE
     [b]nNumMov := (S13)->MV_NUMV[/b]
 ENDIF

 IF !OCUPADO(S13) // Bloquea S13:=MOVTxMxA.DBF
   [b](S13)->MV_NUMV := nNumMov // Incrementa registros[/b]
   (S13)->MV_TIPO := cTipo
   (S13)->MV_NUMP := nNumPol
   (S13)->MV_FHAM := dFecha


   (S13)->(DbCommit())
   (S13)->(DbUnlock()) // Desbloquea
 ENDIF

Saludos y buen dia.!

Atte: Adrian C. C.

Re: Numero sequencial en ListBox

Posted: Thu May 01, 2014 7:58 pm
by daniel_halon
Voy a testar todo esto y retorno, gracias a todos, y parecia algo tan simple.....

Re: Numero sequencial en ListBox

Posted: Fri May 02, 2014 2:24 am
by joseluisysturiz
daniel_halon wrote:Voy a testar todo esto y retorno, gracias a todos, y parecia algo tan simple.....
Colega, creo que mas facil que la que te puso Francisco y mi persona, dependiendo si es para DBF o MYSQL, ademas que la que te dio Quinata para array, imposible, pero nose porque lo ves dificil, pregunta y te ayudamos a aclarar las dudas, saludos... :shock:

Re: Numero sequencial en ListBox

Posted: Sat May 03, 2014 3:42 am
by Willi Quintana
Otra solución que se me ocurre (al vuelo), es la siguiente:
1ro.- Indexar la DBF según como se quiera que se ordene,,,
2do.- Hacer un copy to a una DBF temporal
3ro.- Visualizar la DBF temporal de la siguiente forma:

Code: Select all

USE tempo60
INDEX ON ......
COPY TO Tempoxx
USE Tempoxx
 REDEFINE LISTBOX oLbx VAR retorno ;
             FIELDS ALLTRIM (str(Recno(),10,0),;
                    str(Tempoxx->a_numped60),; 
                    Tempoxx->a_cli___60,;
                    IIF(TEMPOxx->A_STATUS60 == 'C','CANCELADO',SubStr(Tempoxx->a_nome__60,1,20)),;
                    Dtoc(Tempoxx->a_dtped_60),;
                    Tempoxx->a_turno_60,;
                    Tempoxx->a_horae_60,;
                    Tempoxx->a_horas_60,;
                    IIF ( !empty( Tempoxx->a_progra60 ), 'PRO', strzero( ( time_secs( iIF (empty(Tempoxx->a_horas_60),time(),Tempoxx->a_horas_60) ) - time_secs(Tempoxx->a_horae_60) )/60  ,3,0 ) ),;
                    Tempoxx->a_entre_60;
             HEADERS "Seq",;
                     "Numero",;
                     "Telefone",;
                     "Nome",;
                     "Data",;
                     "T",;
                     "H.Ent",;
                     "H.Sai",;
                     "Dem",; 
                     "Entre";
                     ID 120;
                     FONT oFont1;
          FIELDSIZES 30,65,85,250,80,20,50,50,50,80 UPDATE;
                     OF oDlgPdia;
          On DBLCLICK( Dados_Pedido(oDlgPdia),lFora := .t.) //SELECT a_dtped_60 FOR tele0050->a_dtmov_50;
      
       oLbx:nAt      := 01
      oLbx:bKeyDown      :={|nKey|IF (nkey=13, Dados_Pedido(oDlgPdia), ''),oLbx:Refresh(),lFora := .T.,IF(nKey=46,Cancela_Pedido_dia(oLbx),'')}
      oLbx:nClrPane     := { || IIF( TEMPOxx->A_STATUS60 == "C", CLR_ROSA, IIF( ( oLbx:cAlias)->( OrdKeyNo()) %2 == 1, CLR_LGREEN,CLR_HYEL ))}
      oLbx:nClrBackFocus := CLR_AZUL    // Cor do Cursor Em Cima do Ötem
    *  oLbx:nClrForeFocus := CLR_AMARELO // cor da letra da barra ativa
      oLbx:nLineStyle    := 3           // Estilo das linhas nos dados da Browse
      oLbx:aJustIFy      := { .T.,.T.,.F.,.F.,.F.,.F.,.F.,.F.,.F.,.F.} 
      oLbx:SetFocus()                   // Refocus on The Browse
      oLbx:Refresh()                    // Estabiliza o Browse/Listbox
      oLbx:lCellStyle   := .F.
      *oLbx:bRClicked= { || oLbx:ShowSizes() }      // nao sei tem q pesquisar
              
     ACTIVATE DIALOG oDlgPdia CENTERED //VALID lFora
     setkey(VK_F7,{|| Ver_pedidos_do_dia() })
 Return 
 

Re: Numero sequencial en ListBox

Posted: Sat May 03, 2014 3:47 am
by joseluisysturiz
Willi, si mal no entendi lo que el colega quieres es colocar del lado izquierdo los numeros de filas estilo excel, ejemplo...

columnas


No. codigo nombre
01 001 jose
02 005 maria
03 006 juana
04 002 pedro

creo eso es lo que quiere el colega y con lo que le dijimos, si es eso, puede hacerlo asi de facil, saludos... :shock: