A browse widget has a query associated with it. That query has buffers associated with it which are either database tables or temp-tables. Therefore the query will run against the buffers associated with it. Whenever you select a row in the browse widget the query will fetch the corresponding records in the buffers so that they are in the record buffer. When you change fields they will be saved back to the buffers (either database table or temp-table).
The browse widget has a MAX-DATA-GUESS attributes which controls how many data the query will fetch, according to documentation the default value is 100. The vertical scroll bar of the browse widget is dependent on that setting too, the height of the scroll button is always in relation with the MAX-DATA-GUESS (and how many data is already fetched) not the maximum number of records in the table.
Heavy Regards, RealHeavyDude.