p-rposters
02-14-2008, 11:24 PM
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.
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.