updateMoveable ();
void destroyItem (TableColumn column) {	int hwndHeader = OS.SendMessage (handle, OS.LVM_GETHEADER, 0, 0);	int columnCount = OS.SendMessage (hwndHeader, OS.HDM_GETITEMCOUNT, 0, 0);	int index = 0;	while (index < columnCount) {		if (columns [index] == column) break;		index++;	}	boolean first = false;	if (index == 0) {		first = true;		if (columnCount > 1) {			index = 1;			int cchTextMax = 1024;			int hHeap = OS.GetProcessHeap ();			int byteCount = cchTextMax * TCHAR.sizeof;			int pszText = OS.HeapAlloc (hHeap, OS.HEAP_ZERO_MEMORY, byteCount);			LVCOLUMN lvColumn = new LVCOLUMN ();			lvColumn.mask = OS.LVCF_TEXT | OS.LVCF_WIDTH;			lvColumn.pszText = pszText;			lvColumn.cchTextMax = cchTextMax;			OS.SendMessage (handle, OS.LVM_GETCOLUMN, 1, lvColumn);			lvColumn.mask |= OS.LVCF_FMT;			lvColumn.fmt = OS.LVCFMT_LEFT;			OS.SendMessage (handle, OS.LVM_SETCOLUMN, 0, lvColumn);			if (pszText != 0) OS.HeapFree (hHeap, 0, pszText);		} else {			int hHeap = OS.GetProcessHeap ();			int pszText = OS.HeapAlloc (hHeap, OS.HEAP_ZERO_MEMORY, TCHAR.sizeof);			LVCOLUMN lvColumn = new LVCOLUMN ();			lvColumn.mask = OS.LVCF_TEXT;			lvColumn.pszText = pszText;			OS.SendMessage (handle, OS.LVM_SETCOLUMN, 0, lvColumn);			if (pszText != 0) OS.HeapFree (hHeap, 0, pszText);		}		if ((parent.style & SWT.VIRTUAL) == 0) {			LVITEM lvItem = new LVITEM ();			lvItem.mask = OS.LVIF_TEXT | OS.LVIF_IMAGE;			lvItem.pszText = OS.LPSTR_TEXTCALLBACK;			lvItem.iImage = OS.I_IMAGECALLBACK;			int itemCount = OS.SendMessage (handle, OS.LVM_GETITEMCOUNT, 0, 0);			for (int i=0; i<itemCount; i++) {				lvItem.iItem = i;				OS.SendMessage (handle, OS.LVM_SETITEM, 0, lvItem);			}		}	}	if (columnCount > 1) {		if (OS.SendMessage (handle, OS.LVM_DELETECOLUMN, index, 0) == 0) {			error (SWT.ERROR_ITEM_NOT_REMOVED);		}	}	if (first) index = 0;	System.arraycopy (columns, index + 1, columns, index, --columnCount - index);	columns [columnCount] = null;	int itemCount = OS.SendMessage (handle, OS.LVM_GETITEMCOUNT, 0, 0);	for (int i=0; i<itemCount; i++) {		TableItem item = items [i];		if (item != null) {			if (columnCount == 0) {				item.strings = null;				item.images = null;				item.cellBackground = null;				item.cellForeground = null;				item.cellFont = null;			} else {				if (item.strings != null) {					String [] strings = item.strings;					if (index == 0) {						item.text = strings [1] != null ? strings [1] : ""; //$NON-NLS-1$					}					String [] temp = new String [columnCount];					System.arraycopy (strings, 0, temp, 0, index);					System.arraycopy (strings, index + 1, temp, index, columnCount - index);					item.strings = temp;				} else {					if (index == 0) item.text = ""; //$NON-NLS-1$				}				if (item.images != null) {					Image [] images = item.images;					if (index == 0) item.image = images [1];					Image [] temp = new Image [columnCount];					System.arraycopy (images, 0, temp, 0, index);					System.arraycopy (images, index + 1, temp, index, columnCount - index);					item.images = temp;				} else {					if (index == 0) item.image = null;				}				if (item.cellBackground != null) {					int [] cellBackground = item.cellBackground;					int [] temp = new int [columnCount];					System.arraycopy (cellBackground, 0, temp, 0, index);					System.arraycopy (cellBackground, index + 1, temp, index, columnCount - index);					item.cellBackground = temp;				}				if (item.cellForeground != null) {					int [] cellForeground = item.cellForeground;					int [] temp = new int [columnCount];					System.arraycopy (cellForeground, 0, temp, 0, index);					System.arraycopy (cellForeground, index + 1, temp, index, columnCount - index);					item.cellForeground = temp;				}				if (item.cellFont != null) {					int [] cellFont = item.cellFont;					int [] temp = new int [columnCount];					System.arraycopy (cellFont, 0, temp, 0, index);					System.arraycopy (cellFont, index + 1, temp, index, columnCount - index);					item.cellFont = temp;				}			}		}	}	if (columnCount == 0) setScrollWidth (null, true);}