* ccontrol.prg * 26-Oct-98 major rev define class hdrSeeker as Header Name = "hdrSeeker" mcArrowName = "" && name of the arrow used for all headers of the grid mlAscending = .f. && flag for sort order mlColumnMoved = .f. && flag indicating column was moved mnColumnOrder = 0 && original column order mlColumnSized = .f. && flag indicating column was resized mnColumnWidth = 0 && original size of column mcTag = "" && name of the index tag procedure Init( pcTag ) local lcName this.mcTag = iif( ! empty( pcTag ), pcTag, "" ) this.FontBold = ! empty( this.mcTag ) lcName = this.parent.parent.Name + "lblHeaderArrow" this.mcArrowName = "this.parent.parent.parent." + lcName if ( type( (this.mcArrowName) ) == "U" ) * arrow doesn't exist yet so create it lcGrid = FullName( this.parent.parent ) lcGrid = "thisform" + substr( lcGrid, at( '.', lcGrid ) ) this.parent.parent.parent.AddObject( (lcName), "lblHeaderArrow", lcGrid ) endif if ( ! empty( this.mcTag ) ) this.parent.Width = this.parent.Width + 5 endif endproc procedure Click() local loArrow loArrow = evaluate( this.mcArrowName ) if ( ! empty( this.mcTag ) and ! this.mlColumnMoved and ! this.mlColumnSized ) * sortable column that was clicked this.mlAscending = ! this.mlAscending this.parent.parent.Reorder( this.mcTag, this.mlAscending ) loArrow.mcColumnName = this.parent.Name endif loArrow.SetPosition() && update position endproc procedure MouseDown LPARAMETERS nButton, nShift, nXCoord, nYCoord with this * initialize items that will be tested in MouseUp .mnColumnOrder = this.parent.ColumnOrder .mnColumnWidth = this.parent.Width endwith endproc procedure MouseUp LPARAMETERS nButton, nShift, nXCoord, nYCoord with this * check to see if this was a resize or move .mlColumnMoved = ( this.parent.ColumnOrder != .mnColumnOrder ) .mlColumnSized = ( this.parent.Width != .mnColumnWidth ) endwith endproc procedure Error LPARAMETERS nError, cMethod, nLine ObjError( this, nError, cMethod, nLine ) endproc enddefine