none
New extension: I/O Extension!

    General discussion

  • I have spent the last few months writing the IO Extension in C#. It provides hundreds of methods to do all kinds of different things. It includes support for:

    • Network server / client communications
    • Use of over 20 Windows Forms controls
    • Use of game controllers
    • Use of the Google Maps APIs
    • Use of Microsoft Office style ribbon controls (like this)
    • Use of as many timers as you want
    • Advanced file I/O and FileSystemWatcher events
    • Use of many algorithms such as Pi calculations and sorting routines
    • Sending emails
    • Advanced speech synthesis
    • Printing
    • And much more!

    I will not charge for or obfuscate the code in this extension as I previously planned. However, I encourage you to donate to me what you think this extension is worth. A huge amount of labor went into my code and I would appreciate a donation. Please remember I am in high school and make no money for coding. Anything you can give is appreciated =) Please email me at gungan37 at gmail dot com if interested in donating.

    A license file is provided in the download to which you must agree before using the library. Included is a folder of several useful samples and a Getting Started manual in PDF and DOCX formats.

    Download link: http://www.mediafire.com/?b5rqidsjv4jduqe (EDIT: fixed IOForms) (Note: this version was designed for Windows 8/7/Vista but works on XP. A special XP version without Aero libraries, etc. is in the works!)

    As always, comments and suggestions as well as bug reports are welcome here!

    Note: please be careful with the IOFile methods and test them with test files before using them to prevent any accidental damage.

    Also, please email me at gungan37 at gmail dot com if you are interested in a copy of the source code. Please do not just open it in a decompiler since that is a violation of my license.


    Please mark any answers and "vote as helpful" any posts that help you!














    Tuesday, January 22, 2013 11:43 PM

All replies

  • Also, I wanted to clarify a few things. This is not a copy of the old IO Extension that was up a couple of months ago. This uses some of the original codebase, but with many more features like more controls, the Office Ribbon, Maps APIs, timers, emails, and most importantly, a Network client / server class intended to work for people who used the Data Extension's NetworkServer and NetworkClient until Oskariok finds his bug.

    Finally, I am not aiming to replace the Data Extension. I think both extensions compliment each other well (Oskariok's GameWindow works well for games while my IOForms is better suited for general applications with Windows Forms controls). I also do not intend to re-write the things he has implemented so well, like his Hardware or OperatingSystem class, but rather to add things that are useful and can be used in conjunction with his extension.

    I hope this clears up any questions you guys may have =)


    Please mark any answers and "vote as helpful" any posts that help you!


    Wednesday, January 23, 2013 10:27 PM
  • umm, how do u install it?

    chase morell

    Thursday, January 24, 2013 12:04 AM
  • Instructions are in the "Getting Started" guide in the download. First, go to the "Prerequisites" folder and follow the directions in the .txt files. Next, copy all the files from the "bin" folder into the "C:\Program Files (x86)\Microsoft\Small Basic\lib" folder (or on 32 bit, "C:\Program Files\Microsoft\Small Basic\lib") (where "C" is the letter of your main HDD).

    Please mark any answers and "vote as helpful" any posts that help you!

    Thursday, January 24, 2013 12:44 AM
  • The "worth" of you extension, to those who will use it, in incalculable. Unfortunately, I am retired and living on a small fixed income. If I had it to spare, I would definitely donate to you efforts.  Thank you very much for the many good works you do.

    All of the instructions given were done and when

    IOForms.Setup()

    IOForms.InitializeForm()

    was used, the compiler threw an initializer exception.



    • Edited by elmo533940 Friday, January 25, 2013 5:41 PM failed implementation
    Friday, January 25, 2013 4:06 PM
  • elmo,

    I think you need all (and only these files - note not the SmallBasicLibrary.dll) highlighted below - Perhaps you don't need them all if you have installed them already in some way but it can't harm to put them in the SmallBasic lib folder.  I expect gungan37 will correct if I am wrong - btw looks like a lot of work - well done gungan37.


    Friday, January 25, 2013 9:49 PM
  • Thanks for your compliments guys! And no worries about the donations, elmo, I understand completely!

    Yes litdev, you are most definitely correct--- installing all the DLLs / PDBs will cause no harm and might actually cause some prerequisite issues if you do not copy them all: for instance, without NSort.dll, IOAlgorithms would be broken; or without VistaBridge, Aero glass would be broken.

    Also elmo, I accidentally put SmallBasicLibrary.DLL and SmallBasicLibrary.PDB in the archive.... you might want to avoid copying those as on a few systems, this can break the extension. I have emailed you and will post a solution here for everyone when we find one!


    Please mark any answers and "vote as helpful" any posts that help you!

    Friday, January 25, 2013 10:30 PM
  • Just a little bug (not that your extension is bad; it's just a little buggy here and there): when I put this line of code:

    TextWindow.WriteLine(IOAlgorithms.CalculatePasswordStrength("d"))
    It gives the error "Attempted to divide by zero" and closes. And the IOForms class won't work for me. Is it this WinXP 32-bit? Or do I not have some software installed? The extension is great, by the way!


    I am an 11 year old that loves math, games, and computers. 'Binary is as easy as 1, 10, 11.'


    • Edited by Math Man Saturday, January 26, 2013 5:05 AM
    Saturday, January 26, 2013 5:04 AM
  • Thanks for trying out my extension, Math Man!

    I will take a look at the Password Strength algorithm and see if I can track down the bug.

    As for the IOForms class, I have a feeling I know what is causing your problem. Since you are on XP, when I DLLImport dwmapi.dll (which I use for Aero effects), the thing crashes. I will try to make custom builds for the following OSs this weekend (default is designed for Windows 8 Pro):

    * Windows 7 x64

    * Windows XP Pro 32-bit

    I can do other custom builds if you ask but it takes a while since for each one I must install the OS in VMware, install VMware tools, SB, the .NET Framework and Visual Studio and then connect my HDD as a shared folder... you get the idea =)


    Please mark any answers and "vote as helpful" any posts that help you!

    Saturday, January 26, 2013 5:24 AM
  • Bug status update: I have tracked down the bug. It happens when the IOForms static constructor is called (the first time you call an IOForms method). On Windows XP, this probably fails when I try to initialize the Command Link dictionary since there are no Command Link controls in XP. The DLLImport for the DWM library theoretically should also fail but does not because the type initializer goes crazy before the DLLImport gets a chance to do so itself.

    I hope this is as straightforward to fix as I think it is. For the Windows 7 / Vista versions, I think it will be fine if I just compile it again under the correct OS since all the same DWM, Aero and other Windows API libraries I have on Windows 8 should be present.

    It will be a little tougher to get XP working. I intend to cut IOAero and all Windows API and sensor related code from the XP version, but everything else should stay. It will also be difficult to maintain two source code bases so XP releases may be delayed a little bit.

    I will post back when I have Windows Vista working (hopefully forward-compatible with 7!).


    Please mark any answers and "vote as helpful" any posts that help you!


    Saturday, January 26, 2013 5:02 PM
  • Thanks, that cleared things up. I think that this extension has great potential!

    I am an 11 year old that loves math, games, and computers. 'Binary is as easy as 1, 10, 11.'

    Saturday, January 26, 2013 10:16 PM
  • Thanks Math Man! I have found the problem: I forgot to include 4 DLLs for the Chart Controls! *Doh!*

    The thing ran fine on my and my friend's machines because we are C# developers and had the Chart Controls SDK on the system path.

    I am uploading a new version right now. Please tell me how things work on XP with this new one, MathMan.


    Please mark any answers and "vote as helpful" any posts that help you!

    Saturday, January 26, 2013 10:19 PM
  • Here is the link, Math Man: http://www.mediafire.com/?b5rqidsjv4jduqe

    Please mark any answers and "vote as helpful" any posts that help you!

    Saturday, January 26, 2013 10:32 PM
  • It works now! Thanks for the info and the link.

    I am an 11 year old that loves math, games, and computers. 'Binary is as easy as 1, 10, 11.'

    Sunday, January 27, 2013 3:37 AM
  • Excellent! Could you please try the Ribbon sample and the Web Browser sample (in the /Samples/IOForms directory) and tell me if they work? I would like to make sure everything is working in Windows XP. Thanks!


    Please mark any answers and "vote as helpful" any posts that help you!

    Sunday, January 27, 2013 4:05 AM
  • They both work but the web browser is very slow.

    I am an 11 year old that loves math, games, and computers. 'Binary is as easy as 1, 10, 11.'

    Sunday, January 27, 2013 4:09 AM
  • OK thanks for the info! Yes, on an older XP 32 computer the Web Browser will run slowly. This is because Web Browsers run as STA (serial threaded apartment) controls to keep ActiveX COM controls happy (SB programs do not use STA). So, for each WebBrowser added, I add it to a custom class called a WebBrowserQueue where it sits until the form is initialized. Then, if any WebBrowsers are in the queue, I start a new thread and remove CheckForIllegalCrossCalls checks (this means that problems can occur with multiple UI threads) and recurse through the WebBrowserQueue and add each control to the form.

    Thus, a big illegally threaded mess is made. There is no nice way of doing this that I have found (other extensions use the WPF WebBrowser which is OK with MTA/unknown apartments, but I must use the WinForms version), but in future releases I will work on a fix/ remove WebBrowsers.

    Also, in case you were concerned, the threads do not get created if you didn't add any WebBrowsers. Also on my computer (i5 @ 2.90GHz) there is no (noticeable) performance hit.

    Happy programming and hope you enjoy the IO Extension!


    Please mark any answers and "vote as helpful" any posts that help you!

    Sunday, January 27, 2013 4:19 AM
  • Noq we have IO Extension. Works beautifully. Now comes the hard pat - learning how to use it.

    Many thanks....

    Sunday, January 27, 2013 2:02 PM
  • Gungan, can you upload a screenshot here for the blog?

    Thanks!


    Ed Price (a.k.a User Ed), SQL Server Customer Program Manager (Blog, Small Basic, Wiki Ninjas, Wiki)

    Answer an interesting question? Create a wiki article about it!

    Monday, January 28, 2013 7:03 AM
  • Gungan, can you upload a screenshot here for the blog?

    Thanks!


    Ed Price (a.k.a User Ed), SQL Server Customer Program Manager (Blog, Small Basic, Wiki Ninjas, Wiki)

    Answer an interesting question? Create a wiki article about it!

    Here are some!:


    Please mark any answers and "vote as helpful" any posts that help you!

    Tuesday, January 29, 2013 12:43 AM
  • Please pick whichever ones you think would look good on the blog. Thanks!


    Please mark any answers and "vote as helpful" any posts that help you!


    Tuesday, January 29, 2013 12:44 AM
  • Thanks!

    I blogged about it here: http://blogs.msdn.com/b/smallbasic/archive/2013/01/28/small-basic-the-improved-i-o-extension.aspx


    Ed Price (a.k.a User Ed), SQL Server Customer Program Manager (Blog, Small Basic, Wiki Ninjas, Wiki)

    Answer an interesting question? Create a wiki article about it!

    Tuesday, January 29, 2013 2:36 AM
  • Thanks!

    I blogged about it here: http://blogs.msdn.com/b/smallbasic/archive/2013/01/28/small-basic-the-improved-i-o-extension.aspx


    Ed Price (a.k.a User Ed), SQL Server Customer Program Manager (Blog, Small Basic, Wiki Ninjas, Wiki)

    Answer an interesting question? Create a wiki article about it!


     Thank you sir! It looks excellent. I appreciate your work and hope it helps to get more people into Small Basic!

    Please mark any answers and "vote as helpful" any posts that help you!

    Tuesday, January 29, 2013 2:47 AM
  • Incredible work!  I can't donate but know that I do appreciate all of what you've contributed here. :) Excellent project.
    Tuesday, January 29, 2013 3:53 AM
  • Incredible work!  I can't donate but know that I do appreciate all of what you've contributed here. :) Excellent project.

    Thank you Tangmeister, I appreciate it!

    Please mark any answers and "vote as helpful" any posts that help you!

    Tuesday, January 29, 2013 11:49 PM
  • Incredible work indeed! Hats off to you!

    I think I found a bug:

    IOForms.AddLabel(1,2,3,4,5,6)  --> compiling error because it says that AddLabel only accepts 4 arguments instead of 6. Is it a bug or I'm missing something?

    I have also a little problem with the IOForms.AddButton 'cause I can't understand what i have to type in the icon argument.

    Thank you for your help!!

    Sunday, February 03, 2013 9:38 PM
  • Incredible work indeed! Hats off to you!

    I think I found a bug:

    IOForms.AddLabel(1,2,3,4,5,6)  --> compiling error because it says that AddLabel only accepts 4 arguments instead of 6. Is it a bug or I'm missing something?

    I have also a little problem with the IOForms.AddButton 'cause I can't understand what i have to type in the icon argument.

    Thank you for your help!!

    Hello and thanks for your praise! I hope you will enjoy the IO Extension.

    1) Sorry, I changed the parameters and forgot to update the XML. The correct args are: AddLabel(Name, Text, Top, Left). So, here is the code for what you need to do:

    2) This arg is to provide an image to display on the button. If you provide "" (just a blank string), no image will be displayed. However, if you give a full filepath, the given image will be displayed on the button.

    Hope this helps! If you have any more questions, feel free to post back here.


    Please mark any answers and "vote as helpful" any posts that help you!

    Monday, February 04, 2013 12:33 AM
  • Incredible work indeed! Hats off to you!

    I think I found a bug:

    IOForms.AddLabel(1,2,3,4,5,6)  --> compiling error because it says that AddLabel only accepts 4 arguments instead of 6. Is it a bug or I'm missing something?

    I have also a little problem with the IOForms.AddButton 'cause I can't understand what i have to type in the icon argument.

    Thank you for your help!!

    Hello and thanks for your praise! I hope you will enjoy the IO Extension.

    1) Sorry, I changed the parameters and forgot to update the XML. The correct args are: AddLabel(Name, Text, Top, Left). So, here is the code for what you need to do:

    2) This arg is to provide an image to display on the button. If you provide "" (just a blank string), no image will be displayed. However, if you give a full filepath, the given image will be displayed on the button.

    Hope this helps! If you have any more questions, feel free to post back here.


    Please mark any answers and "vote as helpful" any posts that help you!

    Thank you for prompt reply and explanations!

    Monday, February 04, 2013 1:34 AM
  • Thanks for all the downloads guys! We passed 100 downloads today (101 to be exact)!

    Again, if have a feature request, want to make a donation, want to report a bug or problem, or need help with the extension, please feel free to e-mail me or post here.


    Please mark any answers and "vote as helpful" any posts that help you!


    Wednesday, February 06, 2013 2:30 AM
  • Thank you for the extension.

    I am a first-time user and would like to try and send an e-mail using your extension.

    How do I do that?

    Thank you-

    Regards,

    Sunday, March 03, 2013 2:42 AM
  • Thank you for the extension.

    I am a first-time user and would like to try and send an e-mail using your extension.

    How do I do that?

    Thank you-

    Regards,

    Hello and thanks for using the IO Extension!

    Sorry, I forgot to write IntelliSense documentation for the email function. Here is the general form:

    IOTCPClient.SendEmail("<to address goes here>", "<subject goes here>", "<from address goes here>", "<email body goes here>", "<your Gmail username goes here>", "<Your Gmail password goes here>")
    Unfortunately, you must send from a Gmail account. I did this to make authentication / SMTP server properties simpler. However, you can send mail to any address (i.e., not just Gmail).

    Please mark any answers and "vote as helpful" any posts that help you!

    Sunday, March 03, 2013 3:27 AM
  • Thank you. Your answer completely did the job. Fortunately, I do have a Gmail account. Your functionality will make my programming job significantly easier. Since I am a first-time user of Microsoft Small Basic as well, I still have to figure out how to write the rest of my program :)

    How can I donate?

    May I ask how I can upload a file to a ftp server using your extension? I would need to provide my log-in credentials for that since it is no public ftp server.

    Regards,


    Sunday, March 03, 2013 9:06 AM
  • Thank you. Your answer completely did the job. Fortunately, I do have a Gmail account. Your functionality will make my programming job significantly easier. Since I am a first-time user of Microsoft Small Basic as well, I still have to figure out how to write the rest of my program :)

    How can I donate?

    May I ask how I can upload a file to a ftp server using your extension? I would need to provide my log-in credentials for that since it is no public ftp server.

    Regards,


    Thanks so much! Please email me at gungan 37 at gmail dot com and I will send you a link to donate. I appreciate it so much!

    Currently, the IO Extension only supports TCP/IP communications between two computers (i.e., no FTP support). The Fremy (FC) extension supports FTP with log-in credentials, but as far as I know it is no longer supported (but it works fine): https://skydrive.live.com/?cid=201f3835d49587fe&id=201F3835D49587FE%21914

    If you would rather not use the FC Extension, I can gladly add FTP to my to-do list!


    Please mark any answers and "vote as helpful" any posts that help you!

    Sunday, March 03, 2013 3:22 PM
  • Thank you for pointing me to the Fremy extension. As long as it works, I will gladly use it. I will give it a try. Otherwise, since potentially new versions of Small Basic may break compatibility with old extensions, and your project is still being actively developed, I would find it very convenient if TCP/IP connectivity became a part of your extension. Please do add that to your to-do list. Thank you.

    Please correct me if I am wrong, but isn't a server just another computer? So your extension should be able to establish a connection between my computer and the server over TCP/IP, shouldn't it? It may well be that my grasp of the concept of TCP is too limited to understand the difference between another - local - computer and a remote computer, so please don't feel offended if I should have made a silly assumption here.

    I will contact you shortly via PM.

    Again, thank you.

    Regard,

    Sunday, March 03, 2013 6:00 PM
  • Thank you for pointing me to the Fremy extension. As long as it works, I will gladly use it. I will give it a try. Otherwise, since potentially new versions of Small Basic may break compatibility with old extensions, and your project is still being actively developed, I would find it very convenient if TCP/IP connectivity became a part of your extension. Please do add that to your to-do list. Thank you.

    Please correct me if I am wrong, but isn't a server just another computer? So your extension should be able to establish a connection between my computer and the server over TCP/IP, shouldn't it? It may well be that my grasp of the concept of TCP is too limited to understand the difference between another - local - computer and a remote computer, so please don't feel offended if I should have made a silly assumption here.

    I will contact you shortly via PM.

    Again, thank you.

    Regard,

    Thanks for the donation! People like you keep the I/O Extension going!

    The TCP/IP server-client system I implemented in the I/O Extension does not really allow you to transfer files over the web. It is really just a simplified wrapper of the .NET sockets class to send messages (ASCII text) between IOTCPServers/IOTCPClients. The email functions went under IOTCPClient because there was no other better place to put it without creating a class. 


    Please mark any answers and "vote as helpful" any posts that help you!

    Sunday, March 03, 2013 10:54 PM
  • can you make a version that does not need Chart Controls  and slimDX?

    i am using a portable version of SB and using it at my school so i cant install anything.

    Thursday, March 07, 2013 2:59 AM
  • can you make a version that does not need Chart Controls  and slimDX?

    i am using a portable version of SB and using it at my school so i cant install anything.

    Sorry for the late response: I have been away from my computer.

    You can safely use the extension without Chart Controls or SlimDX installed. However, this might break some features. 

    IOForms may not work without the Chart Controls installed: my guess is that an exception will be thrown with the first call to IOForms since it initializes a Dictionary structure of Charts that it uses internally to keep track of your controls (i.e., all other controls will be broken, not just charts). IOGameControllers might not work either.

    You are welcome to try it though! If you have troubles, please do not hesitate to ask here!


    Please mark any answers and "vote as helpful" any posts that help you!

    Tuesday, March 12, 2013 9:19 AM
  • gungan37~

    Do you happen to know why Noah deleted his account and has quit contributing? I find it a tad odd that he'd up and leave this site!

    I am just a little curious as to why I don't see him around anymore.


    I can write 1000 lines of code in roughly 10 seconds. Here's how:
    i = 1

    For i = 1 to 1000
    TextWindow.WriteLine(i+ ". Code")
    Program.Delay(10)
    EndFor

    Make Sense?

    Tuesday, April 02, 2013 12:35 AM
  • gungan37~

    Do you happen to know why Noah deleted his account and has quit contributing? I find it a tad odd that he'd up and leave this site!

    I am just a little curious as to why I don't see him around anymore.


    I can write 1000 lines of code in roughly 10 seconds. Here's how:
    i = 1

    For i = 1 to 1000
    TextWindow.WriteLine(i+ ". Code")
    Program.Delay(10)
    EndFor

    Make Sense?


    I think he left because he is more interested in web-based things than in Small Basic or really the whole desktop realm.

    I talk to him frequently and he is currently working on some really neat projects, but nothing Small Basic related. If you have a message for him, I will gladly pass it on to him!


    Please mark any answers and "vote as helpful" any posts that help you!

    Tuesday, April 02, 2013 1:07 AM
  • Hi

    I just came across Small Basic and I/O extension,

    i try to I/O extension and it's Great, however i can not found a why to change  font size of the label ".AddLabel"..

    did i miss something,, or its fix size

    Monday, April 08, 2013 5:20 PM
  • Hi

    I just came across Small Basic and I/O extension,

    i try to I/O extension and it's Great, however i can not found a why to change  font size of the label ".AddLabel"..

    did i miss something,, or its fix size

    Thanks for using the IO Extension!

    Unfortunately, the label has a fixed font size. If you want to use different font sizes and styles, I would suggest using a TextBox or a RichTextBox.


    Please mark any answers and "vote as helpful" any posts that help you!

    Monday, April 08, 2013 10:04 PM
  • Thanks for your answer

    Tuesday, April 09, 2013 8:02 PM
  • How can i create multiple forms? And when you gonna implement the shapes function?
    Tuesday, July 15, 2014 1:31 AM
  • Hello!

    This is outlined in the getting started guide:

    In IOForms, you can use AddWindow(Primitive WindowName) to add a window to the program,

    use WindowSelector to set all calls to go to that window, then use ShowWindow(Primitive WindowName)

    or ShowWindowAsDialog(Primitive WindowName) to show the window. You can change the selector property

    “MainForm” to direct calls back to the main form.

    I hope to get back to I/O Ext - SBIDE++ development soon... maybe later this summer I will finish shapes. Sorry, but I have been super busy lately =(

    Happy developing!


    Please mark any answers and "vote as helpful" any posts that help you!

    Tuesday, July 15, 2014 1:56 AM
  • D'oh! I realized that I actually did finish the IOShapes class but never got around to documenting it. Here is a raw list of function and properties:

    IOShapes. ...

            void RemoveShape( ShapeName)
    	void SetShapeOpacity( ShapeName,  Opacity)
    	void SetShapeColor( ShapeName,  Color)
            void SetShapeRGB( ShapeName,  Red,  Green,  Blue)
    
    
            *Sets the width of the black border drawn around shapes. This is hidden from Intellisense bacause borders look terrible on triangles and circles*
            BorderWidth 
    
    	BrushColor 
    	PenColor 
    	PenWidth 
            FontName 
            FontSize 
            FontIsBold 
            FontIsItalic
    	FontIsUnderline 
    
            void AddRectangle( Name,  Top,  Left,  Width,  Height)
            void AddTriangle( Name,  x1,  x2,  x3,  y1,  y2,  y3)
    	void AddEllipse( Name,  Top,  Left,  Width,  Height)
            void AddLine( Name,  x1,  x2,  y1,  y2)
            void AddPolygon( Name,  Xs,  Ys)
            void AddText( Name,  Text,  Top,  Left)


    Please mark any answers and "vote as helpful" any posts that help you!

    Tuesday, July 15, 2014 3:50 AM
  • sorry man i kinda got it, but can you give me a an example? i'm not sure hopw to use WindowSelecetor
    Tuesday, July 15, 2014 8:19 PM
  • sorry man i kinda got it, but can you give me a an example? i'm not sure hopw to use WindowSelecetor

    No problem, extensions can get confusing in a hurry. Here is an example (untested since I am out of town):

    IOForms.AddWindow("foo") 'creates a form called foo

    IOForms.WindowSelector = "foo" 'change the current form to foo

    'now ALL IOForms calls will go to FOO, NOT the main form

    IOForms.WindowSelector = "MainForm" 'now calls will go to the main form rather than foo


    Hope this helps!


    Please mark any answers and "vote as helpful" any posts that help you!

    Tuesday, July 15, 2014 8:27 PM
  • sorry man i kinda got it, but can you give me a an example? i'm not sure hopw to use WindowSelecetor

    No problem, extensions can get confusing in a hurry. Here is an example (untested since I am out of town):

    IOForms.AddWindow("foo") 'creates a form called foo

    IOForms.WindowSelector = "foo" 'change the current form to foo

    'now ALL IOForms calls will go to FOO, NOT the main form

    IOForms.WindowSelector = "MainForm" 'now calls will go to the main form rather than foo

    Thanks very much. This surely helps. 

    Please is there any feature in IO Extensions that allows for the creation of tabbed windows.

    If it is available, please send me the link.

    I am a great fun of IO Extensions and i'll recommend that u add "IOForms.CreateTab" feature to the next version of the extension, if its not available.

    Friday, July 18, 2014 4:04 PM