Indigo Rose Software

Professional Software Development Tools

 
Results 1 to 3 of 3
  1. #1
    Join Date
    Jul 2004
    Posts
    5

    Lightbulb Resize all buttons and text for different screen resolutions

    Today I somehow messed up the Global code I had been using to resize my project for different screen resolutions. I came back here to the forum and could not for the life of me find the solution that I had found before.

    Sure, I found lots of code to resize position... but I also wanted my buttons, and all text and flash to resize as well. So, for those of you who are looking for something that has at least worked for me, I have the code below. Please understand this is not my code... I found it here about 3 months ago. But, it must be hard to find - so here it is again:

    In Project -> Settings
    ------------------------
    General - Resizeable and Always on top
    Style - Standard
    Taskbar - hidden
    ------------------------

    In Project -> Global Functions:

    ---------------------------------------------------------------------------
    --Function Resize_OnSize;
    --This function is in place to reduce the amount of code that must go on
    --each pages "On Size" event
    ---------------------------------------------------------------------------
    function Resize_OnSize (PageWidth,PageHeight)
    if bFirstRun then
    setOriginalPageSize(PageWidth,PageHeight);
    bFirstRun = false;
    end
    SetSize(PageWidth,PageHeight);
    end
    ---------------------------------------------------------------------------
    --Function Resize_OnPreLoad();
    --This function is in place to reduce the amount of code that must go on
    --each pages "On Preload" event
    ---------------------------------------------------------------------------
    function Resize_OnPreLoad()
    getOriginalPositions();
    Size = Page.GetSize();
    if not bFirstRun then
    SetSize(Size.Width,Size.Height);
    end
    end
    -- This is a global variable that is used to determine the first time that
    -- This page has been Accessed
    bFirstRun = true;
    ---------------------------------------------------------------------------
    --Function setOriginalPageSize
    --This function is used to set a global table with the original page
    --size of your project
    ---------------------------------------------------------------------------
    function setOriginalPageSize(WidthO,HeightO)
    -- Store these values in a global table. This action is only
    -- performed once.
    tblOriginalSize = {Width=WidthO,Height=HeightO};
    end
    ---------------------------------------------------------------------------
    --Function RevertSize
    --This function puts all objects back to their original position and size
    --This makes the page look proper if the project is resized on a different
    --page.
    ---------------------------------------------------------------------------
    function Resize_OnClose ()
    -- Stop the page from redrawing temporarily. If this was not in place
    -- you would see a flash of the original objects before it is resized
    -- when you jump pages.
    Application.SetRedraw(false);
    -- The loop will go through all of the entries in the global table tblOriginalPos
    -- and set all of the objects back to their original state.
    for i = 1, Table.Count(tblOriginalPos) do
    -- Get the table that is stored in the global table on every itteration of
    -- the loop
    tblPos = tblOriginalPos[i];
    -- The next if -> elseif block determines which type of object
    -- is currently in the table tblPos
    if tblPos.ObType == OBJECT_BUTTON then
    -- If it is a Button then set it back to its original size
    Button.SetSize(tblPos.ObName,tblPos.W,tblPos.H);
    -- If it is a Button then set it back to its original Position
    Button.SetPos(tblPos.ObName, tblPos.X, tblPos.Y);
    Button.SetProperties(tblPos.ObName, {FontSize=tblPos.FS});
    elseif tblPos.ObType == OBJECT_LABEL then
    Label.SetSize(tblPos.ObName,tblPos.W,tblPos.H);
    Label.SetPos(tblPos.ObName, tblPos.X, tblPos.Y);
    Label.SetProperties(tblPos.ObName, {FontSize=tblPos.FS});
    elseif tblPos.ObType == OBJECT_PARAGRAPH then
    Paragraph.SetSize(tblPos.ObName,tblPos.W,tblPos.H) ;
    Paragraph.SetPos(tblPos.ObName, tblPos.X, tblPos.Y);
    Paragraph.SetProperties(tblPos.ObName, {FontSize=tblPos.FS});
    elseif tblPos.ObType == OBJECT_IMAGE then
    Image.SetSize(tblPos.ObName,tblPos.W,tblPos.H);
    Image.SetPos(tblPos.ObName, tblPos.X, tblPos.Y);
    elseif tblPos.ObType == OBJECT_FLASH then
    Flash.SetSize(tblPos.ObName,tblPos.W,tblPos.H);
    Flash.SetPos(tblPos.ObName, tblPos.X, tblPos.Y);
    elseif tblPos.ObType == OBJECT_VIDEO then
    Video.SetSize(tblPos.ObName,tblPos.W,tblPos.H);
    Video.SetPos(tblPos.ObName, tblPos.X, tblPos.Y);
    elseif tblPos.ObType == OBJECT_WEB then
    Web.SetSize(tblPos.ObName,tblPos.W,tblPos.H);
    Web.SetPos(tblPos.ObName, tblPos.X, tblPos.Y);
    elseif tblPos.ObType == OBJECT_INPUT then
    Input.SetSize(tblPos.ObName,tblPos.W,tblPos.H);
    Input.SetPos(tblPos.ObName, tblPos.X, tblPos.Y);
    --Input.SetProperties(tblPos.ObName, {FontSize=tblPos.FS});
    elseif tblPos.ObType == OBJECT_HOTSPOT then
    Hotspot.SetSize(tblPos.ObName,tblPos.W,tblPos.H);
    Hotspot.SetPos(tblPos.ObName, tblPos.X, tblPos.Y);
    elseif tblPos.ObType == OBJECT_LISTBOX then
    ListBox.SetSize(tblPos.ObName,tblPos.W,tblPos.H);
    ListBox.SetPos(tblPos.ObName, tblPos.X, tblPos.Y);
    --ListBox.SetProperties(tblPos.ObName, {FontSize=tblPos.FS});
    elseif tblPos.ObType == OBJECT_COMBOBOX then
    ComboBox.SetSize(tblPos.ObName,tblPos.W,tblPos.H);
    ComboBox.SetPos(tblPos.ObName, tblPos.X, tblPos.Y);
    --ComboBox.SetProperties(tblPos.ObName, {FontSize=tblPos.FS});
    elseif tblPos.ObType == OBJECT_PROGRESS then
    Progress.SetSize(tblPos.ObName,tblPos.W,tblPos.H);
    Progress.SetPos(tblPos.ObName, tblPos.X, tblPos.Y);
    elseif tblPos.ObType == OBJECT_TREE then
    Tree.SetSize(tblPos.ObName,tblPos.W,tblPos.H);
    Tree.SetPos(tblPos.ObName, tblPos.X, tblPos.Y);
    elseif tblPos.ObType == OBJECT_PLUGIN then
    Plugin.SetSize(tblPos.ObName,tblPos.W,tblPos.H);
    Plugin.SetPos(tblPos.ObName, tblPos.X, tblPos.Y);
    end
    end
    end
    ---------------------------------------------------------------------------
    --Function getOriginalPositions
    --This function enumerates all objects on the current page. It then stores
    --information about the objects in a global table to be used for a
    --reference point to perform the position and size adjustments
    --The following information is stored about each object:
    -- Object Name
    -- Object Type
    -- Width
    -- Height
    -- Position X
    -- Position Y
    ---------------------------------------------------------------------------
    function getOriginalPositions ()
    -- The master table that contains information about each object on the page
    tblOriginalPos = {};
    -- The table that will be stored in the above master table. Each objects
    -- information will be stored in the below table
    Pos = {};
    -- Get all of the objects on a page
    Objects = Page.EnumerateObjects();
    -- Loop through each object on the page
    for i = 1, Table.Count(Objects) do
    -- Find out what TYPE of object it is.
    Type = Page.GetObjectType(Objects[i]);
    -- If it is a Button then
    if Type == OBJECT_BUTTON then
    -- Get the size
    Size = Button.GetSize(Objects[i]);
    FontSize = Button.GetProperties(Objects[i]).FontSize;
    -- Get the Position
    Position = Button.GetPos(Objects[i]);
    -- Set the table up to store this information
    Pos = {FS=FontSize, W=Size.Width,H=Size.Height,X=Position.X,Y=Position .Y,ObName=Objects[i],ObType=OBJECT_BUTTON};
    -- Store the 'Pos' table in the master table tblOriginalPos
    tblOriginalPos[i] = Pos;
    elseif Type == OBJECT_LABEL then
    Size = Label.GetSize(Objects[i]);
    FontSize = Label.GetProperties(Objects[i]).FontSize;
    Position = Label.GetPos(Objects[i]);
    Pos = {FS=FontSize, W=Size.Width,H=Size.Height,X=Position.X,Y=Position .Y,ObName=Objects[i],ObType=OBJECT_LABEL};
    tblOriginalPos[i] = Pos;
    elseif Type == OBJECT_PARAGRAPH then
    Size = Paragraph.GetSize(Objects[i]);
    FontSize = Paragraph.GetProperties(Objects[i]).FontSize;
    Position = Paragraph.GetPos(Objects[i]);
    Pos = {FS=FontSize, W=Size.Width,H=Size.Height,X=Position.X,Y=Position .Y,ObName=Objects[i],ObType=OBJECT_PARAGRAPH};
    tblOriginalPos[i] = Pos;
    elseif Type == OBJECT_IMAGE then
    Size = Image.GetSize(Objects[i]);
    Position = Image.GetPos(Objects[i]);
    Pos = {W=Size.Width,H=Size.Height,X=Position.X,Y=Positio n.Y,ObName=Objects[i],ObType=OBJECT_IMAGE};
    tblOriginalPos[i] = Pos;
    elseif Type == OBJECT_FLASH then
    Size = Flash.GetSize(Objects[i]);
    Position = Flash.GetPos(Objects[i]);
    Pos = {W=Size.Width,H=Size.Height,X=Position.X,Y=Positio n.Y,ObName=Objects[i],ObType=OBJECT_FLASH};
    tblOriginalPos[i] = Pos;
    elseif Type == OBJECT_VIDEO then
    Size = Video.GetSize(Objects[i]);
    Position = Video.GetPos(Objects[i]);
    Pos = {W=Size.Width,H=Size.Height,X=Position.X,Y=Positio n.Y,ObName=Objects[i],ObType=OBJECT_VIDEO};
    tblOriginalPos[i] = Pos;
    elseif Type == OBJECT_WEB then
    Size = Web.GetSize(Objects[i]);
    Position = Web.GetPos(Objects[i]);
    Pos = {W=Size.Width,H=Size.Height,X=Position.X,Y=Positio n.Y,ObName=Objects[i],ObType=OBJECT_WEB};
    tblOriginalPos[i] = Pos;
    elseif Type == OBJECT_INPUT then
    Size = Input.GetSize(Objects[i]);
    --FontSize = Input.GetProperties(Objects[i]).FontSize;
    Position = Input.GetPos(Objects[i]);
    Pos = {W=Size.Width,H=Size.Height,X=Position.X,Y=Positio n.Y,ObName=Objects[i],ObType=OBJECT_INPUT};
    tblOriginalPos[i] = Pos;
    elseif Type == OBJECT_HOTSPOT then
    Size = Hotspot.GetSize(Objects[i]);
    Position = Hotspot.GetPos(Objects[i]);
    Pos = {W=Size.Width,H=Size.Height,X=Position.X,Y=Positio n.Y,ObName=Objects[i],ObType=OBJECT_HOTSPOT};
    tblOriginalPos[i] = Pos;
    elseif Type == OBJECT_LISTBOX then
    Size = ListBox.GetSize(Objects[i]);
    --FontSize = ListBox.GetProperties(Objects[i]).FontSize;
    Position = ListBox.GetPos(Objects[i]);
    Pos = {W=Size.Width,H=Size.Height,X=Position.X,Y=Positio n.Y,ObName=Objects[i],ObType=OBJECT_LISTBOX};
    tblOriginalPos[i] = Pos;
    elseif Type == OBJECT_COMBOBOX then
    Size = ComboBox.GetSize(Objects[i]);
    --FontSize = ComboBox.GetProperties(Objects[i]).FontSize;
    Position = ComboBox.GetPos(Objects[i]);
    Pos = {W=Size.Width,H=Size.Height,X=Position.X,Y=Positio n.Y,ObName=Objects[i],ObType=OBJECT_COMBOBOX};
    tblOriginalPos[i] = Pos;
    elseif Type == OBJECT_PROGRESS then
    Size = Progress.GetSize(Objects[i]);
    Position = Progress.GetPos(Objects[i]);
    Pos = {W=Size.Width,H=Size.Height,X=Position.X,Y=Positio n.Y,ObName=Objects[i],ObType=OBJECT_PROGRESS};
    tblOriginalPos[i] = Pos;
    elseif Type == OBJECT_TREE then
    Size = Tree.GetSize(Objects[i]);
    Position = Tree.GetPos(Objects[i]);
    Pos = {W=Size.Width,H=Size.Height,X=Position.X,Y=Positio n.Y,ObName=Objects[i],ObType=OBJECT_TREE};
    tblOriginalPos[i] = Pos;
    elseif Type == OBJECT_PLUGIN then
    Size = Plugin.GetSize(Objects[i]);
    Position = Plugin.GetPos(Objects[i]);
    Pos = {W=Size.Width,H=Size.Height,X=Position.X,Y=Positio n.Y,ObName=Objects[i],ObType=OBJECT_PLUGIN};
    tblOriginalPos[i] = Pos;
    end
    end
    end
    ---------------------------------------------------------------------------
    --Function SetSize
    --This function is where the calculations for resizing and repositioning
    --takes place. It accepts a page Width and Height as parameters. It then
    --finds the ration between the original paage size and the current page size.
    --Every object on the page is then repositioned and resized by the ration
    --of the difference in size.
    ---------------------------------------------------------------------------
    function SetSize (Width,Height)
    -- Get the original size of the page/project
    OriginalWidth = tblOriginalSize.Width;
    OriginalHeight = tblOriginalSize.Height;

    -- Calculate the difference between the original page size and the current
    RatioW = Width / OriginalWidth;
    RatioH = Height / OriginalHeight;
    -- Turn off the redraw
    Application.SetRedraw(false);
    -- Now loop through the table that stores information about each object
    --and reposition and resize them according to the above ratio
    for i=1, Table.Count(tblOriginalPos) do
    -- Each item in tblOriginalPos is a table that holds specific informtion about
    -- that object
    tblProps = tblOriginalPos[i];
    -- If the item is a Button
    if tblProps.ObType == OBJECT_BUTTON then
    -- Set the position of the object
    Button.SetProperties(tblProps.ObName, {FontSize=Math.Round((tblProps.FS * RatioW), 0)});
    Button.SetPos(tblProps.ObName,tblProps.X * RatioW, tblProps.Y * RatioH);
    -- Set the size of the object
    Button.SetSize(tblProps.ObName,tblProps.W * RatioW,tblProps.H * RatioH);
    elseif tblProps.ObType == OBJECT_LABEL then
    Label.SetProperties(tblProps.ObName, {FontSize=Math.Round((tblProps.FS * RatioW), 0)});
    Label.SetPos(tblProps.ObName,tblProps.X * RatioW, tblProps.Y * RatioH);
    Label.SetSize(tblProps.ObName,tblProps.W * RatioW,tblProps.H * RatioH);
    elseif tblProps.ObType == OBJECT_PARAGRAPH then
    Paragraph.SetProperties(tblProps.ObName, {FontSize=Math.Round((tblProps.FS * RatioW), 0)});
    Paragraph.SetPos(tblProps.ObName,tblProps.X * RatioW, tblProps.Y * RatioH);
    Paragraph.SetSize(tblProps.ObName,tblProps.W * RatioW,tblProps.H * RatioH);
    elseif tblProps.ObType == OBJECT_IMAGE then
    Image.SetPos(tblProps.ObName, tblProps.X * RatioW, tblProps.Y * RatioH);
    Image.SetSize(tblProps.ObName, tblProps.W * RatioW, tblProps.H * RatioH);
    elseif tblProps.ObType == OBJECT_FLASH then
    Flash.SetPos(tblProps.ObName,tblProps.X * RatioW, tblProps.Y * RatioH);
    Flash.SetSize(tblProps.ObName,tblProps.W * RatioW,tblProps.H * RatioH);
    elseif tblProps.ObType == OBJECT_VIDEO then
    Video.SetPos(tblProps.ObName,tblProps.X * RatioW, tblProps.Y * RatioH);
    Video.SetSize(tblProps.ObName,tblProps.W * RatioW,tblProps.H * RatioH);
    elseif tblProps.ObType == OBJECT_WEB then
    Web.SetPos(tblProps.ObName,tblProps.X * RatioW, tblProps.Y * RatioH);
    Web.SetSize(tblProps.ObName,tblProps.W * RatioW,tblProps.H * RatioH);
    elseif tblProps.ObType == OBJECT_INPUT then
    --Input.SetProperties(tblProps.ObName, {FontSize=Math.Round((tblProps.FS * RatioW), 0)});
    Input.SetPos(tblProps.ObName,tblProps.X * RatioW, tblProps.Y * RatioH);
    Input.SetSize(tblProps.ObName,tblProps.W * RatioW,tblProps.H * RatioH);
    elseif tblProps.ObType == OBJECT_HOTSPOT then
    Hotspot.SetPos(tblProps.ObName, tblProps.X * RatioW, tblProps.Y * RatioH);
    Hotspot.SetSize(tblProps.ObName,tblProps.W * RatioW,tblProps.H * RatioH);
    elseif tblProps.ObType == OBJECT_LISTBOX then
    --ListBox.SetProperties(tblProps.ObName, {FontSize=Math.Round((tblProps.FS * RatioW), 0)});
    ListBox.SetPos(tblProps.ObName,tblProps.X * RatioW, tblProps.Y * RatioH);
    ListBox.SetSize(tblProps.ObName,tblProps.W * RatioW,tblProps.H * RatioH);
    elseif tblProps.ObType == OBJECT_COMBOBOX then
    --ComboBox.SetProperties(tblProps.ObName, {FontSize=Math.Round((tblProps.FS * RatioW), 0)});
    ComboBox.SetPos(tblProps.ObName,tblProps.X * RatioW, tblProps.Y * RatioH);
    ComboBox.SetSize(tblProps.ObName,tblProps.W * RatioW,tblProps.H * RatioH);
    elseif tblProps.ObType == OBJECT_PROGRESS then
    Progress.SetPos(tblProps.ObName,tblProps.X * RatioW, tblProps.Y * RatioH);
    Progress.SetSize(tblProps.ObName,tblProps.W * RatioW,tblProps.H * RatioH);
    elseif tblProps.ObType == OBJECT_TREE then
    Tree.SetPos(tblProps.ObName,tblProps.X * RatioW, tblProps.Y * RatioH);
    Tree.SetSize(tblProps.ObName,tblProps.W * RatioW,tblProps.H * RatioH);
    elseif tblProps.ObType == OBJECT_PLUGIN then
    Plugin.SetPos(tblProps.ObName,tblProps.X * RatioW, tblProps.Y * RatioH);
    Plugin.SetSize(tblProps.ObName,tblProps.W * RatioW,tblProps.H * RatioH);
    end
    end
    -- Allow the page to redraw once all objects have been adjusted
    Application.SetRedraw(true);
    end
    ------------------------------

    In Page -> Properties -> Settings
    -------------------------------
    Transition Effect - none
    -------------------------------

    In Page -> Properties - Script
    -------------------------------
    On Preload - Resize_OnPreLoad();
    On Show - Window.Maximize(Application.GetWndHandle())
    On Close - Resize_OnClose();
    On Size - Resize_OnSize(e_PageWidth,e_PageHeight);
    -------------------------------

    The above code does a nice job for what I was looking for - an ability to have my project resize for any screen resolution and have the buttons and button text, as well as everything I have built into my project (including flash and video) all come out sized and placed in the original aspect position.

    I even tried the free trial of AMS& because it said it handled sizing automatically... didn't work the way I wanted it.

    I don't know if the above code will also work in AMS7... someday I'll try it.

    I hope this helps those of you looking for a good resize option... again - it was somebody else in this forum that originally posted it... I'm just bringing it to top of mind awareness.

  2. #2
    Join Date
    Nov 2006
    Location
    Quebec, Canada.
    Posts
    432
    There is an "autosave" folder in your project's root... you should be able to find a working backup

  3. #3
    Join Date
    Jul 2002
    Location
    Just South of Reality
    Posts
    778
    If you haven't resolved this yet, this is probably the post you were looking for. Adam's code does work in AMS7; however check the thread of this post since there are new objects in AMS7 that are not included in the original post from AMS6.

    http://www.indigorose.com/forums/sho...ghlight=resize

    hth

Similar Threads

  1. New Setup Factory 7.0 (v 7.0.2.0) Available
    By Darryl in forum Setup Factory 7.0
    Replies: 9
    Last Post: 03-06-2005, 01:57 PM
  2. Howto make the text disapear from the build buttons
    By baiaz in forum AutoPlay Media Studio 4.0
    Replies: 1
    Last Post: 09-27-2003, 07:19 PM
  3. Replies: 13
    Last Post: 04-18-2003, 08:40 PM
  4. Localized text on screen displays
    By lmmck in forum Setup Factory 6.0
    Replies: 1
    Last Post: 02-27-2000, 01:31 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