Última linea al final del browse (SOLUCIONADO)

Última linea al final del browse (SOLUCIONADO)

Postby Andrés González » Fri Dec 20, 2013 9:45 am

Tanto en TCBRWOSE como en XBROWSE le digo que valla o al principio goto(1) o al final con goto( lastrec()) según me interese dependiendo de la base de datos. Si le digo que vaya al principio no hay problema ya que me muestra todas las demás lineas a continuación de la primera, pero si le digo que me vaya a la última me la coloca en la primera linea del browse y las anteriores ocultas y el resto del browse en blanco. Las puedo ver moviendo las lineas sin problemas, lo cual es un incordio para el usuario, pero como puedo hacer para que el último registro se me muestre al final del browse, o sea, como puedo hacer para que el registro seleccionado sea el último del browse que se muestra y se vean los anteriores hasta la linea primera del browse. Claro está que cuando se trate del primer registro debe estar en la primera linea.
Last edited by Andrés González on Wed Dec 25, 2013 7:38 pm, edited 1 time in total.
Saludos

Andrés González desde Mallorca
User avatar
Andrés González
 
Posts: 627
Joined: Thu Jan 19, 2006 10:45 am
Location: Mallorca

Re: Última linea al final del browse

Postby Marcelo Via Giglio » Fri Dec 20, 2013 12:56 pm

Hola,

intenta con oBrw:gotop() seguido de oBrow:goBottom()

nos comentas si funciona

saludos
Marcelo Via Giglio
 
Posts: 1051
Joined: Fri Oct 07, 2005 3:33 pm
Location: Cochabamba - Bolivia

Re: Última linea al final del browse

Postby Andrés González » Fri Dec 20, 2013 8:32 pm

Ya lo había intentado y no me funciona....
Code: Select all  Expand view
@ -1, 16 COLUMN BROWSE oBrw OF oWndEdit ;
             FONT oFont ;
             SIZE oWnd:nWidth(),oWnd:nHeight();  //Ancho y lago posilbe               COLOR CLR_BLACK, 14481663;
             ON CHANGE ( aMantStack[nLen, 4] := str(recno()), oMsgRecNo:SetText("Registro: "+ alltrim( str(recno())) + "/" + alltrim(str(lastrec())) ), oWndEdit:Update() )

 
     //Añado columna si esta borrado el registro para eliminacion
     ADD COLUMN TO BROWSE oBrw ;
         HEADER "D." OEM ;
         DATA  iif(deleted(),'>>','');
         NOBAR CENTER ;
         COLORS CLR_WHITE , 9129488  ;  //nRGB( 190, 215, 190 )
         SIZE 15



    //Añado una columna por cada campo de la base de datos
    for nPos := 1 to Len(f_expd)                         // Array con NOMBRE DE CAMPOS
      ADD COLUMN TO BROWSE oBrw;                         //
          HEADER f_nomd[nPos] OEM ;                      // Array con TITULOS DE LAS COLUMNAS
          DATA FieldWBlock( f_expd[nPos] , Select())     // Aca se genera el CodeBlock para el CAMPO
    next



    //Las dos lineas siguientes pone el color en las cabeceras de columnas
    oBrw:nClrForeHead := CLR_WHITE//CLR_BLACK
    oBrw:nClrBackHead := 9129488//CLR_HCYAN  16436871

    //Las dos lineas siguientes pone el color a linea que estas explorando
    oBrw:nClrForeFocus := CLR_BLACK //CLR_WHITE
    oBrw:nClrBackFocus := CLR_YELLOW //CLR_CYAN

     /*
    //Coloco lineas de distintos colores
    oBrw:nClrPane := { || IF((OrdKeyNo()) % 2 == 0,;
                          16777184 , 16119285  ) }  //     14481663

       // oBrw:nRowCount() //Esto nos da el numero de lineas que se muestran el el browse
   // oBrw:bLDblClick = { | nRow, nCol | EditCell( oBrw, nRow, nCol ) }
   // oBrw:lNoLiteBar := .t.  // Hace desaparecer la barra cursor del browse
   // oBrw:lNoGrayBar := .t.  // Hace desparecer la barra gris cuando pierde el foco
   oBrw:lMChange   := .t.  // set false to prevent Mouse colm resize/drag

   oBrw:lLogicDrop := .t.  // use crazy logic dropbox
   oBrw:lNoHScroll := .t.  // don't use that pesky horiz scroll bar
  // oBrw:nAdjColumn :=  3   // expand this column to flush table right
  // oBrw:nFreeze    :=  3    // This will freeze all & prevent horiz scrolling
                             // NOTE can't resize/drag on frozen columns


    */




    oBrw:bKeyChar  = { | nKey | zoom() } //Aqui puedes realizar el proceso de accion por tecla    MsgInfo( nKey ) &(x_fun[5])  SI REA
                                                                     //UNA FUNCION PUEDES REALIZAR DISTINTAS COSAS DEPENDIENDO DE LA TECLA PULSADA

    //oBrw:bLDblClick := { | nRow, nCol | EditCell( oBrw, nRow, nCol ) } //Para definir una accion cuando se pulse dobleclic
    oBrw:bLDblClick := { | nRow, nCol | zoom() } //Con el dobleclic muestro el registro. &(x_fun[5])
    oBrw:bRClicked  := { | nRow, nCol | ShowPopup( nRow, nCol, oBrw ) }

    oWndEdit:oClient := oBrw //Hago que el browse se adapte al espacio que le queda libre

     

    //----------------------------------------------------------------------------//
    //            Sistema de SPLITTER. objeto oSpl                                //
     //----------------------------------------------------------------------------//
    @ 1, 124 SPLITTER oSpl ;
             VERTICAL ;
             PREVIOUS CONTROLS oOut ;
             HINDS CONTROLS oBrw;
                 LEFT MARGIN 100;
             RIGHT MARGIN 200 ;
             SIZE 4, oWnd:nHeight()  PIXEL ;
             OF oWndEdit ;
             _3DLOOK ;
             UPDATE
         oBrw:goTop()    
         oBrw:goBottom()  
         oBrw:SetFocus() //activo el browse
   
Saludos

Andrés González desde Mallorca
User avatar
Andrés González
 
Posts: 627
Joined: Thu Jan 19, 2006 10:45 am
Location: Mallorca

Re: Última linea al final del browse

Postby cnavarro » Fri Dec 20, 2013 9:40 pm

Andres
Quizas tengas que definir un bGoBottom teniendo en cuenta, según creo, que la DATA nDataRows nos dice cuantos datos estamos viendo y restando dicho valor al ultimo registro para posicionarnos en el.
Como no estoy seguro que dicha DATA nDataRows tenga dicha informacion, podríamos obtener las filas visibles de esta otra forma:
nFilas := Int( BrwHeight()/DataHeight() )
Es una idea
Cristobal Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
User avatar
cnavarro
 
Posts: 6504
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: Última linea al final del browse

Postby Marcelo Via Giglio » Sat Dec 21, 2013 2:44 am

Hola,

esto funciona, o es otra cosa la que deseas hacer

Code: Select all  Expand view
#include "fivewin.ch"
#include "xbrowse.ch"

function main()
local odlg, obrw

use customer new

DEFINE DIALOG odlg FROM 10,10 TO 40,90

   @1,1 XBROWSE obrw ALIAS "customer" OF odlg

   oBrw:CreateFromCode()
     
ACTIVATE DIALOG oDlg CENTER ON INIT ( oDlg:oClient := oBrw, oDlg:Resize(), obrw:gotop(), obrw:gobottom() )

use
return nil

 


saludos

Marcelo
Marcelo Via Giglio
 
Posts: 1051
Joined: Fri Oct 07, 2005 3:33 pm
Location: Cochabamba - Bolivia

Re: Última linea al final del browse

Postby Andrés González » Wed Dec 25, 2013 7:37 pm

Solucionado, el problema que tenía por si alguien le sucede eran los scopes, que me volvian a situar el registro en un determinado punto. Si situo el gotop y gobottom allí ya funciona. Gracias a todos por ayudarme a descubrir el error.

Code: Select all  Expand view
********************************
  function setScope(v_op)
  //Realiza un filtro rapido por el indice activo.
  local x_rec := recno()
  DEFAULT v_op := 1

         if !Empty(x_scope1[v_op])

             oBrw:Gotop()
         //oBrw:Refresh()
         if !Empty(x_scope2[v_op])
                   OrdScope(0, &(x_scope1[v_op]))
                   OrdScope(1, &(x_scope2[v_op]))
             else
                   OrdScope(0, &(x_scope1[v_op]))
                   OrdScope(1, &(x_scope1[v_op]))
             endif
               dbGotop()

            else
               OrdScope( 0, Nil )
            OrdScope( 1, Nil )
         endif
            goto x_rec        
            oBrw:Gotop()
         oBrw:Gobottom()

return nil
Saludos

Andrés González desde Mallorca
User avatar
Andrés González
 
Posts: 627
Joined: Thu Jan 19, 2006 10:45 am
Location: Mallorca


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 38 guests