Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
How to know which header is clicking in grid ?
Message
From
15/07/2003 13:19:53
 
 
To
15/07/2003 12:57:39
General information
Forum:
Visual FoxPro
Category:
Other
Miscellaneous
Thread ID:
00810280
Message ID:
00810304
Views:
16
Marc;

>If you do not know how many columns you will have in your grid,
>is it possible to know which header has been clicke?
>
>I need that to sort the column by the data in it.
procedure mygrid.column1.header1.click
do tag_it with this.parent.parent.RecordSource, justext(this.parent.ControlSource)
thisform.refresh()
endproc

procedure tag_it
lparameters tcAlias, tcField, tcTag
*=====   tcAlias --------- Alias to be indexed
*======= tcField --------- dField to be indexed by
*=====   tcTag   --------- Index Tag

tcField       = lower(alltrim(tcField))
if  type(tcField) $ 'MG'
    return
endif	

if !empty(tcTag) and type('tcTag')='C'
    tcTag     = lower(alltrim(tcTag))
else
    tcTag     = ''
endif

local lnOldArea, lnTags, lnTag, lcTagName, lnTagNo, lnRow, lcTagToUse, i
private paTags[1,2]
lnOldArea     = select()

select (tcAlias)

lcCDX         = cdx(1,tcAlias)
lnTags        = tagcount(lcCDX)
if  lnTags<1
    return
endif	

dimension paTags[lnTags,2]
for i=1 to lnTags 
    lcTagName = tag(lcCDX,i)
    lnTagNo = tagno(lcTagName,lcCDX,tcAlias)
    if  !empty(lnTagNo)
	lcExpr = key(lcCDX,lnTagNo,tcAlias)
    else     
	lcExpr = []
    endif
    paTags[i,1] = lcTagName 
    paTags[i,2] = lcExpr 
endfor	

if  !empty(tcTag) and type('tcTag') = 'C'
    lnTag = ascan(paTags,tcTag)
    if  lnTag = 0 
        select (lnOldArea)
	return ''
    endif
    lnRow = asubscript(paTags, lnTag, 1)
    lcTagToUse = paTags[lnRow,1]
else
    lcTagToUse = FindCreateTag(tcAlias, tcField, tcTag)
    if  empty(lcTagToUse)
	select (lnOldArea)	
	return '' 
    endif	
endif
if  !empty(lcTagToUse)
    set order to &lcTagToUse 
endif
return	
endproc

function FindCreateTag(tcAlias, tcField, tcTag)
local lcExpr, i, lcReturn, lcTag 
lcReturn = ''
for i=1 to alen(paTags,1)
    lcExpr = lower(alltrim(paTags[i,2]))
    * Just first word
    lcExpr = iif(at(' ',lcExpr)>0,substr(lcExpr,1,at(' ',lcExpr)-1),lcExpr)			
    lcExpr = iif(at('+',lcExpr)>0,substr(lcExpr,1,at('+',lcExpr)-1),lcExpr)
    lcExpr = iif(at('-',lcExpr)>0,substr(lcExpr,1,at('-',lcExpr)-1),lcExpr)			
    * Get rid of all closing brackets in one shot
    lcExpr = iif(at(')',lcExpr)>0,substr(lcExpr,1,at(')',lcExpr)-1),lcExpr)
    * Get rid of all opening brackets in one shot
    lcExpr = strtran(lcExpr,'(','')
    if  tcField = lower(alltrim(lcExpr)) && Tag found
        lcTag = paTags[i,1]
*	set order to &lcTag 
	lcReturn = lcTag 
	exit
    endif
endfor
return lcReturn 
endfunc
"Now to him who is able to do immeasurably more than all we ask or imagine, according to his power that is at work within us, Ephesians 3:20
Previous
Next
Reply
Map
View

Click here to load this message in the networking platform