>BindEvent( loControl, "RightClick", this,["ordenar(]+locolumn.ControlSource+[)"]) >>
>BindEvent( loControl, "RightClick", this,"ordenar") >BindEvent vincula los dos eventos, pasando al segundo los parámetros de entrada del primero. Para saber desde dónde está siendo llamado, deberías buscar otro método.
DEFINE CLASS msColumn AS Column HeaderClass = "msHeader" HeaderClassLibrary = "msBaseClass.prg" ENDDEFINE DEFINE CLASS msHeader AS Header Alignment = 2 && Center FontSize = 8 PROCEDURE RightClick() If this.FontBold * Is already indexed by this column; leave it as is Else Local lnBuffer as Number, ; llSuccess as Boolean, ; lcExpression as String, ; lcThisColumnName as String, ; loColumn as Object llSuccess = .t. Try lcExpression = this.Parent.ControlSource * Always index strings on uppercase If Type(lcExpression) = "C" lcExpression = "Upper("+lcExpression+")" EndIf Index On &lcExpression tag SelOrder Catch to oError llSuccess = .f. Assert .f. message "Indexing failed !" + ParseError( oError ) EndTry If llSuccess *... switch the FontBold property lcThisColumnName = this.Parent.name For each loColumn in this.Parent.parent.Columns * Bold for this header, normal for any other one loColumn.Controls[1].FontBold ; = ( loColumn.name = lcThisColumnName ) Next * If succesfully reordered, restores the record pointer locate this.Parent.parent.refresh() EndIf EndIf ENDPROC ENDDEFINEPara usar estas clases, en tu clase MEUGRID debes declarar en la propiedad MemberClass "msColumn", y en MemberClassLibrary, el nombre del prg en que hayas guardado este código.