Indigo Rose Software

Professional Software Development Tools

 
Page 1 of 2 1 2 LastLast
Results 1 to 15 of 18

Thread: Tree menu

  1. #1
    Join Date
    Jun 2006
    Posts
    36

    Tree menu

    Hi

    I have a project with about 100 pages. What is the best idea to be

    used with Tree menu for page jump?

    Thanks

  2. #2
    Join Date
    May 2006
    Posts
    5,380
    hey, the tree can be quite tempermental at times, so with that in mind i wont bother trying to explain how to do it so i just made this quick example for you,

    set the node data like "Page1" without the quotes and any node that dosent jump to a page set the data to "0" without the quotes or you will get errors
    Last edited by RizlaUK; 02-01-2009 at 11:35 AM.
    Open your eyes to Narcissism, Don't let her destroy your life!!

  3. #3
    Join Date
    Jun 2006
    Posts
    36
    Thanks dear for your help.

    How can I use "On Select" instead of "On Double-Click"?

    I tried touse the same script written under "On double-Click" but I

    got errors.

    Thank you.

  4. #4
    Join Date
    May 2006
    Posts
    5,380
    yeah, like i say the tree can be quite tempermental, i havent successfully used the tree to jump page with onselect, in fact i seem to get all werid things going on whenever i put code in the onselect event it seems to enter into some kind of loop, and just lock up

    but in double click all seem to be fine

    sorry i couldent be of more help, maybe one of the more experianced users can help
    Open your eyes to Narcissism, Don't let her destroy your life!!

  5. #5
    Join Date
    Oct 2004
    Location
    East, South & West Asia
    Posts
    1,020

    Tree Page Jump

    Hi,

    I have 2 examples about Tree Page Jump:
    1. Tree Page Jump onDoubleClick
    2. Tree Page Jump onSelect

    For each example, you need to view codes at:
    1. GLOBAL FUNCTION AREA
    2. On Each Page at the PRELOAD and ONSHOW.

    So far both examples work without an endless loop or locking up.

    Try them at your end and customise to your needs.

    Hope this helps.
    Newbie Examples
    ------> AMS 7.5 : amstudio.azman.info
    ----> AMS 6 & 5: www.azman.info/ams/
    ----> FB: facebook.com/GuideToWealth

    ----> Content Development Blog: www.AZMAN.asia

  6. #6
    Join Date
    May 2006
    Posts
    5,380
    azmanar, both your examples work fine and are very usefull, but if a project has many pages it will be a lot of code, i was trying to go for simplicity,

    maybe you can help me out here

    this is the code im useing to jump page, the node data is "Page1", "Page2" etc
    tblTreeProps = Tree.GetNode(this, e_NodeIndex)

    JumpTo = tblTreeProps.Data

    if JumpTo ~= "0" then

    Page.Jump(JumpTo)

    end
    when the code is placed in double click it works perfect but if i put it in the on select event the tree goes crazy, i just can not work out why it will work in one event but not in an other

    i even tryed error checking with the below code but it still dose the same thing without giving any error warnings
    tblTreeProps = Tree.GetNode(this, e_NodeIndex)
    JumpTo = tblTreeProps.Data
    if JumpTo ~= "0" then
    error = Application.GetLastError();
    if (error ~= 0) then
    Dialog.Message("Error", _tblErrorMessages[error], MB_OK, MB_ICONEXCLAMATION);
    else
    Page.Jump(JumpTo)
    end
    end
    i attached the apz, if you have the time i would be greatful for some advice

    or is it that my code is just not up to the job ?
    Last edited by RizlaUK; 02-01-2009 at 11:35 AM.
    Open your eyes to Narcissism, Don't let her destroy your life!!

  7. #7
    Join Date
    Sep 2002
    Location
    Sol 3
    Posts
    3,160
    Works here with a single click. I have added some (uncommented) code that I hope will help with populating the tree and how to use it to navigate. I even added the capability to break your pages into sets like you hade in an earlier example. I don't know how this would work with 100 pages.

    Give it a shot I didn't change much only the page names to be able to divide into sets, on page 1 there is a function to populate the tree with pages dynamically and minor tweaks (if then check) to the On Select script.

    Tigg
    Last edited by TJ_Tigger; 01-11-2007 at 09:15 AM.
    TJ-Tigger
    "A common mistake that people make when trying to design something completely foolproof was to underestimate the ingenuity of complete fools."
    "Draco dormiens nunquam titillandus."
    Map of IR Forum Users - IR Project CodeViewer - Online Help - TiggTV - QuizEngine

  8. #8
    Join Date
    Sep 2002
    Location
    Sol 3
    Posts
    3,160
    Here is one where I duplicated the pages to show how it works with multiple pages. There are a few other tweaks as well like only expanding the section of the tree for the current page section.

    Tigg
    Attached Files
    TJ-Tigger
    "A common mistake that people make when trying to design something completely foolproof was to underestimate the ingenuity of complete fools."
    "Draco dormiens nunquam titillandus."
    Map of IR Forum Users - IR Project CodeViewer - Online Help - TiggTV - QuizEngine

  9. #9
    Join Date
    Sep 2002
    Location
    Sol 3
    Posts
    3,160
    Here is the function for populating a tree with all the pages in your project for those who might not want to download the project. There is a lot of potential and ways to accomplish this task. This will divide pages into groups of up to 9 if the page begins with the numbers 1-9. If the page name begins with 0 or an alphabetic character it won't be added to the list, or at least it shouldn't, I dont think I tested it.

    100 Pages is a lot of pages. With the capability to dynamically set information on a page do you need 100 pages.

    Code:
    function PopTree(strTName)	
    	local strTName = strTName;
    	local tPages = Application.GetPages();
    	if tPages then
    		Tree.RemoveNode(strTName, "0");
    		nSets = 7;
    		for x = 1,nSets do
    			local bCurrent = false
    			if x == String.ToNumber(String.Left(Application.GetCurrentPage(), 1)) then bCurrent = true end
    			-- Initialize node data table
    			local tblNodeData = {};
    			tblNodeData.Text = "Page Set "..string.format("%02.f", ""..x);
    			tblNodeData.Data = "";
    			tblNodeData.Expanded = bCurrent;
    			tblNodeData.NodeIndex = ""..x;
    			tblNodeData.ImageIndex = 0;
    			tblNodeData.SelectedImageIndex = 0;
    			
    			-- Insert the node
    			Tree.InsertNode("Tree1", ""..x,tblNodeData);
    		end
    		
    		for i,v in tPages do
    			if tPages[i] ~= Application.GetCurrentPage() then
    				nSet = String.ToNumber(String.Left(tPages[i], 1));
    				if nSet > 0 then
    					--this line assumes that you have only single digit sets.  If you have more than 9 then you will have to find where the page name starts
    					strPName = String.Mid(tPages[i], 2, -1);
    					local tblNodeData = {};
    					tblNodeData.Text = strPName;
    					tblNodeData.Data = tPages[i];
    					tblNodeData.Expanded = false;
    					tblNodeData.NodeIndex = nSet.."."..i;
    					tblNodeData.ImageIndex = 0;
    					tblNodeData.SelectedImageIndex = 0;
    					
    					-- Insert the node
    					Tree.InsertNode("Tree1", nSet.."."..i, tblNodeData);
    				end
    			end
    		end
    	end
    end
    TJ-Tigger
    "A common mistake that people make when trying to design something completely foolproof was to underestimate the ingenuity of complete fools."
    "Draco dormiens nunquam titillandus."
    Map of IR Forum Users - IR Project CodeViewer - Online Help - TiggTV - QuizEngine

  10. #10
    Join Date
    Jun 2001
    Location
    California
    Posts
    2,014
    Tigg on a roll! LOL Gotta love 'em!

  11. #11
    Join Date
    May 2006
    Posts
    5,380
    Hey Tigg, works for you huh, i guessing iv got something wrong on my system, i think it maybe time for a low level format and start again,

    the changes you made fix the bug i was having, but i still get the odd eratic page change, but every 5 or so page jumps, i have to click the tree node 2 or 3 times to get it to jump to that page (but its better than just locking up or going into a crazy loop)

    but as you say it worked for you then it must be my system or my ams install that is at fault, i'll try reinstalling ams 1st and see if the original one works, if not them i'll format my hdd (to kill any bugs) and give it a try with a fresh system

    and that function to pop the tree is well handy, thanks, that will save some work

    well, guess its time to backup and destory
    Open your eyes to Narcissism, Don't let her destroy your life!!

  12. #12
    Join Date
    Nov 2006
    Posts
    306
    Hey guys,

    Im back after almost 1 year, and wanted to pick up
    an old project, when I have the same problem.
    I tried over 10 ways to do it, setting up a log of
    debugging progress. It's making a loop when you
    select a node in the tree object, when you want
    to jump to another page, on the third select instruction.
    This was the main issue for over 10 attempts to make a
    pagejump.
    Unfortunately, I didn't save the source from the attempts
    to solve the problem, but saving it to one file, not in file
    cabinets to make version management.
    But I logged the main issue, so you get a better idea how
    the loop works.

    Results of scriptcode execution with their instructions:
    *) Startup application
    1) Select node 2
    └> e_NodeIndex: 2 ┐-OK √
    2) Select node 1 <┘
    └> e_NodeIndex: 1 ┐-OK √
    3) Select node 2 <┘
    └> e_NodeIndex: 2 ┐-OK √
    OK X-┌ e_NodeIndex: 1 <┘
    └> e_NodeIndex: ┐-OK X
    OK √-┌ e_NodeIndex: 2 <┘
    └> e_NodeIndex: ┐-OK X
    OK X-┌ e_NodeIndex: 1 <┘
    ┌----┘
    4) Select node 1
    └> e_NodeIndex: 1 ┐-OK √
    OK √-┌ e_NodeIndex: 1 <┘
    └> e_NodeIndex: ┐-OK X
    OK √-┌ e_NodeIndex: 1 <┘
    ┌----┘
    5) Select node 2
    └> e_NodeIndex: 2 ┐-OK √
    etc. <┘


    Legend:
    ----------------------
    OK √ = Value is correct
    OK X = Value is incorrect

    Codeblock for loop (in this example):
    step: 2,3,4

    Script in headlines:
    On Select --> Page.Jump(e_NodeIndex)
    On Preload --> Tree.SetSelectedNode("Tree1", ""); --> Thats why e_NodeIndex: ..., where ... = NULL/blanc/empty string, with this method, you bypass the looping, while it loops in a strange manor to bypass the infinite loop.

    Conclusion:
    Every page have their own Tree object (static) and have their own memory management. When you jump pages, each page will save the results of the instructions being performed or were performered during that page, so when you switch pages, you see different results of the Tree object, like expanded/collapsed nodes, different data/text for a certain node.
    To bypass it, save the results being performed on a tree when something is select/expand in the global variables, so that when you jump to another page the Tree can be created dynamically. This works fine for me, although the short loop still exist when you select different nodes (kinda weird, looks like the e_NodeIndex got differents memory storages with their own values, while the e_NodeIndex is not being overwrite, caused by the instruction Select, wrong parsing instructionset??)
    Its still buggy though, cause sometimes the page loads different values for nodes when jumps, for example the expanded nodes.
    IMHO, the Tree->Page Navigation is pretty bugged.
    Maybe an idea for the Suggestion Forum?

    i guessing iv got something wrong on my system, i think it maybe time for a low level format and start again,
    No need for, the way Tig did is the way to go, make it dynamically (or give variables values to static trees to manage the trees seperately).

    Your sincerely,
    Casper

  13. #13
    Join Date
    Nov 2006
    Posts
    306
    EDIT:
    After testing Tig's source at the attachment, the runned process is still in an infinite loop when switching couple pages.

    Put the code below into a new project, it works fine for me, although sometimes buggy (when you have to click twice on a node) when you perform to many switches.

    Code:
    ------------------------------[[ SCRIPT: Global Script ]]------------------------------
    blnNodeExpanded_1 = false;
    blnNodeExpanded_2 = false;
    blnNodeExpanded_3 = false;
    
    function treeHandler_ExpandedNodes()
    	if e_NodeIndex == "1" and e_Expanded == true then
    		blnNodeExpanded_1 = true;
    	elseif e_NodeIndex == "1" and e_Expanded == false then
    		blnNodeExpanded_1 = false;
    	
    	elseif e_NodeIndex == "2" and e_Expanded == true then
    		blnNodeExpanded_2 = true;
    	elseif e_NodeIndex == "2" and e_Expanded == false then
    		blnNodeExpanded_2 = false;
    		
    	elseif e_NodeIndex == "3" and e_Expanded == true then
    		blnNodeExpanded_3 = true;
    	elseif e_NodeIndex == "3" and e_Expanded == false then
    		blnNodeExpanded_3 = false; 
    	end
    end
    
    
    function treeHandler_OpbouwenTree()
    	Tree.SetSelectedNode("Tree1", "");
    	Tree.EnsureVisible("Tree1", Application.GetCurrentPage());
    	
    	if blnNodeExpanded_1 == true then
    		Tree.ExpandNode("Tree1","1");
    	end
    	if blnNodeExpanded_2 == true then
    		Tree.ExpandNode("Tree1","2");
    	end
    	if blnNodeExpanded_3 == true then
    		Tree.ExpandNode("Tree1","3");
    	end
    end
    
    function treeHandler_Geselecteerd()
    	
    end
    
    ------------------------------[[ SCRIPT: Page: 2.1, Event: On Preload Script ]]------------------------------
    treeHandler_OpbouwenTree();
    
    ------------------------------[[ SCRIPT: Page: 2.1, Object: Tree1, Event: On Select Script ]]------------------------------
    Page.Jump(e_NodeIndex);
    
    ------------------------------[[ SCRIPT: Page: 2.1, Object: Tree1, Event: On Expanded Script ]]------------------------------
    treeHandler_ExpandedNodes();
    
    ------------------------------[[ SCRIPT: Page: 1, Event: On Preload Script ]]------------------------------
    treeHandler_OpbouwenTree();
    
    ------------------------------[[ SCRIPT: Page: 1, Object: Tree1, Event: On Select Script ]]------------------------------
    Page.Jump(e_NodeIndex);
    
    ------------------------------[[ SCRIPT: Page: 1, Object: Tree1, Event: On Expanded Script ]]------------------------------
    treeHandler_ExpandedNodes();
    
    ------------------------------[[ SCRIPT: Page: 2, Event: On Preload Script ]]------------------------------
    treeHandler_OpbouwenTree();
    
    ------------------------------[[ SCRIPT: Page: 2, Object: Tree1, Event: On Select Script ]]------------------------------
    Page.Jump(e_NodeIndex);
    
    ------------------------------[[ SCRIPT: Page: 2, Object: Tree1, Event: On Expanded Script ]]------------------------------
    treeHandler_ExpandedNodes();
    You pass the values of the variables to the static tree on each page, so they update the tree on that page.
    This is the best sollution I had so far, I will look it further today and keep you posted when I can fix the bug.

    -Casper

  14. #14
    Join Date
    Nov 2006
    Posts
    306
    Hey guys,

    Ive token a look this morning at an old app I wanted to make to manage page navigation.
    There were alot of bugs I experienced due to complete scripting.
    For example: Like when you want to expand a node in a tree, action e_Expanded is performed in the On Expand section, but after that action, e_NodeIndex in section On Select is also performed == bug ?
    Cause I dont see a relation to perform 2 actions, while it can be done in one, but the worst thing is, is that you dont want to perform an On Select action.
    Other things are the weird loops, memory isnt overwrite when it should be ?
    I had so many things in my head how to solve this problem, while only 2 options succeed.

    In the attachment below, I used dynamically declaration of initialized variables, meaning the code for large project is less for treenavigation and clearly for programming. You also can use static declaration of variables if you want.

    Take a look at it, Ive tested untill I didn't saw anymore bugs, there could be still any in it, so I'm glad to hear any bugs or something else. IMO, works like a charm

    Have a nice day,
    -Casper
    Attached Files

  15. #15
    Join Date
    Aug 2007
    Posts
    13
    why don't thy the " Web.SetVisible"

Page 1 of 2 1 2 LastLast

Similar Threads

  1. Article: Adding a Menu Bar System
    By Brett in forum AutoPlay Media Studio 7.5 Examples
    Replies: 5
    Last Post: 12-04-2006, 07:31 PM
  2. Menu Tree
    By Seville in forum AutoPlay Media Studio 6.0
    Replies: 24
    Last Post: 05-03-2006, 09:36 AM
  3. More Menu Bar Examples
    By Roboblue in forum AutoPlay Media Studio 7.5 Examples
    Replies: 5
    Last Post: 02-28-2006, 08:58 AM
  4. Tree object menu error issue.
    By 4thstar in forum AutoPlay Media Studio 6.0
    Replies: 0
    Last Post: 11-25-2005, 09:13 AM
  5. TUTORIAL: Showing and Hiding Objects in AutoPlay Menu Studio 3.0
    By Support in forum AutoPlay Menu Studio 3.0
    Replies: 0
    Last Post: 10-10-2002, 02:39 PM

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts