[lazarus] Updates

Mattias Gaertner nc-gaertnma at netcologne.de
Tue Nov 19 07:13:33 EST 2002

On Tue, 19 Nov 2002 00:04:17 +0100
Marc Weustink <marc at dommelstein.net> wrote:

> At 14:21 18-11-2002 -0600, Tony Maro wrote:
> >On Mon, 2002-11-18 at 11:59, Mattias Gaertner wrote:
> > > On 18 Nov 2002 11:45:02 -0600
> > > Tony Maro <tony at maro.net> wrote:
> > > >
> > > > Actually, Ctrl+Mouse would do this in D4.  Or was it shift?  Now I'm
> > > > confused.  I know it wasn't Ctrl+Shift though.
> >
> >But, just for the sake of Lazarus, when I get home I'll try to remember
> >to reboot and test this in Delphi 4 to see exactly what keys do what for
> >multi-select.
> I knew it was the opposite of what I think is logic, so I just checked it.
> It's  Shift + Mouse

It seems, the selection handling needs some talk.
Because most users expects Delphi(TM) handling, I implemented it very
Delphish. The Delphi way is IMO sufficient but not very comfortable,
therefore there are some differences.

Delphi's selection tool:

Mouse down without any key on a component:
- If the pointed component was selected 
  then keep current selection
  else select only the pointed component
- On Drag: Move selection 

Mouse down without any key on the form:
- selects only the form
- On Drag: rubberband selection of form childs

Mouse down with Shift key on a component:
- add/remove component to/from selection (= xor selection)
- On Drag: nothing

Mouse down with Shift key on the form:
- Delphi: nothing
- On Drag: same as without Shift

Mouse down with Ctrl key on a component:
- select form
- On Drag: rubberband select of childs of 
           pointed component

Mouse down with Ctrl key on the form:
same as on a component

Ctrl+Shift is the same as Shift.

So, in general there are 5 cases.


The rubberband is activated, when the mouse is moved and it is not a 'move

- The rubberband selects not only childs but also grand childs.
- The Shift key is always: xor selection
- The Ctrl key always means: only selects/unselects childs 
                             of pointed component
  (I just repaired this, so update before you test this)

This is pretty much the same as under Delphi, but IMO more comfortable.
For example: 
Selecting the child components of two groupboxes:
Delphi: Shift + click, click, click, click, ...
Lazarus: 2 times Ctrl+Shift+Drag

Of course, we can add options:
- one option to switch Ctrl/Shift key
- one option, so that the rubberband does not select grand childs
- one option, so that the rubberband only selects components completely


More information about the Lazarus mailing list