code: func (l *TableView) VisibleArea() (firstCol, firstRow, colCount, rowCount int) {
  	firstRow = l.topRow
  	maxDy := l.height - 3
  	if firstRow+maxDy < l.rowCount {
  		rowCount = maxDy
  	} else {
  		rowCount = l.rowCount - l.topRow
  	}
  
  	total := l.width - 1
  	if l.showRowNo {
  		total -= l.counterWidth()
  		if l.showVLines {
  			total--
  		}
  	}
  
  	colNo := l.topCol
  	colCount = 0
  	for colNo < len(l.columns) && total > 0 {
  		w := l.columns[colNo].Width
  		total -= w
  		colNo++
  		colCount++
  	}
  
  	return l.topCol, l.topRow, colCount, rowCount
  }
docs: // VisibleArea returns which rows and columns are currently visible. It can be
  // used instead of OnBeforeDraw event to prepare the data for drawing without
  // waiting until TableView starts drawing itself.
  // It can be useful in case of you update your database, so at the same moment
  // you can request the visible area and update database cache - it can improve
  // performance.
  // Returns:
  // * firstCol - first visible column
  // * firstRow - first visible row
  // * colCount - the number of visible columns
  // * rowCount - the number of visible rows