I am an amateur who uses Xojo from time to time. I have built a couple of cross-platform applications for non-profits that I work with. I would like to add a Help System. After looking through this forum, and considering my small non-technical user community, it would seem that a built-in compiled html-based system might work best for what I have. It would be multiple pages. At this point, I have at least a couple of questions:
-
How do I store the html? I assume that it would be in a String or Strings. But would it be all one big blob, or woud it be separate Strings for each page of Help Documentation? Or something else?
-
In the html, how do a link to different pages? On a web page, it would be something like https://… or file:///…, but what would it be for stored html?
I am looking for some ideas or an example to help me get started.
Many thanks!
This is how I do it, but there may be a better solution:
I used to place my HTML web pages inside my application, but now I place the links inside a database, with the links to static pages on my web site. This allows me to edit the web pages after the application has been compiled, disable pages and add new Help pages.
I have a generic container that lists the topics with the Help URL below and a Search field above. When the user clicks the Help button in the Toolbar it calls a common Method with its called-from location as a String. It then refreshes the list of Help Topics and URLs from the database and places them into the ListBox. Depending on where the user is in the application, it filters the list to the relevant Topics via the Search field and displays the most suitable URL below.
Should the user want to search wider, they can remove the Search field text and enter their own search terms.
Thanks, David. That is some good information.
If I had a web site, this would be a good approach. The update capability that would provide would be useful.
But I closed down my web site when I retired. So now I would like to compile the Help System content into the application.
Is it possible to do this with HTML?
I do just that for my apps.
I create the HTML pages structures on my disk, so navigation between pages can be done by simple links.
I use a copy file step to place the pages and pictures in the resources folder, where I fetch the index with specialfolder.resources.child(“index.html”). I can then open the page with specialfolder.resources.child(“index.html”).urlpath.
1 Like
Fantastic! I’ll try that, and see how it works.
I may have to figure a way out for distributing this solution to my very non-tech users. (They probably don’t know how to copy a file.) They are all friends, so I should be able to find a way-- although I’m certainly open to suggestions.
Many thanks, Michel.
Simply use an HTMLViewer to display the files in one of the windows of your app. You can also ShowURL to send to the default browser.
Michel, I worked out something based on your suggestion. I wrote some simple html, just enough to make sure navigation was working. I then wrote a simple utility to convert the html into Xojo source code, which I put into a simple test application. That application writes the html to the SpecialFolder.Resources area, so that it is available to the HTMLViewer in the Help window that opens when the Help menu item is selected. It all works great, and my users won’t even have to copy any files.
1 Like
That is great
Congratulations, James.