Thursday, April 8, 2021

Turbo Boost Your Delphi Knowledge - Become a Docwiki Ninja Warrior

I've made a commitment to learn FireMonkey. My flagship software product, Zilch Standard, turned 30 years old in 2021 and I still don't have a macOS version. I've got macOS consumers who buy my Windows® software and then email asking if there's a version that runs on their mac computer. This inevitably leads to me issuing a refund. So, I have a pretty strong incentive to learn FireMonkey.

"I feel like I'm sitting in the cockpit of an airplane."

I tried going down the FireMonkey learning path before but unfortunately I didn't get very far. Learning FireMonkey makes me feel like I'm sitting in the cockpit of an airplane. There's so many things that are unfamiliar. The scope of it all is overwhelming. There's so much to learn. I don't know where to look first. What about the help? It's just an [F1] key press away!

I don't know about you but I get frustrated at the built-in help that comes with Delphi? Does this sound familiar? You're frantically trying to figure something out... pressing [F1] all over the place, and hopelessly rummaging around through Delphi's built-in help. Sometimes it's great and gives you what you exactly what are looking for. Often times you are left feeling like you just read a bunch of cryptic tea leaves. 

Where do you turn at this point? The Facebook Delphi groups? Stackoverflow?  Your stash of Delphi books? Delphi's dockwiki?

In the past I've rarely thought to use Delphi's docwiki. In my mind I felt like it was the same rehashed [F1], cryptic leaves stuff. Well, that changed last night. 

It turns out, I wasn't using the dockwiki in a meaningful way. I figured out how to exploit the value of the docwiki. I'm going to show you how to become a docwiki ninja warrior.

"I'll show you how to become a Delphi Docwiki Ninja"

It all started last night when I wanted to learn more about FormFactor. I wrote a simple FMX application that displays the ClientHeight, ClientWidth, FormFactor.Width, and FormFactor.Height in the OnResize event handler. I was curious why the FormFactor values never changed as the form was resized, so I wanted to learn more. That's when I highlighted FormFactor in the Object Inspector and pushed [F1] .

This brought up the built-in help for FormFactor. This is one of those cryptic tea leaves help reference.

This wasn't very helpful. I may have done some googling to learn more but couldn't find anything that talked about FormFactor. What it is? How it's used? Why it's used? So I posted my question to StackOverflow

Someone commented and said "Please look at the documentation. It seems to concern iOS only, and changes according target device selection."

How did he find that docwiki page? That's not the docwiki page I found. In fact I couldn't find the dockwiki page referenced in StackOverflow comment. Turns out I didn't understand how to use the dockwiki. I was stuck in the API library and couldn't got out!

I was stuck in the API library and couldn't get out!

That's when I discovered how to become a Docwiki Ninja Warrior. This takes less than a minute to setup and I believe it will save you hours looking for information about Delphi that is relevant to what you are looking for. For illustrative purposes I'm sticking with my original pursuit of FormFactor.

Step 1: From inside the IDE click Help > RAD Studio Docwiki

Step 2: This opens the RAD Studio docwiki page in your default browser.
Step 3: Right-click on Library Reference > Open link in new tab 

Step 4: This opens the Library docwiki page in a new browser tab.
Step 5: Right-click on Code Example > Open link in a new tab.

At this point you should have three tabs in your browser each dedicated to separate docwiki sections. And now the fun begins.

Step 6: Enter FormFactor in the search box for tab 1 RAD Studio and press [Enter]. I'm horrible at spelling so I usually just copy and paste the value I need. I just highlighted FormFactor in the IDE code editor and pasted it in the search box. 

Step 7: Switch to tab 2 Library docwiki page and paste or enter FormFactor in the search box and press [Enter].

Step 8: Switch to tab 3 Code Examples docwiki and paste or enter FormFactor in the search box and press [Enter].

"So, what did I learn about FormFactor?"

FormFactor is only used used when you are creating an iOS application. This is awesome. I learned enough about FormFactor to satisfy my current need. Because I'm focused right now on learning how to use FireMonkey to create desktop applications for Windows and macOS, FormFactor is not relevant to my current situation. This lets me know I can skip a thorough investigation about FormFactor for the time being. It also lets me know that ignoring FormFactor at this time is okay since it does not apply to desktop applications for Windows or macOS. I don't need to be concearned about FOMO (fear of missing out).

However, if FormFactor was something I was interested in, the three different docwikis provide ample links to related, relevant, information in one convenient location. 

Oh yeah, make sure to play around with the "Advanced" link on the special search results pages.

There you have it. I am so glad I stumbled upon this. It will surely be very helpful in my quest to learn FireMonkey. 

Semper Fi,
Gunny Mike


  1. Go to your Chrome settings -> manage search engines. Other search engines - click add, lets call it "DocWiki", then some shortcut, I use "dw" and then in the third field for the url this:
    Now you can simply type dw in the address bar and then enter your search term, voila.

  2. Instead of converting your application to FireMonkey a look at "CrossVCL" might be worth a try: "Build VCL application for macOS and Linux"