Open mdichild form from browsebox on toolbar

I am trying out a new approach to the use of my browses. Instead of using normal windows for browses and normal form update windows (mdichildren), I am trying out implementing a sheet/tabcontrol on the toolbar of the midframe.
On each tab I have a browsebox (dropcount=10) with normal entry localator connected, form updatebuttons connected to the browsebox etc. From there I would like to open the forms, instead of the normal browse solution.

The solution works fine as long as I use non-mdi child for the form update, but it doesnt seem to support mdichild forms. Then I get the error message - error on thread etc etc.

Do somebody have a workaround on this ?

Also I would like to have the toolbar with the sheetcontrol look more like a ‘ribbon’. Any suggestions on how to do this?


MDI windows need to be on a START’d thread. You’d also need to manage the stuff that a form expects (such as GlobalRequest). Sometimes I find it easiest to create a SOURCE procedure, which sets up the state of things then calls the form.

That way, if you ever have a normal browse, you can still call your form normally.

That said, I’m not sure you’ll be satisfied with having input controls on a TOOLBAR. Some types of controls cannot receive focus when on a toolbar, making it a PITB if you want to support keyboard-only use of your app.

1 Like

I actually like the idea of using a browse on the toolbar. In my case the user could find a vessel (ship) by browsing the dropdown. Alternatively use the locator. By doubleclicking the browsebox the form with vessel details would open.Alternatively using normal button. On other tabs I would use the same principle for voyages, contacts etc.

Do you have some codeexamples of the code to put in the source before opening a form?

I don’t have any samples, but basically:

CallMyUpdateForm PROCEDURE(STRING pGlobalRequest,STRING pWhatever)


  GlobalRequest = pGlobalRequest
  CASE GlobalRequest
  OF InsertRecord
     !Prime your record here
     MyWhatever = pWhatever
  MyUpdateForm !Call the form

In your appframe:

MyThread = START(CallMyUpdateForm,25000,InsertRecord,'Whatever')