Page 1 of 1

Hiding a TFolder page

Posted: Tue Sep 09, 2008 6:12 pm
by Enrico Maria Giordano
Dear friends, how to hide a TFolder page?

Thanks in advance.

EMG

Posted: Tue Sep 09, 2008 6:21 pm
by Silvio
I think it not possible
I think tfolder page can be enable or disable ....

Posted: Tue Sep 09, 2008 6:22 pm
by Silvio
I think it not possible
I think tfolder page can be enable or disable ....
but each dialog can be an control ..I don't Know...

Posted: Tue Sep 09, 2008 7:21 pm
by Marco Turco
Hello Enrico,
I use this turn-around to do it.

Imagine to have a folder oFld with 3 pages: "Folder1","folder2","folder3"

then you can "hide" the folder2 at runtime with:

oFld:SetPrompt("Folder1","","Folder3")
oFld:aEnable[2]:=.f.

Posted: Tue Sep 09, 2008 8:01 pm
by Enrico Maria Giordano
Marco Turco wrote:Hello Enrico,
I use this turn-around to do it.

Imagine to have a folder oFld with 3 pages: "Folder1","folder2","folder3"

then you can "hide" the folder2 at runtime with:

oFld:SetPrompt("Folder1","","Folder3")
oFld:aEnable[2]:=.f.
Thank you, but I look forward for a better solution. :-)

EMG

Posted: Tue Sep 09, 2008 8:53 pm
by Antonio Linares
Enrico,

We need to implement a new method for it, as the dialog for the folder page to hide should be removed from oFld:aDialogs.

We can't simply hide it, as the folder uses the hide and show to select them.

Also, the prompts have to be modified.

Posted: Tue Sep 09, 2008 8:56 pm
by TecniSoftware
I need to create or not, some dialogs depending the rights accesss.
I do this with TPages, but is very similar code:

Add -> DEFAULT aDialogs := {} // In method Redefine

And at dialog creation:

n := 0

DEFINE DIALOG oDlg;
RESOURCE "FICHA";
TITLE "Title"

REDEFINE PAGES oPages;
ID 999;
OF oDlg

If ChkRights() // Check security access

n++
aAdd(aItems, "Datos personales" ) // manually add the dialog
aAdd(oPages:aDialogs, {})

DEFINE DIALOG oPages:aDialogs[n];
RESOURCE "FICHA_01_DATOS01";
OF oPages

REDEFINE GET oGetLegajo;
VAR oDbf:Legajo;
ID 1;
OF oPages:aDialogs[n]

EndIf

This work fine for me.

Best regards!

Posted: Tue Sep 09, 2008 9:14 pm
by Enrico Maria Giordano
Antonio Linares wrote:Enrico,

We need to implement a new method for it, as the dialog for the folder page to hide should be removed from oFld:aDialogs.

We can't simply hide it, as the folder uses the hide and show to select them.

Also, the prompts have to be modified.
This seems to work fine:

Code: Select all

FUNCTION FLDHIDEITEM( oFld, nItem )

    LOCAL oDlg := oFld:aDialogs[ nItem ]

    ADEL( oFld:aPrompts, nItem, .T. )
    ADEL( oFld:aDialogs, nItem )

    oFld:aDialogs[ LEN( oFld:aDialogs ) ] = oDlg

    RETURN NIL
EMG

Posted: Tue Sep 09, 2008 9:40 pm
by James Bott
Enrico,

> ADEL( oFld:aPrompts, nItem, .T. )
> ADEL( oFld:aDialogs, nItem )

I am assuming the third parameter shinks the array? If so, don't you also want to shrink aDialogs?

This function is more like a FldDeleteItem() since you can't decide to later show it again.

Regards,
James

Posted: Tue Sep 09, 2008 10:42 pm
by Enrico Maria Giordano
James Bott wrote:I am assuming the third parameter shinks the array?
Yes.
James Bott wrote:If so, don't you also want to shrink aDialogs?
No, as the dialog is already active when I decided to hide it. Leaving it working and no visible we avoid a series of problems.
James Bott wrote:This function is more like a FldDeleteItem() since you can't decide to later show it again.
I haven't tried but it should be possible to show it again simply resetting aPrompts and aDialogs to their original values.

EMG