[Gambas-user] Clicking a TreeView item by program

Rolf-Werner Eilert eilert-sprachen at ...221...
Fri Nov 27 12:49:48 CET 2015


Am 25.11.2015 18:07, schrieb Benoît Minisini:
> Le 25/11/2015 17:58, Rolf-Werner Eilert a écrit :
>> Am 25.11.2015 13:59, schrieb Benoît Minisini:
>>> Le 25/11/2015 09:07, Rolf-Werner Eilert a écrit :
>>>> In one of my older projects, there was kinda timeout after 2 minutes of
>>>> inactivity. In the TreeView the next parent was jumped at and "clicked"
>>>> to let the data of the child disappear from screen. This is the code,
>>>> "baum" is the TreeView:
>>>>
>>>>              baum.MoveParent
>>>>              baum.Item.Selected = True
>>>>              baum_Click
>>>>
>>>> Now in Gambas3, when the program doesn't have the focus anymore, I get a
>>>> "Null object" error at the baum.Item.Selected line.
>>>>
>>>> I know, Item is for the internal cursor. And I want the real cursor. But
>>>> Current is readonly, right? So how can I set the visible cursor? Or does
>>>> the error come from something quite different?
>>>>
>>>> Regards
>>>> Rolf
>>>>
>>> Provide more code. If baum.Item returns NULL, that should mean that
>>> MoveParent() failed.
>>>
>> Ok, that gives me an idea where to look.
>>
>> There is not much more code:
>>
>> Public Sub Timer2_Timer()
>>
>>      If PrivacyPause Then
>>        Timer2EventZlr = 1
>>        Return
>>      End If
>>
>>      If Timer2EventZlr > 0 Then
>>        Timer2EventZlr = 0
>>
>>      Else
>>        If tab.Index = 0 Then
>>          If Left$(baum.Current.Key, 1) = "#" Then
>>            baum.MoveParent
>>            baum.Item.Selected = True
>>            baum_Click
>>          End If
>>        Else
>>          tab.Index = 0
>>        End If
>>
>>      End If
>>
>> End
>>
>> Every 60 seconds the Timer looks if there is another Tab than 0 open. If
>> yes, the first action is to set it back to the first Tab. The next time,
>> it should set the cursor from the personal entry (child) back to its
>> parent, so the personal data aren't shown anymore and you cannot see who
>> was clicked.
>>
>> Of course, there is a check for activity at some places in the program,
>> but this still seems to run as expected. The problem appears only when
>> the program window is hidden and has no focus or when it's on another
>> screen. Maybe the TreeView "forgets" about its position then?
>>
>> Regards
>> Rolf
>>
> No. I guess that accessing baum.Current does not move the Item cursor
> anymore. Just try to add baum.MoveCurrent before baum.MoveParent, it
> should fix your problem.
>
> Regards,
>

And here we go again: There's another place with a Null Object error. 
This time, there is a dialog which is called when a certain is clicked 
in the TreeView. The dialog asks for a new entry for the TreeView. To 
make things short, this is what happens:

   dlgNeuerName.ShowDialog

   baum.MoveCurrent
   baum.Current.Expanded = True
'no problem up to here
'now read all data of the children into a list "ls"
   Do
     If baum.MoveBelow() Then Break
     If Left$(baum.Item.Key, 1) <> "#" Then Break
     ls.Add(baum.Item.Text & Chr$(6) & baum.Item.Key)
   Loop
'no problem
   baum.MoveCurrent    'print baum.Current.Key shows: everything ok up 
to here, but:
   baum.Item.Clear

Here is the Null Object error again. I tried:

baum.Current.Clear (instead of Item)

as well as

baum.MoveCurrent
baum.MoveParent
baum.Item.Clear

No chance.

Any idea? Thank you! And if you are not there right now - have a nice 
weekend!

Rolf





More information about the User mailing list