Icon View Thread

The following is the text of the current message along with any replies.
Messages 1 to 10 of 12 total
Thread ScrollBar component?
Wed, Apr 27 2016 7:01 AMPermanent Link

Matthew Jones

Is there a general purpose scroll bar component?

I am thinking I need to make my big list a virtual display, but I would
need a generic scroll bar to be able to make that happen. Or is there a
panel which has a "controllable" scroll bar with events?

--

Matthew Jones
Wed, Apr 27 2016 7:13 AMPermanent Link

Matthew Jones

There is, in the source, a TScrollBar and a TControlScrollBar, that
look like they would fit the bill perfectly. However I can't work out
how anything would find out that something had changed (no events) nor
how I'd make it accessible separately.

Tim, is this something that is possible to do? I can see there is a lot
of work in this, and I'd rather not have to copy it all.

--

Matthew Jones
Wed, Apr 27 2016 8:15 AMPermanent Link

Matthew Jones

Matthew Jones wrote:

> make it accessible separately.

procedure TfrmJobSelection.ScrollTest;
var
   xScroll : TScrollbar;
begin
   xScroll := TScrollbar.Create(pnlScroll);
   xScroll.Orientation:=soVertical;

   xScroll.StepSize := 1;
   xScroll.PageSize := 10;
   xScroll.ContentSize := 140;
   xScroll.Position := 70;
end;

This seems to work as a scroll bar, put on a TPanel. The notification
appears to be to the client area though, so I'd have to poll for that.
I think.

--

Matthew Jones
Wed, Apr 27 2016 8:41 AMPermanent Link

Michael Dreher

"Matthew Jones" wrote:

// Is there a general purpose scroll bar component?

I use TScrollPanel as a scrollable container. It's some kind of  TScrollBox we know from Delphi.

Michael Dreher
Wed, Apr 27 2016 8:44 AMPermanent Link

Matthew Jones

Matthew Jones wrote:

> so I'd have to poll for that.

This works, but the thumb scroll doesn't update the Position - it calls
SetToPos which is virtual, and used to set the scroll position for a
control, but doesn't do anything in the base class. It would need to be
exposed for that. But certainly looks like a derived class is quite
feasible.

--

Matthew Jones
Wed, Apr 27 2016 8:46 AMPermanent Link

Matthew Jones

Michael Dreher wrote:

> I use TScrollPanel as a scrollable container.

Indeed, that is what I have at the moment, but the complexity of the
contents is going to be too much for keeping speed (not due to EWB, but
the browser generally). Creating what must be a few thousand child
components in the browser is not fast (150 forms, each with about 20
edits or labels, and some code to set them up). Best case at the moment
is 30 seconds, and they are only going to get more complex. I will be
playing with virtual now...


--

Matthew Jones
Wed, Apr 27 2016 9:24 AMPermanent Link

Uli Becker

Matthew,

I'd like to see your project with 150 forms and a few thousand child
components. Smile

Uli
Wed, Apr 27 2016 9:34 AMPermanent Link

Matthew Jones

Uli Becker wrote:

> I'd like to see your project with 150 forms and a few thousand child
> components. Smile

It will be a commercial application soon, so you'll be able to! 8-)

The key is that each form is the editor for an item, and a "project"
can have hundreds of items. Thus 150 forms to be created, each with
edit boxes and labels. In total, a thousand or so objects. Once
created, it all works really well, but that initial wait needs to be
resolved. Virtualising seems to be very fast, and also works async, so
that may be my answer. Then only about 25 forms needed to edit all 150
items. The complication is that the child forms can change in height...

--

Matthew Jones
Wed, Apr 27 2016 12:34 PMPermanent Link

Tim Young [Elevate Software]

Elevate Software, Inc.

Avatar

Email timyoung@elevatesoft.com

Matthew,

<< Tim, is this something that is possible to do? I can see there is a lot of work in this, and I'd rather not have to copy it all. >>

Check out the TGrid control - it uses a custom scrollbar to implement the virtual grid in EWB.  The same is true for the TListBox control, which may be closer to what you're trying to do in terms of just a list of items.

I'm planning on virtualizing the TListBox further to allow for more complex list items, but don't have a timeframe for that yet.

Tim Young
Elevate Software
www.elevatesoft.com
Thu, Apr 28 2016 3:58 AMPermanent Link

Matthew Jones

Tim Young [Elevate Software] wrote:

> The same is true for the TListBox control, which may be closer to
> what you're trying to do in terms of just a list of items.

Indeed - I will review. Thank you.

--

Matthew Jones
Page 1 of 2Next Page
Jump to Page:  1 2
Image