Plateforme Level Extreme
Abonnement
Profil corporatif
Produits & Services
Support
Légal
English
How to know which header is clicking in grid ?
Message
De
15/07/2003 13:19:53
 
 
À
15/07/2003 12:57:39
Information générale
Forum:
Visual FoxPro
Catégorie:
Autre
Divers
Thread ID:
00810280
Message ID:
00810304
Vues:
17
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
Précédent
Suivant
Répondre
Fil
Voir

Click here to load this message in the networking platform