Ups forgot the example code: {code} // call the original insertColumn void oldInsertColumn (DBE d, int colNr, string title, int width, Icon theIcon) { insertColumn (d, colNr, title, width, theIcon) } // our global skip to store the column titles Skip g_columnTitles = createString() // function to make a unique key from a DBE and a column nr string keystring (DBE x, int nr) { int dAddr = addr_ x // cast DBE memory address to INT return dAddr "_" nr "" // append underscore and the column number } // Now replace the insertColumn to save the title void insertColumn (DBE d, int nr, string tit, int wd, Icon I) { // put the column title in our skip list with a unique key put (g_columnTitles, keystring (d, nr), tit, true) // call original insertColumn oldInsertColumn (d, nr, tit, wd, I) } string getTitle (DBE x, int nr) { string result = null; find (g_columnTitles, keystring (x,nr), result) return result } {code}esult