TweetFollow Us on Twitter

Beginning REALBasic

Volume Number: 24 (2008)
Issue Number: 07
Column Tag: REALBasic

Beginning REALBasic

Designing the Application

by Norman Palardy

REALbasic is a Rapid Application Develpment (RAD) tool from REALSoftware. In previous columns we've looked at it briefly and even talked with Geoff Perlmann, the CEO of REAL Software. This month we're continuing our series of articles that aim to get you started with REALbasic and show you how to be productive with it. For this series we're using the latest version of REALbasic; version 2008r1.

Designing the Interface

In this installment we're creating an application that tracks the prices of stocks. This will involve accessing the Internet to grab quotes, graphs and a database. Some of the components required are built in to REALbasic itself, and others will have to come from third parties.

In this installment we'll design the interface, the database and the windows we'll need for adding stocks to track. We'll get started writing the basics that make the whole project come together.

First, start REALbasic so you have a new project to work with.


Figure 1. REALbasic default project

As we saw last month, this default project is a fully functioning program. You could immediately run it by pressing the green Run button.

Let's consider the tasks we'll need to accomplish to make this program work the way we want.

  • We'll need a way to add and remove stocks from the list of ones we're interested in.

  • It should keep quotes for any stocks we currently have, or had an interest in at any time

  • We'll need a way to view the current set of stocks we're interested in and their prices

  • We'll need a way to get the stock prices from a designated source

  • We'll need a way to designate which source we're going to read data from

  • Eventually we'll want a way to graph prices of stocks over time

That's a lot of things to consider so we'll tackle them one at a time. Lets start with how we show our list of stocks of interest.

In the project we created earlier, there should already be a window called Window1. Let's start by editing that window and altering its layout to turn it into one that shows our list of stocks.


Figure 2. Editing a REALbasic window

Down the left hand side is a list of the standard controls that are available in REALbasic. Note that I'm using the Professional version. The Personal version has a smaller set of controls.

In the center is the actual editor where you lay out the look of your window. On the right is the properties palette that displays the properties of the currently selected item.

First, rename this window so that at a glance, you can know which window it is. Click the window so it is selected as shown in Figure 2, and then click on the Name in the property list on the right. Name this window wStocks.

Then add a Listbox control to the window. Rename the listbox lstStocks and position and resize it so your window appears about like the one in Figure 3. Note that Figure 3 shows you the position and size of my listbox in the properties palette on the right hand side.

You'll also notice that the listbox has several lock properties set (LockLeft, LockRight, LockTop, LockBottom). These properties tell REALbasic to keep the listbox "locked" to the respective sides of the window if the window is resized.


Figure 3. Create the stock list window

If you run the project at this point you wont see much except that a window with a large white area shows up. That area is the listbox, which is empty at this point.

The question, then, is how to fill it with data and what data to fill it with.

Every control has a number of "events" that allow you provide custom code when something (an event) occurs. Different controls have different events. The list of events that exist for a control varies depending on what kind of control it is. Simple controls have few events. Timers only have one event. The listbox has a fairly long list of events. For our program let's start with just using the Open event.

This event occurs when the control is about to be shown on a window that is being opened. It occurs only once when the window is initially opened. There are other events that occur more frequently but for the start of this project we'll use this event.

One thing to be aware of is that event ordering is generally not something you want to rely on. You have no idea if the listbox Open event occurs before or after some other controls Open event. The other control may not even exist yet. So you have to be careful about how you use certain events and what you try to do in the code for that event.

If you double-click the listbox you will be shown the code editor. REALbasic also tries to be helpful and selects the most likely event you are going to want to edit. In this case that's the Change event for the list box.


Figure 4. Editing the listbox events in the stock list window

Select the Open event in the left hand pane and then add the following code :

  me.ColumnCount = 3 // change the number of visible columns
  me.HasHeading = true // make the list box have a leading row
  me.Heading(0) = "Symbol" // set the heading for the first column
  me.Heading(1) = "Time" // set the heading for the second column
  me.Heading(2) = "$" // set the heading for the third column

Much of this CAN be done without writing code. If you review figure 3, you'll see that in the right hand properties pane there are settings for ColumnCount, HasHeading and InitialValue. If you set the columnCount property to 3 then the listbox will have 3 columns. If you check HasHeading then the listbox will have a heading and the setting for InitialValue will be used as the column headings. We've done these things in the Open event simply to illustrate that you can change some properties on the fly and they will take effect right away. Being able to alter the number of columns and their headings at run time will be shown in future articles.

If you run the program now, you can see that when the window opens it has 3 columns with the headings we wanted.

Now we have a way to get the display looking like what we want, so now let's see about getting some rows into it that display data.

If you look up ListBox in the built-in Language Reference, you'll see it has numerous events, properties and methods. Again, an event is some piece of code that gets run when something happen; a person selects a row, clicks a button or presses a key. Properties are the "settings" of various aspects of the control; the number of columns, which row is selected, or other display related values like the text font and size.

Methods are behaviors that the listbox will perform. These are actions like adding a row (AddRow), remove a row (RemoveRow), or ways to get data from the listbox (Cell and CellTag).

For our use AddRow is the one we need at present. At the end of the open event add the following code :

  me.AddRow "AAPL" // add one symbol we're interested in watching
  dim newDate as new Date // create a new instance of a Date
  me.cell(me.LastIndex,1) = newDate.ShortDate + " " + newDate.ShortTime // add the date / time stamp
  me.cell(me.LastIndex,2) = format(169.73,"$,#.00") // display Apple's current value

Let's review this code closely.

  me.AddRow "AAPL" // add one symbol we're interested in watching

This line adds the data for the first cell (the left most one also known as column 0) and leaves the other cells empty.

  dim newDate as new Date

For the second column we want the current date and time. In order to get that information we need to create an instance of a Date object, which is conveniently initialized to the date and time from the OS when the instance was created. A Date instance is not a clock and does not automatically count forward.

 me.cell(me.LastIndex,1) = newDate.ShortDate + " " + newDate.ShortTime // add the date / time stamp

Then we fill the middle cell — the one we want to contain the date and time — by using the CELL method to refer to a specific cell. Note that in order to make sure we set the correct cell in the correct row there is a convenient property called "lastIndex" that is the row number that was last added. The code says "set the last rows cell 1 to the short date and short time" which is exactly what we want.

  me.cell(me.LastIndex,2) = format(169.73,"$,#.00")

For the last column, column 2, we want a value. But the listbox only knows how to display strings. So we have to take the current value of Apple's stock, 169.73, which is a number and convert it into a string that the listbox can display. Also, we want to make sure the string that the listbox displays is formatted so it looks just the way we want. To do that we use the FORMAT method which gives us control over how numbers look when they are converted to strings.

Run this now and you'll see we're making headway. We can make the listbox display data, and we can add data to it.

Next time we'll look at how to make the data that we display more dynamic and actually get it from a web based quote service like Yahoo finance.


Norman Palardy has worked with SQL databases since 1992, and has programmed in C, C++, Java, REALbasic and other languages on a wide variety of platforms. In his 15+ years of IT experience, Norman has developed innovative and award-winning applications for TransCanada Pipelines, Minerva Technologies (now XWave), Zymeta Corporation, and the dining and entertainment industry. He holds a BSc from the University of Calgary in Alberta. He's also the Vice President of the Association of REALbasic Professionals (http://www.arbp.org)

 

Community Search:
MacTech Search:

Software Updates via MacUpdate

Monterey Cache Cleaner 17.0.4 - Clear ca...
Monterey Cache Cleaner is an award-winning general-purpose tool for macOS X. MCC makes system maintenance simple with an easy point-and-click interface to many macOS X functions. Novice and expert... Read more
Transmit 5.8.5 - Excellent FTP/SFTP clie...
Transmit is an excellent FTP (file transfer protocol), SFTP, S3 (Amazon.com file hosting) and iDisk/WebDAV client that allows you to upload, download, and delete files over the internet. With the... Read more
Xcode 13.4 - Integrated development envi...
Xcode includes everything developers need to create great applications for Mac, iPhone, iPad, and Apple Watch. Xcode provides developers a unified workflow for user interface design, coding, testing... Read more
Paragon Firewall 2.0 - Powerful firewall...
The Paragon Firewall - Network Monitor application gives you the full control over your Mac, protects the privacy of your computer, prevents unwanted network connections. Network Monitor discloses... Read more
Geekbench 5.4.5 - Measure processor and...
Geekbench provides a comprehensive set of benchmarks engineered to quickly and accurately measure processor and memory performance. Designed to make benchmarks easy to run and easy to understand,... Read more
The Unarchiver 4.3.5 - Replacement for t...
The Unarchiver is a much more capable replacement for "Archive Utility.app", the built-in archive unpacker program in OS X. The Unarchiver is designed to handle many more formats than Archive Utility... Read more
WhatsApp 2.2216.8 - Desktop client for W...
WhatsApp is the desktop client for WhatsApp Messenger, a cross-platform mobile messaging app which allows you to exchange messages without having to pay for SMS. WhatsApp Messenger is available for... Read more
ffWorks 3.0.5 - Convert multimedia files...
ffWorks, focused on simplicity, brings a fresh approach to the use of FFmpeg, allowing you to create ultra-high-quality movies without the need to write a single line of code on the command-line.... Read more
Bartender 4.1.49 - Organize your menu-ba...
Bartender lets you organize your menu-bar apps by hiding them, rearranging them, or moving them to Bartender's Bar. You can display the full menu bar, set options to have menu-bar items show in the... Read more
Steam v020 (1642451672) - Multiplayer an...
Steam is a digital distribution, digital rights management, multiplayer and communications platform developed by Valve Corporation. It is used to distribute a large number of games and related media... Read more

Latest Forum Discussions

See All

Major ‘Pokemon Home’ 2.0.0 Update Out No...
A major update for Pokemon Home (Free) for iOS, Android, and Nintendo Switch has just gone live in the form of Pokemon Home 2.0.0. The Pokemon Company recently revealed that this update was coming soon, and it has finally gone live bringing some... | Read more »
SwitchArcade Round-Up: Reviews Featuring...
Hello gentle readers, and welcome to the SwitchArcade Round-Up for May 17th, 2022. In today’s article, we have a little news to check out before we head into two full-sized reviews. Mini Motorways just hit the Switch last week after successful runs... | Read more »
The 10 Best Open World Games on Nintendo...
Open world games have been flying high since Grand Theft Auto III popularized the concept more than twenty years ago, and they show no signs of slowing down with the likes of Elden Ring continuing to chew up the sales charts. While the Nintendo... | Read more »
Roguelike First-Person Looter Shooter ‘G...
One of the most anticipated releases for many has been the mobile port of roguelike first-person looter shooter Gunfire Reborn from Duoyi Games, but it has been kind of a rocky road to get there. Originally launching on PC last fall, a mobile... | Read more »
‘Apex Legends Mobile’ Is Out Now on iOS...
After following the Apex Legends Mobile announcements over the years, it has finally launched on iOS and Android worldwide. Apex Legends Mobile has had early tests, a soft launch, and more leading up to today’s release. While pre-registrations... | Read more »
‘Pokemon Unite’ UNITE Club Membership No...
Pokemon Unite (Free) on iOS, Android, and Nintendo Switch has just launched an optional paid subscription in the form of the UNITE Club membership. This is priced at $9.99 a month and it includes various benefits like gems, trial holowear each week... | Read more »
Hand-Drawn ‘Monkey Island’-Inspired Poin...
Point-and-click adventure games are a perfect fit for mobile devices, and there have been dozens of fantastic adventures released on mobile over the years. Now Short Sleeve Studio is looking to add another to that list with their upcoming title... | Read more »
SwitchArcade Round-Up: Reviews Featuring...
Hello gentle readers, and welcome to the SwitchArcade Round-Up for May 16th, 2022. In today’s article, we’ve got reviews of a few recent releases. Dungeons of Dreadrock, Eiyuden Chronicle: Rising, and Prinny Presents NIS Classics Volume 2 are in the... | Read more »
Best iPhone Game Updates: ‘Fighting Fant...
Hello everyone, and welcome to the week! It’s time once again for our look back at the noteworthy updates of the last seven days. A very spicy assortment of updates have arrived, with plenty of faces we don’t see very often in these hallowed halls.... | Read more »
A Steam Deck Verified Podcast – The Touc...
In this week’s podcast Eli is jumping for joy after spending the past week with his shiny new Steam Deck. We talk about the things we love about the hardware, the games that play well on it, and plenty more. Is this slowly morphing into a Steam Deck... | Read more »

Price Scanner via MacPrices.net

New today at Apple: Clearance 2020 10.9″ iPad...
Apple has Certified Refurbished 2020 10.9″ iPad Airs now available in their online store in a variety of configurations. Models start at $469 and range up to $190 off Apple’s original MSRP. Each iPad... Read more
Prices continue to drop on Apple Refurbished...
Other World Computing has dropped prices again on Apple refurbished, factory-sealed, just-discontinued 27″ 5K iMacs with models now on sale for up to $814 off Apple’s MSRP, starting at only $985.... Read more
Apple has clearance 27″ 5K iMacs available st...
Apple has clearance, Certified Refurbished, 2020 27″ 5K iMacs available starting at $1299 and ranging up to $560 off original MSRP. Apple’s one-year warranty is standard, shipping is free, and each... Read more
Use your Apple Education discount to take $10...
Need a new 13″ Apple MacBook? Whether you’re a student, teacher, or staff member, you can use your .edu email address when ordering at Apple Education to take $100 off the price of a new MacBook. All... Read more
In stock today and on sale: Silver 13″ M1 Mac...
Amazon has Apple’s Silver 13″ MacBook Pros with M1 Apple Silicon processors in stock today and on sale for $150-$250 off MSRP for a limited time. Shipping is free. These prices are the lowest the... Read more
Mac Studio with M1 Max CPU in stock and on sa...
Apple reseller Simply Mac has the new Mac Studio with M1 Max CPU (10-Core CPU) in stock and on sale for $1899.99 including free shipping. Their price is $100 off Apple’s MSRP, and it’s the lowest... Read more
In stock: Open-box 16″ M1 Pro MacBook Pros fo...
Having trouble finding a 16″ M1 Pro MacBook Pro to buy? QuickShip Electronics has open-box return 16″ M1 Pro MacBook Pros in stock and on sale for $350-$450 off MSRP on their eBay store right now,... Read more
Apple Watch SE models are on sale today for u...
Amazon has Apple Watch SE GPS models on sale today for $50 off MSRP including free shipping. Their prices are the lowest currently available for SE Watches: – 40mm Apple Watch SE: $229, save $50 –... Read more
Switch to Red Pocket Mobile and get an Apple...
Switch to Red Pocket Mobile and get an Apple iPhone SE for $100 off MSRP, plus get free 6 months of Unlimited nationwide service with the purchase of any iPhone. Red Pocket Mobile is a nationwide... Read more
8.3″ WiFi iPad minis are in stock today and o...
Amazon is offering sale prices on Apple’s 8.3″ WiFi iPad minis ranging up to $100 off MSRP, depending on configuration. Prices start at $409. Most models are in stock today with free shipping. Amazon... Read more

Jobs Board

Cashier - *Apple* Blossom Mall - JCPenney (...
Cashier - Apple Blossom Mall Location:Winchester, VA, United States (https://jobs.jcp.com/jobs/location/191170/winchester-va-united-states) - Apple Blossom Mall Read more
Sephora Beauty Advisor - *Apple* Blossom Ma...
Sephora Beauty Advisor - Apple Blossom Mall Location:Winchester, VA, United States (https://jobs.jcp.com/jobs/location/191170/winchester-va-united-states) - Apple Read more
Omnichannel Associate - *Apple* Blossom Mal...
Omnichannel Associate - Apple Blossom Mall Location:Winchester, VA, United States (https://jobs.jcp.com/jobs/location/191170/winchester-va-united-states) - Apple Read more
Operations Associate - *Apple* Blossom Mall...
Operations Associate - Apple Blossom Mall Location:Winchester, VA, United States (https://jobs.jcp.com/jobs/location/191170/winchester-va-united-states) - Apple Read more
Systems & Applications Specialist I - *A...
Systems & Applications Specialist I - Apple / Mac Desktop Support Focus **Texas Medical Center-Houston, Texas** Information Technology UTHealth Administration Read more
All contents are Copyright 1984-2011 by Xplain Corporation. All rights reserved. Theme designed by Icreon.