---
name: "Tk::TableMatrix::SpreadsheetHideRows"
section: "3pm"
platform: "linux"
package: "perl-tk-tablematrix"
version: "1.29-6"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/Tk::TableMatrix::SpreadsheetHideRows"
---

# Tk::TableMatrix::SpreadsheetHideRows(3pm)

Table Display with selectable hide/un-hide of rows

## NAME

Tk::TableMatrix::SpreadsheetHideRows - Table Display with selectable hide/un-hide of rows

## SYNOPSIS

```
  use Tk;
  use Tk::TableMatrix::SpreadsheetHideRows
  my $t = $top->Scrolled('SpreadsheetHideRows',
    -selectorCol => 3,
    -expandData => $hashRef,
    -rows => 21, -cols => 11,
    -width => 6, -height => 6,
    -titlerows => 1, -titlecols => 1,
    -variable => $arrayVar,
    -selectmode => 'extended',
    -resizeborders => 'both',
    -bg => 'white',
  );
```

## DESCRIPTION

Tk::TableMatrix::SpreadsheetHideRows is a Tk::TableMatrix::Spreadsheet-derived widget that implements a Spreadsheet-like display of tabular information, where some of the rows in the table can be expanded/hidden by clicking a '+/-' selector in the row. This can be used to display top-level information in a table, while allowing the user to expand certain table rows to  view detail-level information.

See demos/SpreadsheetHideRows in the source distribution for a simple example of this widget

## Widget-specific Options

In addition the standard Tk::TableMatrix widget options. The following options are implemented:

- \-selectorCol

  Column number where the +/- selector will appear. Clicking on the +/- selector will expand/hide the detail information in the table for a particular row.

- \-selectorColWidth

  Width of the column used to display the +/- selector. Defaults to 2

- \-expandData

  Hash ref defining the detail-level data displayed when a row is expanded (by clicking the +/- selector). This hash ref should have the following structure:

  ```
    $expandData = {
          row1 => {  tag  => 'detailDataTag',
                     data => $detailData,
                     spans=> $spanData,
                     expandData => $subLevelData
                  },
          row2 => {
             .
             .
    }

    Where:
      row1, row2, ...         Row numbers that will be expandable.
      tag => 'detailDataTag'  Tag name that will be applied to the detail data.
                              (optional)
      $detailData              2D Array of detail-data to be displayed when
                               the row is expanded.
                               e.g. [ [ r1c1, r1c2, r1c3 ],
                                      [ r2c1, r2c2, r2,c3] ]
      $spans                   1D array of span information (optional) to be
                               used for display of the detail information.
                               e.g.  [ col2 =>  "rows,cols", col4 =>  "rows,cols", ... ]
      $subLevelData            Optional Recursive expandData used to hold detail-data of detail-data.
  ```

## MEMBER DATA

The following items are stored as member data

- defaultCursor

  Name of the mouse cursor pointer that is used for normal (i.e. non-title, non-indicator) cells in the widget.  This is set to the value of the `$widget`-\>cget(-cursor) option when the widget is created.

- indRowCols

  Hash ref of Row/Cols indexes where there are indicators stores. This is a quick lookup hash built from *\_expandData*.

- \_expandData

  Internal version of the *expandData* hash. Any sub-detail data (i.e. expand data  that is at lower levels of *expandData*) that is visible is placed at the top level of this hash, for keeping track of the visible *expandData*.

## Widget Methods

In addition the standard Tk::TableMatrix widget method. The following methods are implemented:

### showDetail

Shows (i.e. expands the table) the detail data for a given row. This method is called when a user clicks on an indicator that is not already expanded.

**Usage:**

```
 $widget->showDetail($row);

 # Shows the detail data for row number $row
```

### hideDetail

Hides the detail data for a given row. This method is called when a user clicks on an indicator that is already expanded.

**Usage:**

```
 $widget->hideDetail($row);

 # Hides the detail data for row number $row
```
