I don't have too much time to post tonight since I just got back from Houston with Lis. I had a wonderful time, which I will talk all about.
I plan on posting updates this week talking about REAL World 2005, my weekend, etc. But I just wanted to give a quick update on something cool. I had an article posted over on O'Reilly's on how to develop applications for Windows. You can find the article here.
Talk later, eat now. Unga. :-P
Nicely written article. You write very coherently, and I enjoy reading your posts and now articles.
I do have some questions though. How do you accomodate the differences in OS's with Realbasic. That's quite a general question, so I'll attempt to be more specific.
1. For the button order. Do you have a class that redraws the controls to meet the standards of each OS?
2. Can you refer to any cheaper alternative to an installer that InstallShield? Does RB every plan to embed an installer in the IDE like .Net has? I'm sure many other RB users decry the value of anything MS, but I used their installer and it worked just fine.
3. If you suggest storing preferences in the Registry (why not an ini file?) then how do you compensate for Mac's lack of a registry? Just have two functions for every preference stored?
I would also add to the cross platform issues the fact that Windows users are used to very complicated, but all encompassing forms. I like to refer to MS Outlook when designing forms because that's probably the most used form on Windows that has a higher level of complication than IE. It's a very busy form. Mac applications tend to be less encompassing while utilizing several different forms. I think the RB IDE is a good example. It took me a little while to get use to not having to scroll through 30 different functions all in one module like you do in VB 6 (the tree view in .Net was well received, but the way you guys at RB handle it is even better).
If you've read all this, thanks.
Steve
http://statvat.blogspot.com
1) Ordering is something that Mac users tend to not pay too much attention to because so few controls get the focus by default on the Mac. However, you can turn on full keyboard access, so they too should pay attention to tab ordering even for their own platform.
Control tab ordering is based on the "Control Order", which is the order the controls are created in at runtime. You can set the control order at desgin time via the properties palette, or the control order dialog. One thing I recommend doing is turning on "Show Control Order" and leaving it on. That way you'll always see a little badge that shows you the order.
As for look and feel (in terms of size, font, etc) -- I always uses Font = "Sytem", Size = "0" to get the right font information. And I *always* remote debug to the platforms I want to support every time I tweak the UI ("test early and test often") to make sure they look right. Then I use platform constants to get the width, height and location correct.
2) InnoSetup is free and works quite well. We don't currently have any plans to include an installer with the product because there are plenty of good installers already out there to serve this purpose.
3a) .ini files provide for a very poor experience when on a multi-user system unless done properly. Also, it adds a bunch of file system clutter which is something MS *was* trying to avoid at one time. Heh. The registry removes this clutter and is a very easy way to store preferential data.
3b) There are 3rd party classes that abstract this from you, but.... what we do (internally) is have a single class (called Preferences) which can write out data based on the platform. So you use it exactly like you'd use a Dictionary (setting and getting .Value), but on Windows, it writes to the Registry, on the Mac it will make a plist (XML file) and on Linux it will write key/value pairs. You can also override the system defaults so that you can do whatever you'd like (say...plist on all platforms for example).
4) I tend to refer to that as platform-specific UI clutter. On Windows, we tend to be prompted with concise dialogs that Mac users consider "cluttered". On the Mac, they tend to be prompted with massive amounts of whitespace (so you can see the pretty metal or striped interface. Heh), something that I call "walking into a meadow". :-P