Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - Label in Label und Text nicht oben


kandesbunzler - Fr 14.03.08 15:51
Titel: Label in Label und Text nicht oben
Hallo allerseits,

folgendes Anordnungsproblem von Komponenten habe ich:

Da rote Label 2 ist innerhalb des grünen Label 1 gezeichnet
Nun möchte ich einen Text über beide Labels legen.
Problem: Der Text wird immer vom roten Label 2 überlagert
und auch die Änderung der Anordnungsreihenfolge bringt nichts.

Danke und auf bald ...
kandesbunzler.


Moderiert von user profile iconGausi: Topic aus Multimedia / Grafik verschoben am Fr 14.03.2008 um 15:22


Yogu - Fr 14.03.08 16:02

Hallo user profile iconkandesbunzler,

blende doch die beiden Labels mit der Eigenschaft Visible oder den Funktionen Show; und Hide; ein und aus. Dann sind sie gar nicht mehr zu sehen, d.h. es kann auch nichts überlagern.

Grüße,
Yogu


kandesbunzler - Fr 14.03.08 16:18

Hallo Yogu,

hmmm, theoretisch ja - praktisch geht das leider nicht. Hier ein evtl. besseres Beispiel: Thermometer mit grünem Bereich auf rotem Hintergrund. Die Skalatext (schwarz) soll über grün und rot liegen und diese Farben sollen ja weiterhin sichtbar bleiben. Ergänzung: Auch im Skalentexthintergrundbereich sollen die Farben sichtbar sein (quasi transparent = true).

Auf bald ...
kandesbunzler.


Agawain - Fr 14.03.08 16:22

hi

stetz doch bei beiden Labeln den Text auf '' und mach ein 3. Label mit dem Skalentext


kandesbunzler - Fr 14.03.08 16:31

Hallo,

bei Labels kann ich den Hintergrund nicht auf transparent setzen. Demzufolge bleibt dieser Bereich von Label3 eingefärbt und überdeckt grün resp. rot der darunterliegenden Labels ...

Auf bald ...
kandesbunzler.


fuba - Fr 14.03.08 16:32
Titel: Re: Label in Label und Text nicht oben
user profile iconkandesbunzler hat folgendes geschrieben:
Da rote Label 2 ist innerhalb des grünen Label 1 gezeichnet
Nun möchte ich einen Text über beide Labels legen.
Problem: Der Text wird immer vom roten Label 2 überlagert
und auch die Änderung der Anordnungsreihenfolge bringt nichts.


Versteh ich irgendwie nicht...

Label2(rot) in "im" Label1(grün) oder wie?
und Label3(text) soll darin sichtbar sein oder wie?

Moderiert von user profile iconNarses: Zitat gekürzt


kandesbunzler - Fr 14.03.08 17:20

Hallo,

ich habe mal einen Screenshot angehangen. Evtl. hilft das besser.

Auf bald ...
kandesbunzler.


Agawain - Fr 14.03.08 17:28

LOL

na des ist natürlich klar....schreibst hier was von Label, nimmst aber Panel.

Also machs mit Label, da geht das nämlich


kandesbunzler - Fr 14.03.08 17:40

... aber "Label4 von Panel 2 überlagert" wird doch von Panel 2 überlagert ...
Genau dieses wollte ich ja vermeiden. Label 4 soll nach ganz oben.
Nun bin ich ratlos.

Auf bald ...
kandesbunzler.


Yogu - Fr 14.03.08 17:51

Da muss ich etwas weiter zurückgreifen...

Generell gibt es zwei Typen von Controls. Einmal die WinControls und dann noch die GraphicControls. WinControls werden von Windows verwaltet, können den Fokus erhalten, und sind einfach richtige Controls von Fenstern. Sie können untereinander beliebig nach hinten / vorne gesetzt werden. GraphicControls dagegen werden von Delphi verwaltet. Sie werden einfach nur auf das Parent-WinControl gezeichnet. Untereinander können diese auch hin- und hergeschubst werden, aber sie werden ja auf den Parent gezeichnet und sind somit eigentlich der Parent selber. Und zwischen Parent und Parent können ja wohl keine anderen Controls sein ;)

Was ich damit sagen will: Das Label muss immer hinten bleiben. Deine Panels sind WinControls und werden deshalb immer vor dem Label bleiben.

Lösungsvorschlag: Nimm TStaticText statt Labels. StaticTexte sind WinControls.


Agawain - Fr 14.03.08 17:56

guckst du hier


kandesbunzler - Fr 14.03.08 18:04

Hallo Yogu,

vielen Dank für Deine ausführlichen Hintergrundinformationen.
Ich habe das mal eingefügt und wieder als Screenshot angehangen.
Wenn mir noch einer sagen kann, wie ich das türkis von StaticText1
wegbekomme ...

Hinweis: Transparenz habe ich bereits auf true gesetzt.

Auf bald ...
kandesbunzler.


Yogu - Fr 14.03.08 18:24

Setze die Eigenschaft Color auf eine andere Farbe. :idea:

Wenn du wirklich Transparenz haben willst, geht das mit einem StaticText nicht. Da musst du dann noch wieder auf Labels umsteigen - und am Besten nur Labels verwenden. Dann kannst du die auch schön übereinander legen, wie du willst.