]> git.saurik.com Git - wxWidgets.git/blame - docs/latex/wx/hvscroll.tex
Added newline for PDF RTF
[wxWidgets.git] / docs / latex / wx / hvscroll.tex
CommitLineData
d77836e4
RR
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$
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.