FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin for Harbour/xHarbour XBrowse: how to keep the selected row position
Posts: 9022
Joined: Thu Oct 06, 2005 08:17 PM
XBrowse: how to keep the selected row position
Posted: Sun Nov 22, 2020 08:10 AM
In this sample, try to press the down arrow and then ESC. The new dialog doesn't keep the position of the selected row but moves it to the top.

Is there a way to keep the selected row position?

Code (fw): Select all Collapse
#include "Fivewin.ch"


FUNCTION MAIN()

    USE CUSTOMER

    TEST()

    TEST()

    RETURN NIL


STATIC FUNCTION TEST()

    LOCAL oDlg, oBrw

    DEFINE DIALOG oDlg;
           SIZE 800, 600

    @ 0, 0 XBROWSE oBrw

    oBrw:CreateFromCode()

    ACTIVATE DIALOG oDlg;
             ON INIT oDlg:SetControl( oBrw );
             CENTER

    RETURN NIL


EMG
Posts: 6755
Joined: Wed Feb 15, 2012 08:25 PM
Re: XBrowse: how to keep the selected row position
Posted: Sun Nov 22, 2020 03:26 PM
Try with this
Code (fw): Select all Collapse
#include "Fivewin.ch"

Static nRowPos := 1

FUNCTION MAIN()

    USE CUSTOMER

    TEST()

    TEST()

    RETURN NIL


STATIC FUNCTION TEST()

    LOCAL oDlg, oBrw

    DEFINE DIALOG oDlg;
           SIZE 800, 600

    @ 0, 0 XBROWSE oBrw

    oBrw:CreateFromCode()
    oBrw:Keyno( nRowPos )

    ACTIVATE DIALOG oDlg;
             ON INIT oDlg:SetControl( oBrw );
             CENTER
    nRowPos  := oBrw:KeyNo

    RETURN NIL
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
Posts: 9022
Joined: Thu Oct 06, 2005 08:17 PM
Re: XBrowse: how to keep the selected row position
Posted: Sun Nov 22, 2020 03:30 PM

Thank you Cristobal, unfortunately your sample works exactly like mine. Did you try it? Am I missing something?

EMG

Posts: 6755
Joined: Wed Feb 15, 2012 08:25 PM
Re: XBrowse: how to keep the selected row position
Posted: Sun Nov 22, 2020 03:51 PM
Try with this code, or use METHODS SaveState/RestoreState
Code (fw): Select all Collapse
Static nRowPos := 1
Static nRowSel := 1

FUNCTION MAIN()

    USE CUSTOMER

    TEST()

    TEST()

    RETURN NIL


STATIC FUNCTION TEST()

    LOCAL oDlg, oBrw

    DEFINE DIALOG oDlg;
           SIZE 800, 600

    @ 0, 0 XBROWSE oBrw

    oBrw:CreateFromCode()
    oBrw:Keyno( nRowPos )
    oBrw:nRowSel := nRowSel
    oBrw:Refresh()


    ACTIVATE DIALOG oDlg;
             ON INIT oDlg:SetControl( oBrw );
             CENTER
    nRowPos  := oBrw:KeyNo
    nRowSel  := oBrw:nRowSel

    RETURN NIL
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
Posts: 9022
Joined: Thu Oct 06, 2005 08:17 PM
Re: XBrowse: how to keep the selected row position
Posted: Sun Nov 22, 2020 04:00 PM

It seems to work, thank you.

EMG

Posts: 9022
Joined: Thu Oct 06, 2005 08:17 PM
Re: XBrowse: how to keep the selected row position
Posted: Sun Nov 22, 2020 04:06 PM
Simplified code:

Code (fw): Select all Collapse
#include "Fivewin.ch"


FUNCTION MAIN()

    USE CUSTOMER

    TEST()

    TEST()

    RETURN NIL


STATIC FUNCTION TEST()

    LOCAL oDlg, oBrw

    STATIC nRowSel := 1

    DEFINE DIALOG oDlg;
           SIZE 800, 600

    @ 0, 0 XBROWSE oBrw

    oBrw:CreateFromCode()

    oBrw:nRowSel = nRowSel

    ACTIVATE DIALOG oDlg;
             ON INIT oDlg:SetControl( oBrw );
             CENTER

    nRowSel = oBrw:nRowSel

    RETURN NIL


EMG

Continue the discussion