RAD Studio VCL Reference
ContentsIndex
PreviousUpNext
TCustomDrawGrid.TopRow Property

Specifies the index of the first visible scrollable row in the grid.

Pascal
property TopRow: Longint;
C++
__property Longint TopRow;

Read TopRow to determine the index of the first row in the scrollable region that is visible. Set TopRow to scroll the rows in the grid so that the row with index TopRow is the first row after the fixed rows.  

C++ Examples: 

 

/*
This code uses a draw grid and a button on a form. When
the user clicks the button, the last row of the draw
grid becomes the top row.  This example requires a
button, a DrawGrid and a populated ImageList.
*/

void __fastcall TForm1::Button1Click(TObject *Sender)
{
  DrawGrid1->TopRow = DrawGrid1->RowCount - 1;
}

void __fastcall TForm1::DrawGrid1Click(TObject *Sender)
{
  Label1->Caption = "From OnClick: The cursor is in column " +
                     IntToStr(DrawGrid1->Col + 1) +
                     ", row " +
                     IntToStr(DrawGrid1->Row + 1);
}

void __fastcall TForm1::DrawGrid1DrawCell(TObject *Sender, int ACol, int ARow, TRect &Rect,
          TGridDrawState State)
{
  int index = (ARow * DrawGrid1->ColCount + ACol) % (DrawGrid1->ColCount + 1);
  if (State.Contains(gdSelected))
    DrawGrid1->Canvas->Brush->Color = clYellow;
  else
    DrawGrid1->Canvas->Brush->Color = clBackground;
  DrawGrid1->Canvas->FillRect(Rect);
  if (State.Contains(gdFocused))
  {
    DrawGrid1->Canvas->DrawFocusRect(Rect);
    Label2->Caption = "From OnDrawCell: Cell " + IntToStr(ARow * DrawGrid1->ColCount + ACol) +
      " has the focus.";
  }
  if ((ARow >=  DrawGrid1->FixedRows) && (ACol >=  DrawGrid1->FixedCols))
    ImageList1->Draw(DrawGrid1->Canvas, Rect.Left, Rect.Top, index, True);
}

void __fastcall TForm1::DrawGrid1SelectCell(TObject *Sender, int ACol, int ARow, bool &CanSelect)
{
  CanSelect = True;
}

 

Delphi Examples: 

{
This code uses a draw grid and a button on a form. When
the user clicks the button, the last row of the draw
grid becomes the top row.  This example requires a
button, a DrawGrid and a populated ImageList.
}
procedure TForm1.Button1Click(Sender: TObject);
begin
  DrawGrid1.TopRow := DrawGrid1.RowCount - 1;
end;

procedure TForm1.DrawGrid1Click(Sender: TObject);
begin
  Label1.Caption := 'From OnClick: The cursor is in column ' +
                     IntToStr(DrawGrid1.Col + 1) + 
                     ', row ' +
                     IntToStr(DrawGrid1.Row + 1);
end;

procedure TForm1.DrawGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
var
  index: Integer;
begin
  index := (ARow * DrawGrid1.ColCount + ACol) mod (DrawGrid1.ColCount + 1);
  if (gdSelected in State) then
    DrawGrid1.Canvas.Brush.Color := clYellow
  else
    DrawGrid1.Canvas.Brush.Color := clBackground;
  DrawGrid1.Canvas.FillRect(Rect);
  if (gdFocused in State) then
  begin
    DrawGrid1.Canvas.DrawFocusRect(Rect);
    Label2.Caption:= 'From OnDrawCell: Cell ' + InttoStr(ARow * DrawGrid1.ColCount + ACol) + ' has the focus.';
  end;
  if ((ARow >=  DrawGrid1.FixedRows) AND (ACol >=  DrawGrid1.FixedCols)) then
    ImageList1.Draw(DrawGrid1.Canvas,Rect.Left,Rect.Top,index, True);
end;

procedure TForm1.DrawGrid1SelectCell(Sender: TObject; ACol, ARow: Integer;
  var CanSelect: Boolean);
begin
  CanSelect:= True;
end;

 

Copyright(C) 2009 Embarcadero Technologies, Inc. All Rights Reserved.
What do you think about this topic? Send feedback!