Hiding GeDialog elements



  • Hello,

    I am trying to hide a group of elements from a GeDialog.

    In MyDialog::InitValues() I am using HideElement() to hide the group (in case the user is already logged in).

    This is how it looks before:

    Screen Shot 2020-02-24 at 15.51.42.png

    And this is how it looks after the HideElement() call:
    Screen Shot 2020-02-24 at 15.52.19.png

    So yeah, the group is kinda gone, but I would prefer it not to leave a big hole in the dialog. How can I achieve that?

    Thanks & greetings,
    Frank



  • I have done something similar using HideElement to show/hide a group of elements in a GeDialog, but in my case there is no gap left.
    However, the group I am hiding is the first in a list of groups, as such there are other elements after that can fill up the gap.
    Have you tried having additional elements after? Maybe a simple empty AddStaticText, just to try out?



  • Hi @fwilleke80, I'm not able to reproduce your issue so could you send us a quick code, or at least describe how you setup your dialog?

    But few things, while in my test I have been able to hide element in the InitValues without issue.
    You could try to call a LayoutChanged with the parent group after the HideElement.

    Cheers,
    Maxime.



  • Hi Maxime,

    thanks for your message! Weird, I cannot reproduce it anymore, either. Strange. Sorry.

    Cheers,
    Frank



  • Hi,

    although the question is somehow solved I would like to point out that I have encountered a similar behaviour for GeDialog.HideElement when invoking it on elements of a resource that contains a multi-column container: The area of the hidden element went black. I do have not a solution, since I did not bother investigating the problem any further and went for disabling elements instead, but I thought it might be helpful for someone anyways.

    Cheers
    zipit



  • Thanks a lot, @zipit I was able to reproduce the issue.

    But I can confirm calling LayoutChanged on the master group of the group that is hidden, fix the issue.
    So if you if have
    Group 1000
    |----- Group 1001

    And Group 1001 should be hidden you should call LayoutChanged(1000).
    So from our point of view, it's not a bug, since either you have to hide the layout in the CreateLayout or call LayoutChanged to invalidate an area. Why it was working previously? I would say by luck because previously our redraw was not at all optimized and the whole dialog was redrawn every time, while now only the needed stuff is invalidated and redraw.

    Cheers,
    Maxime.



  • Thanks, Maxime!
    That answers all my questions :-)

    I'll mark this solved now.


Log in to reply