Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Bug? Transparentes Form mit Parent geht nicht (https://www.delphipraxis.net/82264-bug-transparentes-form-mit-parent-geht-nicht.html)

Henryk 9. Dez 2006 20:37


Bug? Transparentes Form mit Parent geht nicht
 
Ich dreh hier noch durch... :wall:

Geht folgendes nur bei mir nicht?

- Applikation mit Hauptfenster und ClientArea bauen.
- Ein 2. Form erstellen
- Color := clBtnFace
- TransparentColorValue := clWhite
- TransparentColor := True
- Mittig ein Panel auf das Form und Color := clWhite

Nun sollte man ein Form haben, mit einem "Loch" in der Mitte, da das Panel ja die Transparenzfarbe hat.

Jetzt ruf ich in meinem MainForm auf irgendein Button-Event die folgenden Zeilen auf:

Form1 := TForm1.Create(self);
Form1.Visible := True;

Juchu, mein Form mit dem Loch erscheint.

Ich will aber, dass sich mein Form nur im Client-Bereich meines Hauptfensters bewegen lässt:

Form1 := TForm1.Create(self);
Form1.Parent := self;
Form1.Visible := True;

Die Transparenz ist weg.

Wieso das denn?

Hab schon diverse andere Sachen probiert:

Form1 := TForm1.CreateParented(Self.WindowHandle);
Form1.Visible := True;

oder

Form1 := TForm1.Create(self);
Form1.Visible := True;
Form1.Parent := self;

Geht alles nicht. Was ist das wieder für ne Delphi-Macke? Wieso geht mir das immer so? Das Delphi Zeugs geht flüssig von der Hand. Aber dann kommen so sinnlose Kleinigkeiten und ... :wall:

Henryk

Namenloser 9. Dez 2006 20:46

Re: Bug? Transparentes Form mit Parent geht nicht
 
das ist (denk ich) bei jedem so. da kann Delphi nix für, das liegt an Windoof...

Hagbart 9. Dez 2006 21:06

Re: Bug? Transparentes Form mit Parent geht nicht
 
Könntest du bitte mal den Quellcode reinstellen, dann kann man das Problem besser erkennen.

Aber ich glaube ich weiss was du meinst, ich habe eben eine Form erstellt mit einem Button drauf, wenn man auf den klickt öffnet sich die zweite Form wo in der mitte ein Panel ist, das Panel ist weiss und ich habe Transparent Color auf Weiss und Transparent ist true, wenn ich jetzt die zweite Form über die erste Lege sieht es so aus als ob das Loch weg wäre.
Das stimmt aber nicht, man sieht die erste Form durch das Panel durch, also ist die Transparenz noch da, du kannst der ersten Form ja mal eine andere Farbe als der zweiten geben, ich glaube dann wirst du sehen was ich meine.

Henryk 9. Dez 2006 21:11

Re: Bug? Transparentes Form mit Parent geht nicht
 
Hallo Hagbart,

Beispiel kann nich morgen geben. Hab heut die Schn*** voll.

Du bist aber schon auf dem richtigen Weg. Ich hab im MainForm noch ein Hintergrundbild, also seh ich genau, ob das "Loch" da ist oder nicht. Es ist erst ganz normal da.

Nur eben nicht mehr, sowie ich das Parent des Fensters setze. Dann ist die Transparenz weg...


Henryk

Henryk 9. Dez 2006 21:17

Re: Bug? Transparentes Form mit Parent geht nicht
 
Achso, ich hab XP und ne Applikation mit einem XPManifest. Das XP-Manifest hatte schon ein paar lustige Effekte (Schriftfarbe von Radiobutton-Labels wird ignoriert, Farbsprünge beim Scrollen eines ScrollWindow etc.)

Vielleicht isses hier auch wieder schuld?

Hab mal die MSDN zu Layered Windows quergelesen. Da stand erstmal nix, das ein Child-Window keine Transparenz haben kann.

So long...

Hagbart 9. Dez 2006 21:44

Re: Bug? Transparentes Form mit Parent geht nicht
 
Das mit dem XPMainfest könnte durchaus sein, ich habe es nähmlich mit Delphi7 ausprobiert und Manifest nicht miteingebunden

SirThornberry 9. Dez 2006 22:07

Re: Bug? Transparentes Form mit Parent geht nicht
 
dsa hat mit Manifest etc. nix zu tun. LayerAttributes können nur für TopLevelfenster gesetzt werden (siehe MSDN)

Henryk 9. Dez 2006 23:14

Re: Bug? Transparentes Form mit Parent geht nicht
 
Hallo Sir Thornberry, :wink:

das ist doch mal ne Aussage. Warum schreiben die Herren von Microsoft das aber nicht in die Hilfe zu SetLayeredWindowAttributes. Nee, nee ...

Aber gut zu wissen, da brauch ich hier nicht weiter rumzukrampfen.

Wollte in meiner Anwendung dem Nutzer erlauben, eigene Notizen auf dem Clientbereich zu hinterlegen und hatte dafür ein Fenster mit nem ListView + ner temporär eingeblendeten Eingabezeile vorgesehen. Das ganze sollte natürlich nicht das Hintergrundbild überdecken, sondern nur die Einträge sichtbar sein. Mit ner transparenten Form sah das so aus, als ob man den Effekt mit ein paar Einstellungen erreichen könnte, ohne sich mit CustomDraws etc. rumzuärgern.

Naja, muss Plan B her...

Danke

Henryk


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:38 Uhr.

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