XBROWSE Column Question
XBROWSE Column Question
hi,
how can i "optimize" Column wide (STRETCHCOL_WIDEST)
how can i SET Cursor into 5th Column (also when outside Screen)
how can i "optimize" Column wide (STRETCHCOL_WIDEST)
how can i SET Cursor into 5th Column (also when outside Screen)
greeting,
Jimmy
Jimmy
- nageswaragunupudi
- Posts: 10691
- Joined: Sun Nov 19, 2006 5:22 am
- Location: India
- Contact:
Re: XBROWSE Column Question
:nStretchCol := STRETCHCOL_LASThow can i "optimize" Column wide (STRETCHCOL_WIDEST)
Stretches the last column to fit the GridWidth
:nStretchCol := STRETCHCOL_WIDEST
Further stretches the widest character column to fit the GridWidth.
:nStretchCol := nCol
Similarly, stretches the column whose nCreationOrder is the same as nCol.
how can i SET Cursor into 5th Column (also when outside Screen)
Code: Select all | Expand
oBrw:nSelCol := 5
oBrw:RefreshCurrent()
[/col]
or use :GoToCol( oCol )
oCol can be creationorder / header / column object
[code]
oBrw:GoToCol( 5 )
Regards
G. N. Rao.
Hyderabad, India
G. N. Rao.
Hyderabad, India
Re: XBROWSE Column Question
hi,
is there a Way to "scroll" horizontal by CODE
thx for Answernageswaragunupudi wrote:But we can go to only a column which is already visible on the screen. (not hidden or outside the grid width)
is there a Way to "scroll" horizontal by CODE
greeting,
Jimmy
Jimmy
- nageswaragunupudi
- Posts: 10691
- Joined: Sun Nov 19, 2006 5:22 am
- Location: India
- Contact:
Re: XBROWSE Column Question
oBrw:GoRight() // one column to the right
oBrw:GoRightMost() // go to last column
oBrw:GoRightMost() // go to last column
Regards
G. N. Rao.
Hyderabad, India
G. N. Rao.
Hyderabad, India
Re: XBROWSE Column Question
hi,
ok, thx for Answernageswaragunupudi wrote:oBrw:GoRight() // one column to the right
oBrw:GoRightMost() // go to last column
greeting,
Jimmy
Jimmy
Re: XBROWSE Column Question
hi,
after Answer of Method
i have search for "more"
there is a
but no Sample how to use it ...
it seem this CODE work
---
when switch ORDSETFOCUS() or SET INDEX TO i try to find Column in XBROWSE
when have NO "own" Header it will display Name of FIELD in Header
in this case this CODE will work where i use INDEXKEY() or OrdKey() to look which FIELD is used
p.s. what is better to use INDEXKEY() or OrdKey()
after Answer of Method
Code: Select all | Expand
oBrw:GoRight() // one column to the right
oBrw:GoRightMost() // go to last column
there is a
Code: Select all | Expand
METHOD GoToCol( oCol ) CLASS TXBrowse
it seem this CODE work
Code: Select all | Expand
oBro:GoToCol(oBro:aCols[nPosi])
when switch ORDSETFOCUS() or SET INDEX TO i try to find Column in XBROWSE
when have NO "own" Header it will display Name of FIELD in Header
in this case this CODE will work where i use INDEXKEY() or OrdKey() to look which FIELD is used
Code: Select all | Expand
STATIC FUNCTION FindColumnHeader( oBro )
LOCAL aHeaders := {}
LOCAL nPosi := 0
LOCAL n, cSeek, aToken
aToken := AtInside( "+", INDEXKEY() ) // -> hb_ATokens()
// get rid of Function like UPPER() in IndexKey()
cSeek := StripFunc( aToken[ 1 ] )
FOR n := 1 TO LEN( oBro:aCols )
AADD( aHeaders, oBro:aCols[ n ] :cHeader )
NEXT
// seek in Header if FIELD match
nPosi := ASCAN( aHeaders, { | x | x = cSeek } )
IF nPosi > 0
// jump to Column
oBro:GoToCol(oBro:aCols[nPosi])
ENDIF
RETURN nPosi
Code: Select all | Expand
STATIC FUNCTION StripFunc( cSeek )
LOCAL cRet := UPPER( cSeek )
LOCAL aToken
cRet := STRTRAN( cRet, "UPPER(", "" )
cRet := STRTRAN( cRet, "DTOS(", "" )
cRet := STRTRAN( cRet, "STRZERO(", "" )
cRet := STRTRAN( cRet, "STR(", "" )
cRet := STRTRAN( cRet, ")", "" )
IF "->" $ cRet
aToken := AtInside( "->", cRet )
cRet := aToken[LEN(aToken)]
ENDIF
IF "," $ cRet
aToken := AtInside( ",", cRet )
cRet := aToken[1]
ENDIF
RETURN cRet
greeting,
Jimmy
Jimmy
- nageswaragunupudi
- Posts: 10691
- Joined: Sun Nov 19, 2006 5:22 am
- Location: India
- Contact:
Re: XBROWSE Column Question
in this case this CODE will work where i use INDEXKEY() or OrdKey() to look which FIELD is used
Code: Select all | Expand
SET ORDER TO TAG "CITY"
nCol := AScan( oBrw:aCols, { |oCol| oCol:cSortOrder == OrdSetFocus() } )
? nCol
oCol := oBrw:aCols[ nCol ]
? oCol:nCreationOrder, oCol:cHeader, c:cExpr
// or even better
XBROWSER oCol
Now there is a short-cut.
Instead of writing this long code:
Code: Select all | Expand
nCol := AScan( oBrw:aCols, { |oCol| oCol:cSortOrder == OrdSetFocus() } )
oCol := oBrw:aCols[ nCol ]
Code: Select all | Expand
oCol := oBrw:oCol( "cSortOrder", OrdSetFocus() )
XBROWSER oCol
Regards
G. N. Rao.
Hyderabad, India
G. N. Rao.
Hyderabad, India
- nageswaragunupudi
- Posts: 10691
- Joined: Sun Nov 19, 2006 5:22 am
- Location: India
- Contact:
Re: XBROWSE Column Question
OrdKey()p.s. what is better to use INDEXKEY() or OrdKey()
Regards
G. N. Rao.
Hyderabad, India
G. N. Rao.
Hyderabad, India
- nageswaragunupudi
- Posts: 10691
- Joined: Sun Nov 19, 2006 5:22 am
- Location: India
- Contact:
Re: XBROWSE Column Question
XBrowse automatically uses similar logic to indentify which INDEX/ORDER to be used for which column and stores the INDEXNAME in the data oCol:cSortOrder, while initially building the browse.STATIC FUNCTION StripFunc( cSeek )
XBrowse uses this information to do AutoSort
Regards
G. N. Rao.
Hyderabad, India
G. N. Rao.
Hyderabad, India
Re: XBROWSE Column Question
hi,
it does work when have FIELD only but fail when have Function(FIELD), or
what about Function in Indexkey() like STRZERO()nageswaragunupudi wrote:XBrowse automatically uses similar logic to indentify which INDEX/ORDER to be used for which column and stores the INDEXNAME in the data oCol:cSortOrder, while initially building the browse.
XBrowse uses this information to do AutoSort
it does work when have FIELD only but fail when have Function(FIELD), or
greeting,
Jimmy
Jimmy
- nageswaragunupudi
- Posts: 10691
- Joined: Sun Nov 19, 2006 5:22 am
- Location: India
- Contact:
Re: XBROWSE Column Question
Workswhat about Function in Indexkey() like STRZERO()
Does not fail. It works.but fail when have Function(FIELD)
Regards
G. N. Rao.
Hyderabad, India
G. N. Rao.
Hyderabad, India
Re: XBROWSE Column Question
hi,
FUNCTION FindColumnHeader() is NOT for "increment" Seek, it is to place Cursor on Header which meet IndexKey()
i can´t find e.g. STRZERO, in RddIncrSeek(), of XBROWSE ... but it seems to work ,,, how can it work ... hm
FUNCTION FindColumnHeader() is NOT for "increment" Seek, it is to place Cursor on Header which meet IndexKey()
i can´t find e.g. STRZERO, in RddIncrSeek(), of XBROWSE ... but it seems to work ,,, how can it work ... hm
greeting,
Jimmy
Jimmy
- nageswaragunupudi
- Posts: 10691
- Joined: Sun Nov 19, 2006 5:22 am
- Location: India
- Contact:
Re: XBROWSE Column Question
Do you want to find the column object that is currently sorted on the ordsetfocus() ?
oBrw:oSortCol --> Currently sorted column obect. i.e., the column sorted on the ordsetfocus()
We can now get anything
oBrw:oSortCol:cHeader
oBrw:oSortCol:cExpr // field name
With XBrowse, most of the times, we do not have to write any special code.
oBrw:oSortCol --> Currently sorted column obect. i.e., the column sorted on the ordsetfocus()
We can now get anything
oBrw:oSortCol:cHeader
oBrw:oSortCol:cExpr // field name
With XBrowse, most of the times, we do not have to write any special code.
Regards
G. N. Rao.
Hyderabad, India
G. N. Rao.
Hyderabad, India
Re: XBROWSE Column Question
hi,
thx for Answer
so i "strip" all of String to get FIELD Name "only"
---
more Question :
how is the Syntax to use "Header - click" to SET Order / TAG
in METHOD SetOrder( lSort ) i found OrdDescend()
how does OrdDescend() work
when usig OrdWildSeek() in XBROWSE how to "continue"
i did not found a 2nd OrdWildSeek() or a loop
thx for Answer
YESnageswaragunupudi wrote:Do you want to find the column object that is currently sorted on the ordsetfocus() ?.
it work when have "only" FIELD Name but seems not when have Function "in" INDEXKEY() / Ordkey()nageswaragunupudi wrote:With XBrowse, most of the times, we do not have to write any special code.Code: Select all | Expand
oBrw:oSortCol --> Currently sorted column obect. i.e., the column sorted on the ordsetfocus() We can now get anything oBrw:oSortCol:cHeader oBrw:oSortCol:cExpr // field name
so i "strip" all of String to get FIELD Name "only"
---
more Question :
how is the Syntax to use "Header - click" to SET Order / TAG
in METHOD SetOrder( lSort ) i found OrdDescend()
how does OrdDescend() work
when usig OrdWildSeek() in XBROWSE how to "continue"
i did not found a 2nd OrdWildSeek() or a loop
greeting,
Jimmy
Jimmy
- nageswaragunupudi
- Posts: 10691
- Joined: Sun Nov 19, 2006 5:22 am
- Location: India
- Contact:
Re: XBROWSE Column Question
I suggest this function, which can handle index key of any complexity.it work when have "only" FIELD Name but seems not when have Function "in" INDEXKEY() / Ordkey()
so i "strip" all of String to get FIELD Name "only"
If more than one field is used in the key expression, it returns the field name which occurs first in the key.
Code: Select all | Expand
function FieldInKey( cKey )
local aStruct := DBSTRUCT()
local n := 1
local cToken, cSep, nAt
cKey := Upper( cKey )
cKey := StrTran( StrTran( cKey, "->", '!' ), '=', '!' )
cKey := CharRem( " ", cKey )
do while !Empty( cToken := TOKEN( cKey, nil, n, nil, nil, @cSep ) )
if !( cSep $ "!(" )
if ( nAt := AScan( aStruct, { |a| a[ 1 ] = cToken } ) ) > 0
return aStruct[ nAt, 1 ]
endif
endif
n++
enddo
return ""
Regards
G. N. Rao.
Hyderabad, India
G. N. Rao.
Hyderabad, India