Frage

Ich bin auf der Suche nach einem Weg, um ein Kind Form Alphablend, wenn möglich, überlappende Fenster verwendet, da es interaktive Steuerelemente dahinter sein wird.

Das Problem ist, ich eine Komponente in einem regelmäßigen TForm, die mehrere optische Schichten (Zeichnungen, Bilder ...) malt. Irgendwann muß ich eine Editor Kontrolle auf diesem Formular (in-place) instanziiert, diese Steuerung wird eine Vielzahl von Standard-Input-Kontrollen beinhaltet außerhalb meiner Kontrolle (Eingabefeld, Kontrollkästchen, etc.), aber ich würde gerne zu überlagern die Schichten vor der alpha-Blending Schicht bearbeitet werden unter Verwendung von (und WS_EX_TRANSPARENT machen durch~~POS=TRUNC anklicken).

Ich dachte, das erste Kind Formen mit einem für diese (randlos TForms auf die Komponente parented), und das funktioniert gut, bis zu dem Punkt, wo die AlphaBlended TForm überhaupt nicht alphablended, sondern verwandelt sich undurchsichtig, sobald parented .. .

Ich habe dann versucht, die alphablended Form zu unparent, setzen Sie ihn auf fsStayOnTop, und von den relevanten Ereignisse reagieren, halten Sie es vor dem Bauteil auf dem Bildschirm, das funktioniert, aber das ist keine wirklich befriedigende Lösung: die alphablended StayOnTop Form ist auch vor anderen modalen und nicht modalen Formen der Anwendung sollte der Benutzer entscheiden, um sie vor der Komponente zu bewegen ...

Also, alle anderen Ideen auf einem Weg ein Kind Form haben alphablended werden? (Oder verhalten sich wie es ist)

War es hilfreich?

Lösung

Laut MSDN Sie sind kein Glück, als WS_EX_LAYERED kann nicht verwendet werden, für die Kinder Fenster .

Vielleicht könnten Sie alle Editor Formen verbergen, wenn Ihre Form / Anwendung den Fokus verliert, dass zumindest würde sie davon abhalten, sein auf der anderen Fenstern. Dennoch ist es nicht zufriedenstellend ...

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top