Wenn du normale VCL Komponenten mit nem layered window benutzen willst kannst du das eh total vergessen, die sind einfach unsichtbar. (Aber müßten Input events erhalten). D.h. du müßtest das komplette Fenster in das Bitmap welches du als LayeredWindow verwendest zeichnen.
Am besten wäre es da denke ich gleich komplett auf Komponenten zu verzichten und alles (Mouse Events, etc.) selbst zu machen und dann jeweils das LayeredWindow Bitmap neu zeichnen.
Oder halt 2 Formulare benutzen, ein LayeredWindow für den Rand und ein normales Welches nicht transparent ist und normale Komponenten benutzt in der Mitte... kommt halt drauf an was alles möglich sein soll.
Registriert: So Dez 19, 2004 00:27 Beiträge: 454 Wohnort: Nürnberg
Nee Nee Nee...
ich hab das ganze so, dass meine Komponente die Komponenten auf dem Formular ausließt und dann geskinnt auf das PNG zeichnet...aber ich muss dann ja bei jedem MouseEvent usw. das ganze neu zeichnen...
und da hänge ich im Moment wie ich das am besten mach Das ganze soll so werden dass ich einfach die Komponente aufs Formular zieh und schon ist das ganze geskinnt und sieht gut aus!
Das Formular sollte ja auf jedenfall die ganzen Mouse Events bekommen, also entweder WM abfangen oder MouseMove Event vom Formular anwenden. Dann gucken ob sich ne Komponente an diesem Punkt befindet und die entsprechenden CM_ Botschaften weiterleiten. Es gibt da u.a. eine ControlAtPos() funktion mit der du raus bekommst welche Komponente sich an ner Position befindet.
Das reine neu zeichnen sollte eigentlich nicht das Problem sein, das LayeredWindow müßte dafür schnell genug sein. Was natürlich ein Problem sein könnte ist wenn du bei jeder kleinen änderung das ganze Formular (also auch jede Komponente) neu zeichnen läßt. Das wird dann bei vielen Komponenten oder vielen Updates sehr langsam.
Ich habe ja ein komplettes menü auf Layered window basis programmiert, dabei habe ich das ganze so gelößt das ich mehrere buffer Bitmaps benutze. Für mein Menü hab ich dabei den kompletten Hintergrund und alle Menü Items in der normalen ansicht in zwei Bitmaps gespeichert. Erhält nun ein Menü Item durch ne Maus bewegung den Fokus so brauch ich den Hintergrund und die anderen Menü Items schonmal nicht neu zeichnen da das ganze in den buffer bitmaps drin hängt. Am Ende werden dann einfach Hintergrund, Menü Items und das geändertes Bitmap zusammenkopiert und damit wird das layered window geupdated. Vorteil ist das die Teile die sich nicht geändert haben in den kompletten Buffer Bitmaps drin sind und ich also wirklich nur das neu zeichnen muß was sich geändert hat.
Es gibt auch die Möglichkeit, das Form komplett transparent zu machen (Farbe z.B. clfuchsia, und die Transparentfarbe ebenfalls so setzen.
Dann ist das Form nicht mehr zu sehen. Auf dem Form befindet sich ein TImage (alClient), in das ein png-Bild geladen wird. Das kann verschiedene Transparenzen haben und die sind auch voll wirksam.
Nur mal so als Anregung. Muss natürlich die Unit pngImages mit eingebunden sein.
_________________ Wer ist eigentlich General Failure und was macht der auf meiner Festplatte?
Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.