Monday, November 17, 2014

Xojo: Creating a report from a listbox

Initial disclaimers: The code presented here is not my own. My goal is to fill in some of the blanks when it comes to learning to create a simple report from a listbox in Xojo. There isn't a lot about Xojo out there and I feel the more information that is presented in various formats, the more likely people are discover the beauty of Xojo (formerly known as RealBasic or Real Studio).

Step 1:
Put something in the listbox! The code I used comes from here. I imported a csv file so I didn't need the code to write to the listbox, just to read it. As a result, I just skipped the write portion of the code. I also added a button called "Load" to the window and put this code under the Load action event.

Step 2:
Watch this video and read the Examples folder under Printing and Reporting. That's where the rest of my code came from. The Examples folder is in Xojo and you'll see it on the sidebar when Xojo first opens.

Step 3:
Under App, choose the appropriate window. Otherwise, you won't see anything. It's a small step and one I overlooked. I drove myself nuts trying to figure out why nothing was displaying as planned.

Step 4:
As one of my Xojo friends explained, if you have a Mac, you will be able to preview the report as a PDF. Pretty cool since that's mostly what you'll want to do - preview the pdf, email the pdf. But in Windows, that functionality isn't present and, unfortunately, it's still a work in progress in Xojo itself, although, high up on the to-do list. There are a couple of options, besides just literally printing out the entire report.
      a) Use the Dyna plugin but it's not free. However, if you're creating an app to make money and not just for fun, it might be worth the cost. Like the Xojo license, it's not unreasonably priced.
      b) Create your own pdf framework. This is outside my realm of knowledge.
      c) Use OneNote. It came with my laptop on Windows 8 and I accidentally discovered that while I can't view the report as a pdf, I can view it in OneNote and that has the same effect. This isn't the prettiest report but it gives you an idea of what you can do. You'll see the Address and Subdivision fields from the report that are the column headings here. ***Note that the DataFields in the Inspector should use the same name as the original fields. The CSV report I used named the fields, "Address" and "Subd" and those are the names in the DataFields. In the text property in the Inspector, you can enter whatever text you want.
You can see how I put all the code together in GitHub. If anyone feels it would be useful, I will write down step-by-step what  I did. It didn't seem necessary as I wouldn't have really added anything to the sources cited above. So unless I hear otherwise, Happy Reporting!



What I love about Xojo - Part 2: GUIs, Multiplatform, Databases

In the first part, I loved the fact that Xojo's online book explained caching. So simple yet so important and often overlooked by instructors. It made me think that the people behind Xojo really thought things through in the development process.

The other reason Xojo(fka RealBasic, Real Studio) is so lovable is that it makes difficult things simple.

While I have a thing for C#, creating GUIs in Windows Forms is a major pain. With Xojo, you drag and drop. Seriously, that's it. Drag and drop and go to the Inspector to set values for the properties. Then you can actually work on your code instead of spending a ton of time coding for the GUI. Listbox? No problem! Labels? No biggie!

Then there is the real reason for Xojo's existence in the first place - multiplatform. Do I love Apple? Not really. Am I planning to learn Objective-C? No. I'm a Windows kind of girl. But now I want to create an app for a friend who happens to use a Mac. What's the answer? Xojo. Write it in Xojo and it can be used on Windows, Linux or Mac. (If I ever find time to finish said app, I'll write about that.)

Last, but not least, the database. It's a mistake to think you can become a real programmer without loving the database life. SQLite is part of Xojo and you can actually create the database in Xojo using the insert menu. Feel free to do it programmatically, too.

I think Xojo is a great business solution for companies/individuals who have limited resources in terms of being able to write code for multiple operating systems and maintain that code. You do have to pay for the license to deploy your app, but you can build it for free to see how you like Xojo. The license is not unreasonably priced either. Check it out here.




Thursday, November 6, 2014

Java - equals vs. ==

Finally, I found an article that explains this in terms that are understandable.

In a previous post, my explanation for C# reference type vs. value type is the difference between your painting ,which is an original masterpiece, getting destroyed (no more painting for anyone) and your painting, which is a print, getting destroyed (more copies can be made).

However, I still had trouble understanding the concept that underlies the issue here of when to use equals method instead of the == operator.

Here's a synopsis of the article:

  1. == compares memory addresses.
  2. equals, as inherited from Object, does, too.
  3. If you want equals to compare data, then you have to override the equals method inherited from Object.
So that explains not only the difference (or similarity, as the case may be) between  == and equals. It also explains that what is being compared is either the address or the data. Hence, in the example in the article, A == C //false because they have different memory addresses. But A.equals(D), once the equals method is overriden, is true because the data is being compared. Thank you, Kurt Mammen!