--> integer sortcol = 0, sortdir = 1 function by_column(integer i, j) return sortdir*compare(data[i][sortcol],data[j][sortcol]) end function sequence tags = tagset(table_size) -- {1,2,..table_size} function click_cb(Ihandle self, integer l, integer c, atom pStatus) ... string sortc = sprintf("SORTSIGN%d",c) sortdir = iff(IupGetAttribute(self,sortc)="DOWN"?-1:1) IupSetAttribute(self,sortc,iff(sortdir=-1?"UP":"DOWN")) sortcol = c tags = custom_sort(routine_id("by_column"),tags) function value_cb(Ihandle /*self*/, integer l, c) l = tags[l] return data[l][c] end function