@Neutral General: Unter Windows hat jedes Control eignetlich ein
Handle. Dadurch ist aber sowas wie Alpha nur schwer zu handeln. Unter Delphi ist es nun so gelöst das es eine art virtuelle Fenster gibt (die Controls ohne
Handle) und diese tragen sich beim Parent (ein Fenster mit
Handle) in eine Liste ein. Wenn jetzt der Parent (mit
Handle) neu gemalt wird (durch windowmessages) so ruft der Parent nachdem er sein Bild auf seine Canvas gemalt hat die PaintMethode der virtuellen Fenster auf und stellt dabei den virtuellen Fenstern seine Canvas zur Verfügung. Da der Parent sein Bild ja schon gemalt hat können die anderen virtuellen Fenster schon das gezeichnete von der Parentcanvas abfragen und somit Transparenz erzielen. Wenn du jetzt von einem virtuellen Fenster Repaint aufrufst wird intern das Repaint des Parents aufgerufen so das dieser sich wieder zuerst malen kann. Da diese virutellen Fenster aber kein eigenes
Handle haben und auch keine Canvas können diese Fenster auch keine Childs aufnehmen (also können virtuelle Fenster nie als Parent angegeben werden).
Oftmals fragen auch Leute nach, warum ein TImage zum Beispiel nicht über einem Memo liegen kann. Das liegt auch daran das ein TImage kein
Handle hat und sich somit auf die Canvas des Parents malt.
Wenn also auf einem Form ein TImage liegt und ein TMemo so malt sich das TImage auf die Canvas des Forms. Da das TMemo aber auch auf dem TForm liegt und eine eigene Canvas hat liegt es immer vor dem TImage.
(Man kann sich eine Canvas als Blatt Papier vorstellen, und wenn das Blatt Papier vom Memo auf(über) dem Blatt Papier vom Form liegt so ist es unvermeidlich/logich das man das Bild unter dem TMemo-Blatt nicht sieht)