Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - Komponente sichtbar auf transparenter Form?


galagher - Mo 18.07.11 18:22
Titel: Komponente sichtbar auf transparenter Form?
Hallo!

Wie kann man eine Komponente auf einer transparenten Form sehen? Ich möchte nur eine Komponente und sonst nichts sehen. Diese Komponente ändert aber zur Laufzeit laufend ihre Abmessungen, also Width und Height, darauf habe ich aber keinen Zugriff, da es sich um eine Art animierte Grafik handelt.

Konkret: Es ist TDirectSS, ein grafischer Mund, der spricht.

Ich habe das Problem, dass man mit einem eingeschränkten User-Konto keinen Vollzugriff auf diese Komponente hat, also keine deutsche Sprache. http://www.delphi-forum.de/forum_Windows+API_10.html
Mein Plan, der auch klappt: Ich schreibe ein eigenes Programm mit TDirectSS, starte es unter meinenm eigentlichen Programm mit Adminrechten (siehe http://www.delphi-forum.de/topic_Ausfuehren+alsDialog_56359,0.html) und dann läuft es.

Aber ich will eben nicht die Form anzeigen, nur den Mund!


jaenicke - Mo 18.07.11 19:00

Wie wäre es mit TransparentColor mit TransparentColorValue?


galagher - Mo 18.07.11 19:38

user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
Wie wäre es mit TransparentColor mit TransparentColorValue?

Damit wird nur eine der Farben auf der Form transparent, nicht aber die Form selbst. Und mit Alphablend wird alles transparent!

Die Komponente TDirectSS selbst ist ein transparentes Quadrat, nur der Mund ist farbig dargestellt. Aber die Transparenz bezieht sich eben nur auf die dahinterliegende Form, die "durchscheint". Also muss ich irgendwie die Form transparent bekommen...

//Edit: Geht doch mit TransparentColor - bin am Testen!
Geht nur mit "echten" Farben wie clRed, nicht aber zB. mit clBtnColor.


galagher - Mo 18.07.11 21:18

Meine Anwendung startet also eine andere Anwendung, die dann natürlich auch den Focus hat. Ich möchte, dass die ursprüngliche Anwendung unmittelbar nach dem Aufruf des anderen Programms wieder die aktive Anwendung wird.
BringToFront, SetFocus & Co machen das Programm nicht zur aktiven Anwendung.

Wie mache ich das?