1%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 2%% Name: hvscroll.tex 3%% Purpose: wxHVScrolledWindow documentation 4%% Author: Vadim Zeitlin 5%% Modified by: Brad Anderson 6%% Created: 24.01.06 7%% RCS-ID: $Id: hvscroll.tex 37591 2006-02-15 09:59:39Z RR $ 8%% Copyright: (c) 2003 Vadim Zeitlin <vadim@wxwindows.org> 9%% License: wxWindows license 10%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 11 12\section{\class{wxHVScrolledWindow}}\label{wxhvscrolledwindow} 13 14This class is strongly influenced by 15\helpref{wxVScrolledWindow}{wxvscrolledwindow}. 16Like wxVScrolledWindow, this class is here to provide an easy way to implement 17variable line sizes. The difference is that wxVScrolledWindow only works with 18vertical scrolling. This class extends the behavior of wxVScrolledWindow to 19the horizontal axis in addition to the vertical axis. 20 21The scrolling is also "virtual" in the sense that row widths and column heights 22only need to be known for the rows and columns that are currently visible. 23 24Like \helpref{wxVScrolledWindow}{wxvscrolledwindow}, this is a generalization 25of the \helpref{wxScrolledWindow}{wxscrolledwindow} class which can be only 26used when all rows have a constant height and columns have a constant width. 27Like wxVScrolledWinow it lacks some of wxScrolledWindow features such as 28scrolling another window or only scrolling a rectangle of the window and not 29its entire client area. 30 31If only vertical scrolling is needed, wxVScrolledWindow is recommended 32because it is simpler to use. 33 34There is no wxHScrolledWindow but horizontal-only scrolling is implemented 35easily enough with this class. 36 37To use this class, you need to derive from it and implement both the 38\helpref{OnGetRowHeight()}{wxhvscrolledwindowongetrowheight} and the 39\helpref{OnGetColumnWidth()}{wxhvscrolledwindowongetcolumnwidth} pure virtual 40methods. You also must call 41\helpref{SetRowColumnCounts}{wxhvscrolledwindowsetrowcolumncounts} to let the 42base class know how many rows and columns it should display. After these 43requirements are met scrolling is handled entirely by wxHVScrolledWindow. You 44only need to draw the visible part of contents in your {\tt OnPaint()} method 45as usual. You should use 46\helpref{GetVisibleRowsBegin()}{wxhvscrolledwindowgetvisiblerowsbegin}, 47\helpref{GetVisibleColumnsBegin()}{wxhvscrolledwindowgetvisiblecolumnsbegin}, 48\helpref{GetVisibleRowsEnd()}{wxhvscrolledwindowgetvisiblerowsend}, and 49\helpref{GetVisibleColumnsEnd()}{wxhvscrolledwindowgetvisiblecolumnsend} to 50determine which lines to to display. If physical scrolling is enabled the 51device context origin is shifted by the scroll position (through 52{\tt PrepareDC()}), child windows are moved as the window scrolls, and the 53pixels on the screen are moved to minimize the region that requires painting. 54Physical scrolling is enabled by default. 55 56\wxheading{Derived from} 57 58\helpref{wxPanel}{wxpanel} 59 60\wxheading{Include files} 61 62<wx/vscroll.h> 63 64 65\latexignore{\rtfignore{\wxheading{Members}}} 66 67 68\membersection{wxHVScrolledWindow::wxHVScrolledWindow}\label{wxhvscrolledwindowctor} 69 70\func{}{wxHVScrolledWindow}{\param{wxWindow* }{parent}, \param{wxWindowID }{id = wxID\_ANY}, \param{const wxPoint\& }{pos = wxDefaultPosition}, \param{const wxSize\& }{size = wxDefaultSize}, \param{long }{style = 0}, \param{const wxString\& }{name = wxPanelNameStr}} 71 72This is the normal constructor, no need to call Create() after using this one. 73 74Note that {\tt wxVSCROLL} and {\tt wxHSCROLL} are always automatically added to 75our style, there is no need to specify them explicitly. 76 77\func{}{wxHVScrolledWindow}{\void} 78 79Default constructor, you must call \helpref{Create()}{wxhvscrolledwindowcreate} 80later. 81 82\wxheading{Parameters} 83 84\docparam{parent}{The parent window, must not be {\tt NULL}} 85 86\docparam{id}{The identifier of this window, {\tt wxID\_ANY} by default} 87 88\docparam{pos}{The initial window position} 89 90\docparam{size}{The initial window size} 91 92\docparam{style}{The window style. There are no special style bits defined for 93this class.} 94 95\docparam{name}{The name for this window; usually not used} 96 97 98\membersection{wxHVScrolledWindow::Create}\label{wxhvscrolledwindowcreate} 99 100\func{bool}{Create}{\param{wxWindow* }{parent}, \param{wxWindowID }{id = wxID\_ANY}, \param{const wxPoint\& }{pos = wxDefaultPosition}, \param{const wxSize\& }{size = wxDefaultSize}, \param{long }{style = 0}, \param{const wxString\& }{name = wxPanelNameStr}} 101 102Same as the \helpref{non default ctor}{wxhvscrolledwindowctor} but returns 103status code: {\tt true} if ok, {\tt false} if the window couldn't have been created. 104 105Just as with the ctor above, both the {\tt wxVSCROLL} and the {\tt wxHSCROLL} 106styles are always used. There is no need to specify either explicitly. 107 108\membersection{wxHVScrolledWindow::EnablePhysicalScrolling}\label{wxhvscrolledwindowenablephysicalscrolling} 109 110\func{\void}{EnablePhysicalScrolling}{\param{bool }{scrolling = true}} 111 112With physical scrolling enabled the device origin is changed properly when a 113wxDC is prepared using {\tt PrepareDC()}, children are actually moved and layed 114out according to the current scroll position, and the contents of the window 115(pixels) are actually moved to reduce the amount of redraw needed. 116 117Physical scrolling is enabled by default but can be disable or re-enabled at 118any time. An example of when you'd want to disable it would be if you have 119statically positioned graphic elements or children you do not want to move 120while the window is being scrolled. If you disable physical scrolling you must 121manually adjust positioning for items within the scrolled window yourself. 122Also note that an unprepared wxDC requires you to do the same, regardless of 123the physical scrolling state. 124 125 126\membersection{wxHVScrolledWindow::EstimateTotalHeight}\label{wxhvscrolledwindowestimatetotalheight} 127 128\constfunc{virtual wxCoord}{EstimateTotalHeight}{\void} 129 130This protected function is used internally by wxHVScrolledWindow to estimate the 131total height of the window when 132\helpref{SetRowColumnCounts}{wxhvscrolledwindowsetrowcolumncounts} 133is called. The default implementation uses the brute force approach if the 134number of the items in the control is small enough. Otherwise, it tries to find 135the average row height using some rows in the beginning, middle and the end. 136 137If it is undesirable to query all these rows (some of which might be never 138shown) just for the total height calculation, you may override the function and 139provide your own guess using a better and/or faster method. 140 141Note that although returning a totally wrong value would still work, it risks 142causing some very strange scrollbar behaviour so this function should really 143try to make the best guess possible. 144 145 146\membersection{wxHVScrolledWindow::EstimateTotalWidth}\label{wxhvscrolledwindowestimatetotalwidth} 147 148\constfunc{virtual wxCoord}{EstimateTotalWidth}{\void} 149 150This protected function is used internally by wxHVScrolledWindow to estimate the 151total width of the window when 152\helpref{SetRowColumnCounts}{wxhvscrolledwindowsetrowcolumncounts} 153is called. The default implementation uses the brute force approach if the 154number of the items in the control is small enough. Otherwise, it tries to find 155the average column width using some columns in the beginning, middle and the end. 156 157If it is undesirable to query all these columns (some of which might be never 158shown) just for the total width calculation, you may override the function and 159provide your own guess using a better and/or faster method. 160 161Note that although returning a totally wrong value would still work, it risks 162causing some very strange scrollbar behaviour so this function should really 163try to make the best guess possible. 164 165 166\membersection{wxHVScrolledWindow::GetColumnCount}\label{wxhvscrolledwindowgetcolumncount} 167 168\constfunc{wxSize}{GetColumnCount}{\void} 169 170Get the number of columns this window contains (previously set by 171\helpref{SetRowColumnCounts()}{wxhvscrolledwindowsetrowcolumncounts}) 172 173 174\membersection{wxHVScrolledWindow::GetRowCount}\label{wxhvscrolledwindowgetrowcount} 175 176\constfunc{wxSize}{GetRowCount}{\void} 177 178Get the number of rows this window contains (previously set by 179\helpref{SetRowColumnCounts()}{wxhvscrolledwindowsetrowcolumncounts}) 180 181 182\membersection{wxHVScrolledWindow::GetRowColumnCounts}\label{wxhvscrolledwindowgetrowcolumncounts} 183 184\constfunc{wxSize}{GetRowColumnCounts}{\void} 185 186Get the number of rows (X or width) and columns (Y or height) this window 187contains (previously set 188by \helpref{SetRowColumnCounts()}{wxhvscrolledwindowsetrowcolumncounts}) 189 190 191\membersection{wxHVScrolledWindow::GetVisibleBegin}\label{wxhvscrolledwindowgetvisiblebegin} 192 193\constfunc{wxPoint}{GetVisibleBegin}{\void} 194 195Returns the indicies of the first visible row (Y) and column (X). 196 197\wxheading{See also} 198 199\helpref{GetVisibleRowsBegin}{wxhvscrolledwindowgetvisiblerowsbegin}, \helpref{GetVisibleColumnsBegin}{wxhvscrolledwindowgetvisiblecolumnsbegin} 200 201 202\membersection{wxHVScrolledWindow::GetVisibleColumnsBegin}\label{wxhvscrolledwindowgetvisiblecolumnsbegin} 203 204\constfunc{size\_t}{GetVisibleColumnsBegin}{\void} 205 206Returns the index of the first currently visible column. 207 208\wxheading{See also} 209 210\helpref{GetVisibleColumnsEnd}{wxhvscrolledwindowgetvisiblecolumnsend} 211 212 213\membersection{wxHVScrolledWindow::GetVisibleColumnsEnd}\label{wxhvscrolledwindowgetvisiblecolumnsend} 214 215\constfunc{size\_t}{GetVisibleColumnsEnd}{\void} 216 217Returns the index of the first column after the currently visible page. If the 218return value is $0$ it means that no columns are currently shown (which only 219happens if the control is empty). Note that the index returned by this method 220is not always a valid index as it may be equal to 221\helpref{GetColumnCount}{wxhvscrolledwindowgetcolumncount}. 222 223\wxheading{See also} 224 225\helpref{GetVisibleColumnsBegin}{wxhvscrolledwindowgetvisiblecolumnsbegin} 226 227 228\membersection{wxHVScrolledWindow::GetVisibleEnd}\label{wxhvscrolledwindowgetvisiblebegin} 229 230\constfunc{wxPoint}{GetVisibleEnd}{\void} 231 232Returns the indicies of the row and column after the last visible row (Y) and 233last visible column (X), respectively. 234 235\wxheading{See also} 236 237\helpref{GetVisibleRowsEnd}{wxhvscrolledwindowgetvisiblerowsend}, \helpref{GetVisibleColumnsEnd}{wxhvscrolledwindowgetvisiblecolumnsend} 238 239 240\membersection{wxHVScrolledWindow::GetVisibleRowsBegin}\label{wxhvscrolledwindowgetvisiblerowsbegin} 241 242\constfunc{size\_t}{GetVisibleRowsBegin}{\void} 243 244Returns the index of the first currently visible row. 245 246\wxheading{See also} 247 248\helpref{GetVisibleRowsEnd}{wxhvscrolledwindowgetvisiblerowsend} 249 250 251\membersection{wxHVScrolledWindow::GetVisibleRowsEnd}\label{wxhvscrolledwindowgetvisiblerowsend} 252 253\constfunc{size\_t}{GetVisibleRowsEnd}{\void} 254 255Returns the index of the first row after the currently visible page. If the 256return value is $0$ it means that no rows are currently shown (which only 257happens if the control is empty). Note that the index returned by this method 258is not always a valid index as it may be equal to 259\helpref{GetRowCount}{wxhvscrolledwindowgetrowcount}. 260 261\wxheading{See also} 262 263\helpref{GetVisibleRowsBegin}{wxhvscrolledwindowgetvisiblerowsbegin} 264 265 266\membersection{wxHVScrolledWindow::HitTest}\label{wxhvscrolledwindowhittest} 267 268\constfunc{wxPoint}{HitTest}{\param{wxCoord }{x}, \param{wxCoord }{y}} 269 270\constfunc{wxPoint}{HitTest}{\param{const wxPoint\& }{pt}} 271 272Return the position (X as column, Y as row) of the cell occupying the specified 273position (in physical coordinates). A value of {\tt wxNOT\_FOUND} in either X, 274Y, or X and Y means it is outside the range availible rows and/or columns. 275 276 277\membersection{wxHVScrolledWindow::IsColumnVisible}\label{wxhvscrolledwindowiscolumnvisible} 278 279\constfunc{bool}{IsColumnVisible}{\param{size\_t}{column}} 280 281Returns {\tt true} if the given column is at least partially visible or 282{\tt false} otherwise. 283 284 285\membersection{wxHVScrolledWindow::IsRowVisible}\label{wxhvscrolledwindowisrowvisible} 286 287\constfunc{bool}{IsRowVisible}{\param{size\_t }{row}} 288 289Returns {\tt true} if the given row is at least partially visible or {\tt false} 290otherwise. 291 292 293\membersection{wxHVScrolledWindow::IsVisible}\label{wxhvscrolledwindowisvisible} 294 295\constfunc{bool}{IsVisible}{\param{size\_t }{row}, \param{size\_t}{column}} 296 297Returns {\tt true} if the given row and column are both at least partially 298visible or {\tt false} otherwise. 299 300 301\membersection{wxHVScrolledWindow::OnGetColumnWidth}\label{wxhvscrolledwindowongetcolumnwidth} 302 303\constfunc{wxCoord}{OnGetColumnWidth}{\param{size\_t }{n}} 304 305This protected pure virtual function must be overridden in the derived class 306and should return the width of the given column in pixels. 307 308\wxheading{See also} 309 310\helpref{OnGetColumnsWidthHint}{wxhvscrolledwindowongetcolumnswidthhint} 311 312 313\membersection{wxHVScrolledWindow::OnGetColumnsWidthHint}\label{wxhvscrolledwindowongetcolumnswidthhint} 314 315\constfunc{void}{OnGetColumnsWidthHint}{\param{size\_t }{columnMin}, \param{size\_t }{columnMax}} 316 317This function doesn't have to be overridden but it may be useful to do 318it if calculating the columns' heights is a relatively expensive operation 319as it gives the user code a possibility to calculate several of them at 320once. 321 322{\tt OnGetColumnsWidthHint()} is normally called just before 323\helpref{OnGetColumnWidth()}{wxhvscrolledwindowongetcolumnwidth} but you 324shouldn't rely on the latter being called for all columns in the interval 325specified here. It is also possible that OnGetColumnWidth() will be 326called for the columns outside of this interval, so this is really just a 327hint, not a promise. 328 329Finally note that {\it columnMin} is inclusive, while {\it columnMax} is exclusive, 330as usual. 331 332 333\membersection{wxHVScrolledWindow::OnGetRowHeight}\label{wxhvscrolledwindowongetrowheight} 334 335\constfunc{wxCoord}{OnGetRowHeight}{\param{size\_t }{n}} 336 337This protected pure virtual function must be overridden in the derived class 338and should return the height of the given row in pixels. 339 340\wxheading{See also} 341 342\helpref{OnGetRowsHeightHint}{wxhvscrolledwindowongetrowsheighthint} 343 344 345\membersection{wxHVScrolledWindow::OnGetRowsHeightHint}\label{wxhvscrolledwindowongetrowsheighthint} 346 347\constfunc{void}{OnGetRowsHeightHint}{\param{size\_t }{rowMin}, \param{size\_t }{rowMax}} 348 349This function doesn't have to be overridden but it may be useful to do 350it if calculating the row's heights is a relatively expensive operation 351as it gives the user code a possibility to calculate several of them at 352once. 353 354{\tt OnGetRowsHeightHint()} is normally called just before 355\helpref{OnGetRowHeight()}{wxhvscrolledwindowongetrowheight} but you 356shouldn't rely on the latter being called for all rows in the interval 357specified here. It is also possible that OnGetRowHeight() will be 358called for the rows outside of this interval, so this is really just a 359hint, not a promise. 360 361Finally note that {\it rowMin} is inclusive, while {\it rowMax} is exclusive, 362as usual. 363 364 365\membersection{wxHVScrolledWindow::RefreshColumn}\label{wxhvscrolledwindowrefreshcolumn} 366 367\func{void}{RefreshColumn}{\param{size\_t }{column}} 368 369Refreshes the specified column -- it will be redrawn during the next main loop 370iteration. 371 372 373\membersection{wxHVScrolledWindow::RefreshRow}\label{wxhvscrolledwindowrefreshrow} 374 375\func{void}{RefreshRow}{\param{size\_t }{row}} 376 377Refreshes the specified row -- it will be redrawn during the next main loop 378iteration. 379 380 381\membersection{wxHVScrolledWindow::RefreshRowColumn}\label{wxhvscrolledwindowrefreshrowcolumn} 382 383\func{void}{RefreshRowColumn}{\param{size\_t }{row}, \param{size\_t }{column}} 384 385Refreshes the specified cell -- it will be redrawn during the next main loop 386iteration. 387 388\wxheading{See also} 389 390\helpref{RefreshRowsColumns}{wxhvscrolledwindowrefreshrowscolumns} 391 392 393\membersection{wxHVScrolledWindow::RefreshColumns}\label{wxhvscrolledwindowrefreshcolumns} 394 395\func{void}{RefreshColumns}{\param{size\_ t}{fromColumn}, \param{size\_t }{toColumn}} 396 397Refreshes the columns between {\it fromColumn} and {\it toColumn} (inclusive). 398{\it fromColumn} should be less than or equal to {\it toColumn}. 399 400\wxheading{See also} 401 402\helpref{RefreshColumn}{wxhvscrolledwindowrefreshcolumn} 403 404 405\membersection{wxHVScrolledWindow::RefreshRows}\label{wxhvscrolledwindowrefreshrows} 406 407\func{void}{RefreshRows}{\param{size\_ t}{fromRow}, \param{size\_t }{toRow}} 408 409Refreshes the rows between {\it fromRow} and {\it toRow} (inclusive). 410{\it fromRow} should be less than or equal to {\it toRow}. 411 412\wxheading{See also} 413 414\helpref{RefreshRow}{wxhvscrolledwindowrefreshrow} 415 416 417\membersection{wxHVScrolledWindow::RefreshRowsColumns}\label{wxhvscrolledwindowrefreshrowscolumns} 418 419\func{void}{RefreshRowsColumns}{\param{size\_t }{fromRow}, \param{size\_t }{toRow}, \param{size\_ t}{fromColumn}, \param{size\_t }{toColumn}} 420 421Refreshes the region of cells between {\it fromRow}, {\it fromColumn} and 422{\it toRow}, {\it toColumn} (inclusive). {\it fromRow} and {\it fromColumn} 423should be less than or equal to {\it toRow} and {\it toColumn}, respectively. 424 425\wxheading{See also} 426 427\helpref{RefreshRowColumn}{wxhvscrolledwindowrefreshrowcolumn} 428 429 430\membersection{wxHVScrolledWindow::RefreshAll}\label{wxhvscrolledwindowrefreshall} 431 432\func{void}{RefreshAll}{\void} 433 434This function completely refreshes the control, recalculating the number of 435items shown on screen and repainting them. It should be called when the values 436returned by either \helpref{OnGetRowHeight}{wxhvscrolledwindowongetrowheight} or 437\helpref{OnGetColumnWidth}{wxhvscrolledwindowongetcolumnwidth} change for some 438reason and the window must be updated to reflect this. 439 440 441\membersection{wxHVScrolledWindow::ScrollColumns}\label{wxhvscrolledwindowscrollcolumns} 442 443\func{bool}{ScrollColumns}{\param{int }{columns}} 444 445Scroll by the specified number of columns which may be positive (to scroll 446right) or negative (to scroll left). 447 448Returns {\tt true} if the window was scrolled, {\tt false} otherwise (for 449example if we're trying to scroll right but we are already showing the last 450column). 451 452 453\membersection{wxHVScrolledWindow::ScrollRows}\label{wxhvscrolledwindowscrollrows} 454 455\func{bool}{ScrollRows}{\param{int }{rows}} 456 457Scroll by the specified number of rows which may be positive (to scroll 458down) or negative (to scroll up). 459 460Returns {\tt true} if the window was scrolled, {\tt false} otherwise (for 461example if we're trying to scroll down but we are already showing the last 462row). 463 464\wxheading{See also} 465 466\helpref{LineUp}{wxwindowlineup}, \helpref{LineDown}{wxwindowlinedown} 467 468 469\membersection{wxHVScrolledWindow::ScrollRowsColumns}\label{wxhvscrolledwindowscrollrowscolumns} 470 471\func{bool}{ScrollRowsColumns}{\param{int }{rows}, \param{int }{columns}} 472 473Scroll by the specified number of rows and columns which may be positive (to 474scroll down or right) or negative (to scroll up or left). 475 476Returns {\tt true} if the window was scrolled, {\tt false} otherwise (for 477example if we're trying to scroll down but we are already showing the last 478row). 479 480\wxheading{See also} 481 482\helpref{LineUp}{wxwindowlineup}, \helpref{LineDown}{wxwindowlinedown} 483 484 485\membersection{wxHVScrolledWindow::ScrollColumnPages}\label{wxhvscrolledwindowscrollcolumnpages} 486 487\func{bool}{ScrollColumnPages}{\param{int }{columnPages}} 488 489Scroll by the specified number of column pages, which may be positive (to 490scroll right) or negative (to scroll left). 491 492 493\membersection{wxHVScrolledWindow::ScrollPages}\label{wxhvscrolledwindowscrollpages} 494 495\func{bool}{ScrollPages}{\param{int }{rowPages}, \param{int }{columnPages}} 496 497Scroll by the specified number of row pages and column pages, both of which may 498be positive (to scroll down or right) or negative (to scroll up or left). 499 500\wxheading{See also} 501 502\helpref{ScrollRowsColumns}{wxhvscrolledwindowscrollrowscolumns},\\ 503\helpref{PageUp}{wxwindowpageup}, \helpref{PageDown}{wxwindowpagedown} 504 505 506\membersection{wxHVScrolledWindow::ScrollRowPages}\label{wxhvscrolledwindowscrollrowpages} 507 508\func{bool}{ScrollRowPages}{\param{int }{rowPages}} 509 510Scroll by the specified number of row pages, which may be positive (to scroll 511down) or negative (to scroll up). 512 513\wxheading{See also} 514 515\helpref{PageUp}{wxwindowpageup}, \helpref{PageDown}{wxwindowpagedown} 516 517 518\membersection{wxHVScrolledWindow::ScrollToColumn}\label{wxhvscrolledwindowscrolltocolumn} 519 520\func{bool}{ScrollToColumn}{\param{size\_t }{column}} 521 522Scroll to the specified column. The specified column will be the first visible 523column on the left side afterwards. 524 525Return {\tt true} if we scrolled the window, {\tt false} if nothing was done. 526 527 528\membersection{wxHVScrolledWindow::ScrollToRow}\label{wxhvscrolledwindowscrolltorow} 529 530\func{bool}{ScrollToRow}{\param{size\_t }{row}} 531 532Scroll to the specified row. The specified column will be the first visible row 533on the top afterwards. 534 535Return {\tt true} if we scrolled the window, {\tt false} if nothing was done. 536 537 538\membersection{wxHVScrolledWindow::ScrollToRowColumn}\label{wxhvscrolledwindowscrolltorowcolumn} 539 540\func{bool}{ScrollToRowColumn}{\param{size\_t }{row}, \param{size\_t }{column}} 541 542Scroll to the specified row and column. The cell described will be the top left 543visible cell afterwards. 544 545Return {\tt true} if we scrolled the window, {\tt false} if nothing was done. 546 547 548\membersection{wxHVScrolledWindow::SetRowColumnCounts}\label{wxhvscrolledwindowsetrowcolumncounts} 549 550\func{void}{SetLineCount}{\param{size\_t }{row}, \param{size\_t }{column}} 551 552Set the number of rows and columns the window contains. The derived class must 553provide the heights for all rows and the widths for all columns with indices up 554to the respective values given here in its 555\helpref{OnGetRowHeight()}{wxhvscrolledwindowongetrowheight} and 556\helpref{OnGetColumnWidth()}{wxhvscrolledwindowongetcolumnwidth} 557implementations. 558