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 Label über Panel legen... (https://www.delphipraxis.net/102503-label-ueber-panel-legen.html)

bingo72 30. Okt 2007 08:08


Label über Panel legen...
 
Hallo Leute!!

Ich kann es nicht glauben, daß es wirklich keinen Weg gibt ein stinknormales Label über ein Panel zu legen. :wall:
Gleich vorweg...das Panel muß relativ klein gehalten werden, sodaß der Label absichtlich über das Panel ragt (also fällt die Option den Label ins Panel zu kopieren weg!!).

Ich habe gelesen, daß der Grund an dem Handle liegt, welches ein Label nicht hat und somit automatisch im Hintergrund gezeichnet wird, wenn es nicht auf dem Panel selbst liegt!! (Soweit ich es verstanden habe...)

Ich denke, daß mein Fall doch sicher nichts Aussergewöhnliches ist oder?? :gruebel:

Bitte um Tipps die mich weiterbringen!!

LG
Thomas

Deep-Sea 30. Okt 2007 08:10

Re: Label über Panel legen...
 
a) Wieso willst du das Label über das Panel legen? ^^
b) Nimm TStaticText :-D

Phoenix 30. Okt 2007 08:15

Re: Label über Panel legen...
 
Nein, das geht tatsächlich nicht.

Hintergrund: Alles, was von TWinControl abgeleitet ist, ist im Sinne von Windows ein eigenes Fenster. Dazu gehören insbesondere Panels, aber auch Buttons etc. TLabel ist kein TWinControl, und damit auch kein eigenes Fenster.

Ein Fenster reagiert ganz für sich allein auf Nachrichten von Windows und zeichnet sich selber. Liegt ein Fenster auf einem anderen (Button oder Panel auf einem Form), so zeichnet sich dieses darüberliegende Fenster vollkommen unabhängig von dem darunterliegenden. Ein Label zeichnet nur sich selber auf das Fenster, auf dem es liegt.

Ergo: Liegt ein Panel über einem Form mit einem Label, so wird das unten liegende Form (inkl. dem Label) zwangsläufig überzeichnet.

Alternative Lösung: Nimm anstelle des Labels ein weiteres Panel, stelle die Ränder so ein, dass man nicht sieht das es ein Panel ist, lege es nach oben und gebe dem Panel eine Caption. => Home-made Label als TWinControl. Nachteil: Dieses Panel überzeichnet dann logischerweise im überlappenden Bereich den Rahmen des darunterliegenden Panels, welches eigentlich oben sein sollte...

bingo72 30. Okt 2007 08:15

Re: Label über Panel legen...
 
Hallo!!

ad A) Hintergrund ist folgender....das Panel dient als Vorschau für den Punkt 'Seite einrichten'...je nachdem welche Breite bzw. Höhe der User eingibt, verändere ich die Maße des Panels.
Sollte der User ungültige Werte eingeben, soll ein 'transparenter Label' erscheinen, der über dem Panel liegt und ihn auf 'ungültige Eingaben' hinweisen.

ad B) StaticText hab ich auch schon probiert, nur kann man den Hintergrund des Labels nicht transparent machen. Wenn Text über das Panel hinausgeht, hat Label in diesem Fall eine Hintergrundfarbe, was nicht schön aussieht!!

SirThornberry 30. Okt 2007 08:18

Re: Label über Panel legen...
 
tja, das ist eben der kompromiss. Entweder Transparenz oder ein eigenständiges Fenster im Sinne von Windows. Aber vielleicht ist auch deine Panellösung ungünstig. Warum überhaupt ein Panel? Warum zeichnest du es nicht selbst auf die Canvas statt ein panel nur zur Anzeige der Größe zu verwenden?

bingo72 30. Okt 2007 08:20

Re: Label über Panel legen...
 
Guter Ansatz!! Dem werd ich mal nachgehen (müssen!!), weil ich so wirklich nicht weiterkomme...ausserdem eine gute Übung im Canvas-Zeichnen!! :thumb:

Deep-Sea 30. Okt 2007 08:20

Re: Label über Panel legen...
 
Zitat:

Zitat von bingo72
Hallo!!

ad A) Hintergrund ist folgender....das Panel dient als Vorschau für den Punkt 'Seite einrichten'...je nachdem welche Breite bzw. Höhe der User eingibt, verändere ich die Maße des Panels.
Sollte der User ungültige Werte eingeben, soll ein 'transparenter Label' erscheinen, der über dem Panel liegt und ihn auf 'ungültige Eingaben' hinweisen.

ad B) StaticText hab ich auch schon probiert, nur kann man den Hintergrund des Labels nicht transparent machen. Wenn Text über das Panel hinausgeht, hat Label in diesem Fall eine Hintergrundfarbe, was nicht schön aussieht!!

Wäre da eine Dialogbox nicht einfacher? :-D ...

Also wird das Panel noch groß genug, als das du den Text darauf darstellen kannst? Dann könntest du ggf. doch das Label auf das Panel setzen ...

bingo72 30. Okt 2007 08:30

Re: Label über Panel legen...
 
Löse es über normale Messageboxen!! Problem gelöst... :)

Deep-Sea 30. Okt 2007 08:35

Re: Label über Panel legen...
 
Zitat:

Zitat von bingo72
Löse es über normale Messageboxen!! Problem gelöst... :)

Sag ich doch :stupid:


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:27 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