ist den m_pCDeviceWerkzeugauswahl angelegt worden
m_pCDeviceWerkzeugauswahl := CDeviceWerkzeugauswahl.Create;
wenn das tatsächlich so angelegt wurde und m_pCDeviceWerkzeugauswahl der Pointer ist, ist das der Fehler!
Der Zeiger auf die Objektreferenz ist was anderes als die Objektreferenz.
Obiger Code schreibt die Objektrefenz in den Zeiger auf die Objektreferenz.
Wie Himitsu würde ich auch raten, den "Pointer-Mist" wegzulassen.
Macht es nur unnötig kompliziert. Man braucht z.B. noch eine weitere Variable, auf der Pointer dann zeigt. Diese darf dann z.B. auch nicht auf dem Stack liegen bzw. gelegen haben..., sonst steht da schnell wieder was anderes drin.