The more I thought about this, the more I thought a sample program demonstrating this idea would be a good way to make sure I've got my dev tools setup properly and that I haven't forgotten too much. So, I've written a simple program that illustrates one method of doing a tabbed dialog box.
I didn't make the dialog box too complicated, but it demonstrates the basic ideas involved. You can see each of the three different tab pages in the sample pic below.
tabbed-gem-dialog.png
The titles are buttons. The first two are sized to be two pixels less wide than normal character-width snapping would do. Without this, you sometimes get glitches with the line between two of them being missing when you switch tabs. The tab pages go underneath the titles.
The tab pages are G_BOXCHAR objects without any character specified. Using a G_BOX should be OK too and in fact is prefered. I just wasn't paying that much attention when I created the resource or I would have done it that way in the first place, and after I did it with G_BOXCHAR I was too lazy to fix it.
There is a two pixel gap between the bottom of the button/titles and the box/tabpage but the borders fill that in. Look carefully at the resource and don't be afraid to tweak things around when you create your own.
My example is in C, not GFA BASIC, but it should be fairly easy to move it over to any other language. The
main.c contains all the actual code. The first function is
showSampleDialog and it has all of the dialog box code. The rest of the program is just your basic program initialization and GEM event handling.
The
showSampleDialog is reasonably commented. Anybody generally familiar with manipulating GEM object trees shouldn't have a problem with figuring it out.
The attached ZIP archive contains the sources, resource file, and executable. There is a LATTICE C project file. I didn't try it with any other compiler but other than maybe changing the header file includes, I'd expect it to require few changes for anything else.
TABBED.zip
You do not have the required permissions to view the files attached to this post.