Task Dialog video series completely published

Task Dialog video series completely published

As announced in an earlier post, I recently started a detailed series on using Windows Task Dialogs in VCL and multi-platform applications.

Today, TMS Software published the final two videos which explain how to get user input using Task Dialogs. It is even possible to use any custom Delphi control inside of the dialog. The video shows how to use a custom edit control to enter IP addresses. The last video of the series expands the horizon of Task Dialogs for other platforms including Linux, MacOS, iOS, and Android. Using the FNC framework you can develop for any of those platforms using any framework to your liking: VCL, FireMonkey, Lazarus Component Library, or TMS Web Core. Of course, you can only deploy to the platforms that the selected framework supports. However, developing multi-framework source code is very straightforward using FNC.

Here is the complete series. It consists of 9 videos which are all available for free:

Tags: , , , ,
5 comments on “Task Dialog video series completely published
  1. Gary Mugford says:


    I experimented with TaskDialog a fair bit, but switched to TaskDialogEx which didn’t have a lot of documentation. I needed to make the dialogs a bit wide and I also found that I had issues getting all of the footer into the footer using the mini HTML.


    [1] Are there limits to how much you can fill any of the text/html receptors in TaskDialog and/or TaskDialogEx? REASON: I wanted to put in a LOT explanation for contact info for each member of IT. We seem to have a fair bit of turnaround and any dialog that pops up should be a shortcut to ALL the available help.

    [2] IS there any way to provide a homogenous method for colouring any of the areas of the dialog with a background colour of choice? REASON: I like to make PROBLEM dialogs show up with a RED background at the top. Windows 10 dialogs are bland in the main. I use JSDialogs in Win 7, but that is a lonely place these days.

    [3] Can you put in a custom icon that is bigger than the default size in the Task Dialog? REASON: My desired icons are more like 96×96 than 32×32 or 48×48. More expressive, especially the OOPS one. And that’s NOT OOPS like Programmer’s think, but OOPS like somebody who just dropped the egg.

    [4] What would be YOUR suggested method to create a TaskDialogEx derivative with a customized icon to be reused in all applications from a personal library? REASON: Right now, I’m testing having the dialog exist with the app with my customized icon. Then a function in the personal library I’ve created and reuse constantly that references FrmMain.tmsDialogOOPS (as an example), fills in the appropriate fields and then shows it. I do that because I don’t want to constantly recreate the task WITH THAT ICON. Is this the best way to reuse everything at the tightest levels? Or is it a good idea to totally recreate the full task dialog on the fly each time, not hooking back to FrmMain, which is the name of the main form in every app I write?

    THANK YOU for what you HAVE DONE and (HOPEFULLY) what you WILL DO in your series on uses for the VCL library from TMS.

    • Holger Flick says:

      thanks for your nice comments.

      Regarding your questions, I conferred with Bruno Fierens to make sure I do not pass on incorrect information.

      As explained in the video, TAdvTaskDialog is a wrapper around the Windows TaskDialog API, and the Windows API has no such customization like background color or larger icons.
      Windows API ensures the dialog looks consistent across applications. It also makes certain that your application will render correctly in upcoming versions of Windows 10.

      The component also switches in a non-API mode on older Windows versions. Your suggestions would require new development to extend it or better a new descended component as the primary goal of the non-native dialog was to make it available for older Windows versions but consistent with the newer Windows operating systems where the TaskDialog API is available.

      • Gary Mugford says:


        Once again, TMS/Bruno proves it’s customer-centric. I was fearful of the answer(s) being Microsoft. Sigh. I am struggling with developing a version that will work with an external library that I can call from any program. I’m stifled on how to add an icon resource to a non-form external library. i.e. I use xGlobals and xGlobalProcs for most apps. I have grown these for multiple decades. I would like to stick my variation of your AdvTaskDialogEx into it. Right now, my gmDlgOops(string) creates a JSDialog, fills it with my usual settings and then inserts string into the appropriate field. It shows and life moves on.

        Now, I tried to develop a tmsDlgOops that does the same thing. BUT, I want to load MY desired icon in the CustomIcon field. Using CustomIcon.data := ‘The bill long string from the DFM’ doesn’t work. So, I created an array[0..3] of TIcon planning to load them at startup from a TImageList, but that fails. I HAD hoped to use CustomIcon.Icon := tmsIcons[1] as solution.

        At this point, there is ONE MAIN APP that I can hard-code my variants into and then do a global replace across almost two million lines of code and switch from gmDlgOops, for example, to tmsDlgOops. So, I DO have a solution. FOR THAT APP. But it seems to me I SHOULD be able to put it in my generic GM library of support files and call it from there (just stick a redirect at the top of gmDlgOOPs to tmsDlgOops and then comment out the rest of the code in the function/procedure. I know others would have no issues with this. But I’m not others. I’ll stick with hard-coding.

        THANKS for all the help. GM

        • Holger Flick says:


          you can always develop your own form using FNC controls and that will give you that flexibility for any framework and any platform.

          • Gary Mugford says:

            Thought about that, although I don’t use FNC since I mostly use D7 with the NEW version of the big app being XE7 while switching database backbone from Paradox to NexusDB.

            That said, I’m beholden to my tortured users who need updates in (last count) five places right now. Yesterday. So, I’ve taken the coward’s way out and am hard-coding the procedures/functions into the main app. I’ll do the global replace IN THIS APP ONLY, tonight. And then fix the chaos I have wrought later this weekend. The initial view of the various dialogs I am doing this with has been positive. The lack of a colour swatch atop the dialog was mentioned. But the idea that they can see my phone number, clickable email address and rules of contact, plus that of my HW partner, has been responded to very positively. Their experience with the old JSDialogs has been good, but they aren’t available for XE7 and I’m less than enthused with their successors from LMD, who took over the code. Your videos were EXTREMELY timely as I like TMS’s rather than the LMD NGpack. Matter of taste.

            Thanks for the suggestion. Time for me to actually code rather than beg for solutions. GM