OK, dann erklärt das schonmal das Verschwinden der Nicht-
VCL-Komponenten.
Delphi erstellt die internen Windows-Controls gerne mal neu, wenn sich der Fenster-Style verändert.
Dabei gehen natürlich alle
WinAPI-Sachen verloren.
Danach wird die Anzeige dann aus den
VCL-Objekten neu aufgebaut, aber dort fehlen natürlich die "externen" Controls und alle (der
VCL unbekannten und somit nicht beachteten) Änderungen via
WinAPI.
Einzige Idee, welche ich aktuell hätte, wäre:
> vor dem (Un)Docking:
- alle externen Controls suchen
(im Fall der GibMirPanel wäre es einfach, denn da müßte man nur diese paar Panels prüfen)
- also via
WinAPI alle ChildControls in den entsprechenden Komponenten (Fenster, Panels usw.) suchen, diese mit den Handles der
VCL abgleichen >> übrig blieben dann nur die Fremdkomponenten
(sobkomponenten von Fremdkomponenten könnte man wohl erstmal ignorieren)
- dann eine temporäre (unsichtbare) Form erzeugen, darauf die Fremdkomponenten via
SetParent zwischenparken
- dabei die Verbindung von
Handle der Fremdkomponente und der
VCL-Komponente merken
> nun (un)docken
> nach dem (Un)Docking:
- jetzt die Fremdkomponenten wieder via
SetParent auf die neuen Windows-Controls (neues
Handle zu den gemerkten
VCL-Objekten) übergeben.
- eventuell Tempform löschen
(klingt schlimmer, als es ist
)
Im Falle einer in ein Panel eingebundenen Form, könnte man sie auch mal kurzzeitig auf SetParent(..., nil) setzen und braucht womöglich keine Tempform.
Tja, wenn du alles/vieles über über die Pluginschnittstelle, als Weiterleitung zur Programminternen VCL, erzeugen ließest, dann würde die VCL alles kennen und nach dem Neuaufbau wäre nichts verschwunden.