(Thanks to Mike for help with these.)

Laying out two drop downs on the right hand side:
So, most simple Flash Forms will use a set of cfinput tags with labels. Out of the box, CFMX7 will nicely lay these out for you with the labels on the left and the form items on the right. But what if you want to put two items in the right hand column? For example, the expiration of a credit card should allow the user to pick a month and a year. By simply using <cfformgroup type="horizontal"> with a label, you can achive this. Here is a code sample:

<cfformgroup type="horizontal" label="Credit Card Expiration">
   <cfselect name="ccmonth">
   <option value="01">January</option>
   <option value="02">February</option>
   ... deletia ...
   <option value="12">December</option>
   </cfselect>
   <cfselect name="ccyear">
   <cfloop index="x" from="0" to="10">
   <cfoutput><option value="#year(now())+x#">#year(now())+x#</option></cfoutput>
   </cfloop>
   </cfselect>
</cfformgroup>

Mask plus Required == Minor Bug
Unfortunately, if you use mask plus required, when the form loads, the field will automatically be marked red. For now, I'm just not using it for required items.

Complex, Conditional Binds
So I'm working on a form that has a confirmation step. The confirmation tab simply redisplays the data from the other two tabs. However - I ran into a problem. When I first started, I tried using cfformitem, type=html, bind=... This worked, but the layout was wierd. There was too much vertical spacing between each item. Plus, it didn't allow me to do things like, hide some text when it was blank. So for example, an address may have a second line for the street. I didn't want a blank line just sitting there. Mike pointed out I could use this type of code in my bind:

{addr2.text.length>0?'
'+addr2.text:''}

What this means is - if the value of addr2 has a length greather than zero, print it with a br in front, if not print nothing.

So this worked fine - but because of the vertical spacing, I needed to put ALL of my bind in one big string. To make this easier, I simply used cfsavecontent:

<cfsavecontent variable="bind">
{'<b>Donation Information</b><br>'}
{firstname.text} {mi.text} {lastname.text}{'<br>'}      
{company.text.length>0?company.text+'<br>':''}{addr1.text} {addrx.text} {addr2.text.length>0?'<br>'+addr2.text:''}
{'<br>'}
{city.text}, {state.text} {zip.text}{'<br>'}
{country.text}{'<br>'}
{'Phone: '+phone.text}{'<br>'}
{'Email: '+email.text}{'<br>'}
{'Donation Amount: '+donation.text}{'<br>'}
{'Credit Card: '+creditcard.text}{'<br>'}
{'Card Number: '+ccnumber.text}{'<br>'}
{'Expire Date: '+ccmonth.text+'/'+ccyear.text}{'<br>'}
</cfsavecontent>

This worked well, but the spacing was still off because of the new lines and tabs in the code. So I simply added this:

<cfset bind = replaceList(bind,"#chr(10)#,#chr(13)#,#chr(9)#",",,")>

and finally I passed bind into my cfform item.