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