Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Delphi 2007: SheetOfGlass (https://www.delphipraxis.net/89931-delphi-2007-sheetofglass.html)

Rakshasa 8. Apr 2007 21:22


Delphi 2007: SheetOfGlass
 
Hallo Leute,

mit der o.g. Eigenschaft kann man ja eine Form nur in Aero-Glass anzeigen lassen. Das Problem dabei: Alle Komponenten (Panel, TLabel, Komponenten von 3. Herstellern) auf einer solchen Form "spinnen" rum:

- Labels werden durchsichtig, d.h. anstelle des Labels sehe ich ein rechteckiges Stück Aeroglass
- Panels werden komplett transparent, bis auf den Rand
- Abgeleitete Panels verlieren ihre Farbe (werden weiß). Auch hierdrauf kann ich keine TLabels positionieren, ohne dass diese teilweise verschwinden

Die Delphi-Hilfe sagt zu TGlassFrame leider nur:

"Das ist GlassFrame, ein Mitglied der Klasse TCustomFormHelper." Toll.


Hat jemand eine Idee, wie ich GlassFrame bzw. SheetofGlass überhaupt irgendwie sinnvoll verwenden kann?? :wall:

Daniel 8. Apr 2007 22:28

Re: Delphi 2007: SheetOfGlass
 
Ja, die Idee habe ich:
Setze "DoubleBuffered" von allen beteiligten Komponenten (und das Form selbst gehört dazu!) auf TRUE. Der DWM kann diese Glas-Geschichten mit allen GUI-Elementen nur dann richtig darstellen, wenn das Buffering unterstützt wird. Es eignet sich auch nicht jede Komponente, um direkt auf das Glas gelegt zu werden.

Rakshasa 8. Apr 2007 22:40

Re: Delphi 2007: SheetOfGlass
 
Zitat:

Zitat von Daniel
Ja, die Idee habe ich:
Setze "DoubleBuffered" von allen beteiligten Komponenten (und das Form selbst gehört dazu!) auf TRUE. Der DWM kann diese Glas-Geschichten mit allen GUI-Elementen nur dann richtig darstellen, wenn das Buffering unterstützt wird. Es eignet sich auch nicht jede Komponente, um direkt auf das Glas gelegt zu werden.

Hallo,

DoubleBuffered hat super geholfen, danke!!
Beim TLabel existiert diese Eigenschaft zwar nicht, das Label wird trotzdem richtig dargestellt, es reicht hier bei der Form das "DoubleBuffered" auf TRUE zu setzen.

3_of_8 8. Apr 2007 22:51

Re: Delphi 2007: SheetOfGlass
 
Ein TLabel ist ein TGraphicControl und ein TGraphicControl zeichnet auf sein Parent, weil es gar kein eigenes Handle hat. Daher reicht es, DoubleBuffered beim Parent auf True zu setzen.

Rakshasa 10. Apr 2007 17:57

Re: Delphi 2007: SheetOfGlass
 
Danke für eure Hinweise, ich habe aber noch eine Frage:

Kann man mit Delphi den Effekt erreichen, der z.B. im Fenster "Minianwendung hinzufügen" von Vista zu sehen ist: Die Labels (?) haben alle einen leichten, weißen Hintergrund. Dies gibt dann ja einen besseren Kontrast, als wenn ich nur - wie mit Delphi - ein Label auf der Form liegen habe.
Wie kann ich einen solchen Effekt mit Delphi-Bordmitteln erreichen?

Daniel 10. Apr 2007 18:12

Re: Delphi 2007: SheetOfGlass
 
Ja, auch das geht über die API des DWM. Delphi 2007 bringt die erforderlichen API-Übersetzungen gleich mit. In meinem Delphi-Video, welches sich nun endlich in der Produktion befindet, wird das auch gezeigt.

Rakshasa 10. Apr 2007 18:24

Re: Delphi 2007: SheetOfGlass
 
Zitat:

Zitat von Daniel
Ja, auch das geht über die API des DWM. Delphi 2007 bringt die erforderlichen API-Übersetzungen gleich mit. In meinem Delphi-Video, welches sich nun endlich in der Produktion befindet, wird das auch gezeigt.

Wie heißen denn die entsprechenden Befehle? :)

pwimmer 14. Apr 2007 22:25

Re: Delphi 2007: SheetOfGlass
 
Würde mich auch sehr interessieren, wie Funktionen dafüre heißen!

Daniel 14. Apr 2007 22:53

Re: Delphi 2007: SheetOfGlass
 
Liste der Anhänge anzeigen (Anzahl: 2)
Ich werde die Demos zum Video morgen auch mit veröffentlichen. Anbei ein schneller Copy & Paste - Hack. ;-)

Dabei geht's wirklich nur um das Prinzip - auf Ressourcen-Schutz und dgl. habe ich großzügig verzichtet.

pwimmer 15. Apr 2007 19:38

Re: Delphi 2007: SheetOfGlass
 
Vielen Dank für den Code. Funktioniert super!


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:06 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz