04/12/2014 - Creating a Filtered Portal with Find

03/30/2014 - Using a Toggling Button to Switch a Slide Panel

03/29/2014 - Using Slider Panels in FileMaker Pro 13

02/26/2014 - How to Change the Background image and Font Size in the OS X Notes app

11/02/2013 - Clearing Your Mac Mail’s Spam Folder with Keyboard Maestro

08/03/2013 - Creating a Budget database for FileMaker Go

06/09/2013 - Use an Applescript to Clear the Spam Folder

06/04/2013 - Working with Formatted Text in a PHP web application

02/10/2013 - Jailbreak your iPhone!

09/21/2012 - Bob’s Bookshelf - 09/21/2012

04/21/2012 - Longterm Solutions Announces FileMaker 12 Hosting

10/17/2011 - We’ve doubled our speed!

07/02/2011 - Bob’s Bookshelf - 07/02/2011

01/19/2011 - A Year on the Titanic

10/15/2010 - How to Skip Forward or Backwards in iTunes

09/06/2010 - Designing FileMaker Databases for FileMaker Go

07/31/2010 - Grey Matters

07/26/2010 - FileMaker Go Arrives!

07/25/2010 - The iPad Saga

07/03/2010 - What Do Clients Want?

04/24/2010 - Creating Script Templates Using ScriptBuildingBlocks

04/15/2010 - I Helped Launch the Titanic!

02/21/2010 - Oh, the Agony of a Bad Book

01/26/2010 - Use VOIP to Make Phone Calls From FileMaker

01/03/2010 - Bob’s Bookshelf - 01/03/2010

12/26/2009 - Dreaming of Sugar Plums and iSlates

11/18/2009 - Bob’s Bookshelf - 11/18/09

10/25/2009 - Ten Must-Have iPhone Apps... and More...

10/16/2009 - A Cool Case for Script Triggers

10/10/2009 - Independence Day - How to Get It Done

10/01/2009 - Spreading the Love for the Best Customer Service

09/17/2009 - Voice Over IP (VOIP): A Technology Whose Time Has Come

08/13/2009 - Programming at 36,000 Feet

08/11/2009 - FileMaker Pro Templating

07/19/2009 - Art versus Craft: Keep the Customer Satisfied?

06/22/2009 - FileMaker 10 Certification

04/24/2009 - Longterm Solutions LLC Announces NowPublisher for Music Publishers

03/15/2009 - How to Post to Twitter from a FileMaker Database

FileMaker Pro Templating

08/11/2009 - Building a FileMaker Pro database from scratch can be a daunting task. There you are, staring at an empty field definitions window, wondering where to begin your project. You have a rough idea of the solution you want, so you dive in and start creating fields.

Before long your list of fields has grown and you've added several tables. Perhaps you've tied them together with relationships, and you're designing layouts.

It seems like there should be a quicker way to get your project started. Luckily, there is.

For years when starting a new database project, I would do just what I described above; I'd dive in, creating fields and layouts, slowly spinning my project until I had a nice start on the solution. Sometimes this worked great, sometimes it didn't; it took years of having to retroactively rebuild parts of solutions before I realized a few things that would help in my design process. One of the easiest to implement, and quickest to put together, is FileMaker templating.

Put simply, a template is a rough form from which you hew your project. For example, many artists start a new painting by covering the entire canvas with a wash of a single color; this could be considered a simple template, although we'll take the concept a little farther.

In high school, I learned how to write a speech; I learned to start with an introduction, briefly announce the points I was going to cover, elaborate on each point, and then finish with a stunning conclusion.

In FileMaker Pro I use a similar approach, envisioning the finished product from the very start. Here are the features I want in my template: 1) I want to include those elements that I know I will always use in almost every database; 2) I want to include as many visual elements as I can that will be in almost every project; 3) I want to write some reusable code that I can easily configure for use in any project that I begin; 4) In want to include as many little tools as I can that might help to speed the design process; 5) I want to build my template so that it's flexible and easily adjustable for each project.

A good template is a collection of those tools that you will want to use with each of your future projects; it is an amalgam of all those things that you did RIGHT in previous projects. It might include your favorite button graphics, some elements that you like to use in each project, perhaps some text that is already formatted the way that you prefer. For example, here is a list of what you would find in my current FileMaker Pro database template:

GRAPHICS
Favorite icons for add, edit, delete, and search
Layout elements that I commonly use--engraved rectangles, rounded rectangles, title bars for rectangle sections or tabs;
Snippets of text in my favorite format, in a color that I like to use in m projects; this includes several sizes--header, labels, content, navigation, and so on
A tab control that is already formatted the way that I prefer;
A simple web viewer that shows the current page and foundcount, and which can be used on any layout by simply pasting it onto the layout.

CODE
Fields that I include in every table--creation timestamp, modification timestamp, who modified, who created, recordID, recid (a calc field equal to get(recordid) and which I use for web apps);
A table with the usual contact fields in it (name, address, city, and so on); they're in 90% of the solutions I create;
Custom functions that are a must for every project that I do--at the top of this list is a trio of functions that I use for managing multiple-parameter passing; I also include others, including phone number formatting and some others that I consistently employ;
Script skeleton--this is a set of scripts that I use for database navigation, searches throughout the database, and developer functions. It also includes the script comments that I always put at the top of every project, listing the designer's name, address, and version number;
My own custom tab-management system for navigation--I'll cover this in the next article;

As you can see, the list above represents many hours' work, and wasn't done in a single sitting. The script skeleton, as I call it, has been molded and massaged for many years, and represents my current thinking on database navigation and script management. By including this in every database that I undertake, I save myself hours, and enjoy the luxury of knowing that I have scripts in place that I have used for years and which are rock-solid from years of use and testing.

The well-dressed database should not be a cacophony of color; it should include a basic palette of complementary colors and not stray. Some of my more flamboyant clients might consider it too boring, but over the long run they eventually agree that a consistent and subdued color scheme endures longer and is easier to use. For this reason, a templating scheme works well; with a few changes, I can completely overhaul my template for a new project, going from shades of blue to shades of green with very little work.

Adapting good code from other authors is always a good plan, provided it's done with permission. I use a set of custom functions that were written by many different consultants; using fmButler's excellent Clip Manager I can copy them in and out of other projects, but because they're already in place in my template, much of that work is already done for me.

Some of you might be thinking that it sounds like my databases all look the same. Not so! This is where my custom nav tab system comes into play. Here's what it allows me to do: I paste in 2 graphic elements for my tab style (selected or not selected); I name as many as 12 tabs for my solution (I can change them at any time, rearrange them, remove one). There, I'm done!

Next time I'll talk about my custom tab navigation system that I use; it's easy to use and can be set up in less than 60 seconds for any project.

Get started on your template; take your best database, clone it, keep the elements that you want to reuse and delete the rest. Next time we'll talk about the nav bar template.