This forum is temporaily read-only. All existing discussions remain available for reference. For new questions, bug reports or support requests, please contact us at mail@lmdsupport.com.

How do I access a Tabbed Document programatically.

I create my documents at run time and Dock them as tabbed documents.  These documents are in themselves forms which contain an editor.  How can I access these forms at run time as I don't know which is the active form.  E.g. If I close a Tab I want to Close the underlying form but I can't see how I can get access to it?
I also want to run code on entering or exiting the docked form but I cannot tell which form I am entering or exiting.
This must be pretty standard stuff so I am clearly missing something basic understanding here.  I would have expected to be able to access each form by Index but there is no index property on the Site control as far as I can see.

Comments

  • edited October 2019

    As shown in our demo (in TfrmMain.CreateTextDoc method), when you create new tabbed document, you create a dock panel for it. Any appropriate event handler can be assigned to created panel's OnClose event. This can be a method of your document form, for example.

    Also, if you specify caFree as a CloseAction in dock panel OnClose event handler, then the panel will be destroyed, and its child document form will also be destroyed, so, you can close your document in its OnDestroy document form event handler.

    Also, OnClose event, like most other events provides Sender parameter which will point to dock panel object. You can cast it to TLMDDockPanel type and iterate its children via VCL's standard Controls and ControlCount properties. Panel in your case will most probably have only one child, which will be your document form (use "is" operator for testing children types).

    Another possibility is to maintain some global list of dock panels and their associated document forms, since you explicitly create a dock panel for each document. And, having Sender event parameter, which refer to dock panel, search the list for corresponding document form.
  • Thanks I have been creating documents as per your demo, I was missing the child controls of the dock panel. 
     

Sign In or Register to comment.