Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi 11.2: Schriftfarbe bei einem TPanel während der Laufzeit ändern (https://www.delphipraxis.net/214244-delphi-11-2-schriftfarbe-bei-einem-tpanel-waehrend-der-laufzeit-aendern.html)

heindaddel 10. Dez 2023 14:09

Delphi 11.2: Schriftfarbe bei einem TPanel während der Laufzeit ändern
 
Hallo, ich möchte bei einem TPanel während der Laufzeit die Textfarbe ändern. Beispiel: Ich gebe berechnete Werte in dem TPanel 'paZahlAusgeben' aus. Ist die Berechnung nicht korrekt, soll in dem TPanel 'paZahlAusgeben' das Wort 'Fehler' in rot erscheinen. Bei der folgenden Zuweisung 'paZahlAusgeben.Font.Color := clred;' erscheint das Wort 'Fehler' NICHT in rot. Hast Du einen Tip für mich, wie ich dieses Problem beseitigen kann? LG Hein

mmw 10. Dez 2023 14:55

AW: Delphi 11.2: Schriftfarbe bei einem TPanel während der Laufzeit ändern
 
Hallo,
bei der Eigenschaft 'StyleElements' 'seFont' abwählen

sollte helfen.

Gruß

jaenicke 10. Dez 2023 16:13

AW: Delphi 11.2: Schriftfarbe bei einem TPanel während der Laufzeit ändern
 
Ein Panel ist dafür schlicht die falsche Komponente. Man bekommt es zwar hin, aber sinnvoller ist dafür z.B. TStaticText oder man legt ein TLabel auf ein TPanel.

heindaddel 11. Dez 2023 17:52

AW: Delphi 11.2: Schriftfarbe bei einem TPanel während der Laufzeit ändern
 
Hallo, ich habe das Problem gefunden. Es liegt am Style 'Dark Mode' von Delphi. Im Style 'Window' von Delphi funktioniert alles normal. LG Hein

Benmik 12. Dez 2023 10:30

AW: Delphi 11.2: Schriftfarbe bei einem TPanel während der Laufzeit ändern
 
Zitat:

Zitat von jaenicke (Beitrag 1530649)
Ein Panel ist dafür schlicht die falsche Komponente. Man bekommt es zwar hin, aber sinnvoller ist dafür z.B. TStaticText oder man legt ein TLabel auf ein TPanel.

Diese Ansicht erstaunt mich und ich kann sie nicht teilen. Warum sollte ein TPanel keinen Text anzeigen? Und ein TLabel darüber zu legen, das erscheint mir absurd.

Uwe Raabe 12. Dez 2023 11:33

AW: Delphi 11.2: Schriftfarbe bei einem TPanel während der Laufzeit ändern
 
Zitat:

Zitat von Benmik (Beitrag 1530707)
Diese Ansicht erstaunt mich und ich kann sie nicht teilen.

Der Vorteil von Ansichten ist ja gerade, dass jeder eine andere haben kann.

Ein Nachteil bei der Verwendung eines Panels zum Anzeigen eines Textes mit vom Standard abweichender Farbe (wie in diesem Fall) ist, dass alle Childs in dem Panel den geänderten Font erben solange ihr ParentFont = True ist. Es ist also genau die aktuelle Frage, die gegen eine Verwendung eines Panels zur Textausgabe spricht. Man kann jetzt argumentieren, dass man eben keine Childs in dem Panel hat - aber auch nie haben wird?

himitsu 12. Dez 2023 12:07

AW: Delphi 11.2: Schriftfarbe bei einem TPanel während der Laufzeit ändern
 
Ich würde mich ja freuen, wenn die Caption nicht mehr standardmäßig gefüllt wird, bzw. wenn ShowCaption per Standard auf False stünde.
Fast nie wird die Caption von irgendwem benutzt, da Panel ja eigentlich keine Textanzeigekomponente, sondern eine Sammelkomponente für andere Komponenten ist.
Für Text nimmt man TLabel oder TStaticText (oder auch mal ein TEdit ohne Rahmen, für selektierbaren/kopierbaren Text, siehe die Dateieigenschaften im Explorer)

freimatz 12. Dez 2023 12:49

AW: Delphi 11.2: Schriftfarbe bei einem TPanel während der Laufzeit ändern
 
Zitat:

Zitat von Uwe Raabe (Beitrag 1530713)
Zitat:

Zitat von Benmik (Beitrag 1530707)
Diese Ansicht erstaunt mich und ich kann sie nicht teilen.

Der Vorteil von Ansichten ist ja gerade, dass jeder eine andere haben kann.

Meine Ansicht ist, dass man es in der Regel einfacher hat und Probleme vermeidet, wenn man Dinge dazu verwendet wofür sie auch gemacht sind. :-D
Dazu gibt es eine Doku vom Hersteller (z.B. https://docwiki.embarcadero.com/Libr...xtCtrls.TPanel)

dummzeuch 12. Dez 2023 12:49

AW: Delphi 11.2: Schriftfarbe bei einem TPanel während der Laufzeit ändern
 
Zitat:

Zitat von himitsu (Beitrag 1530715)
Ich würde mich ja freuen, wenn die Caption nicht mehr standardmäßig gefüllt wird, bzw. wenn ShowCaption per Standard auf False stünde.

Ich könnte da ein Tool empfehlen, das u.a. dies erlaubt. Soll ich?

OK: GExperts, Rename Components Expert. Für TPanel unter Other Properties Caption='' setzen.
Das gleiche geht z.B. auch mit TEdit, da setze ich dann Text=''. Oder TLabel, mit Caption='', so dass man die direkt in diesem Dialog eingeben kann.

Diese Funktion ist eine der ersten, die ich vor vielen Jahren zu GExperts beigetragen habe.

Edit: Es gibt auch noch den Set Component Properties Expert: Darüber geht es vermutlich auch, aber der Rename Components Expert hat den Vorteil, dass man dort auch gleich den neuen Wert eingeben kann, wenn man das will.

himitsu 12. Dez 2023 13:35

AW: Delphi 11.2: Schriftfarbe bei einem TPanel während der Laufzeit ändern
 
Wenn von Haus aus bereits leer, dann würde wohl niemand mehr auf die Idee kommen diesen Caption benutzen zu wollen. :stupid:

dummzeuch 12. Dez 2023 15:23

AW: Delphi 11.2: Schriftfarbe bei einem TPanel während der Laufzeit ändern
 
Zitat:

Zitat von himitsu (Beitrag 1530731)
Wenn von Haus aus bereits leer, dann würde wohl niemand mehr auf die Idee kommen diesen Caption benutzen zu wollen. :stupid:

Doch, ich.
Kommt immer drauf an, wozu.
Anwendungsfall: Ein Programm gibt eine Datei als Tabelle aus. Solange noch keine Datei geladen ist, zeigt man das Panel mit dem Text "Datei hier draufziehen" an. Zieht der User dann die Datei auf das Panel, wird ein Child-Control des Panels mit der Ausgabe gefüllt und mit align=alClient angezeigt.
Das ist schlicht einfacher als nochmal ein zusätzliches Label draufzupacken, das dann hinterher noch mit dem Alignment kollidiert.

himitsu 12. Dez 2023 15:53

AW: Delphi 11.2: Schriftfarbe bei einem TPanel während der Laufzeit ändern
 
Du kannst es ja immernoch so machen.
Und da du dann eh was Sinnvolles eintragen wirst, wird es dich nicht stören, wenn es vorher leer war. :angle:

Keine Sorge, man kann mehrere Komponenten auf alClient stellen.
Labels sind eh immer hinten (da sie sich auf den Canvas des Parents laden.
Und schon braucht man nur noch das Visible der Anzeigekomponente (ChildControl) umstellen.

dummzeuch 12. Dez 2023 16:12

AW: Delphi 11.2: Schriftfarbe bei einem TPanel während der Laufzeit ändern
 
Zitat:

Zitat von himitsu (Beitrag 1530737)
Du kannst es ja immernoch so machen.
Und da du dann eh was Sinnvolles eintragen wirst, wird es dich nicht stören, wenn es vorher leer war. :angle:

Ich bezog mich auf die pauschale Aussage "Wenn von Haus aus bereits leer, dann würde wohl niemand mehr auf die Idee kommen diesen Caption benutzen zu wollen." und habe ein Beispiel gegeben, wann ich auf genau diese Idee komme.

himitsu 12. Dez 2023 16:18

AW: Delphi 11.2: Schriftfarbe bei einem TPanel während der Laufzeit ändern
 
Hi Nobody :cheer:

Benmik 12. Dez 2023 21:11

AW: Delphi 11.2: Schriftfarbe bei einem TPanel während der Laufzeit ändern
 
Ich verwende ein TPanel routinemäßig zum reinen Anzeigen von Text, weil man durch die Bevel-Eigenschaft den Rand so gut als Struktur hervorheben und die Aufmerksamkeit dahin lenken kann. Vor allem praktisch finde ich das, wenn man so eine ganze Reihe von Informationen in einer zusammenhängenden Struktur präsentieren kann. Wie ich an zahllosen anderen Programmen auch in anderen Sprachen sehe, bin ich damit alles andere als allein.
Seit einiger Zeit kann man zwar auch einem Label eine Randstruktur mitgeben. Ich meine auch, dass die Dreidimensionalität der Bevel früher deutlich ausgeprägt gewesen wäre, oder irre ich mich da? Auf jeden Fall bin ich zu faul, um mich umzugewöhnen, sehe auch nicht so recht einen Grund dafür. Und tatsächlich: Warum hat ein Panel denn dann eine Caption?!
Und dass der hiesige erlauchte Kreis sich penibel an alles hält, was Emba so vorsieht, das wäre mir aber sowas von neu.

jaenicke 12. Dez 2023 21:21

AW: Delphi 11.2: Schriftfarbe bei einem TPanel während der Laufzeit ändern
 
Zitat:

Zitat von Benmik (Beitrag 1530754)
Ich verwende ein TPanel routinemäßig zum reinen Anzeigen von Text, weil man durch die Bevel-Eigenschaft den Rand so gut als Struktur hervorheben und die Aufmerksamkeit dahin lenken kann.

Was genau der Sinn eines TStaticText ist, nur eben ohne die Nachteile einer TPanel-Komponente...

Benmik 13. Dez 2023 00:15

AW: Delphi 11.2: Schriftfarbe bei einem TPanel während der Laufzeit ändern
 
Zitat:

Zitat von jaenicke (Beitrag 1530755)
Was genau der Sinn eines TStaticText ist, nur eben ohne die Nachteile einer TPanel-Komponente...

... bei dem der Text aber nicht vertikal zentriert ist, und welche praktischen Nachteile eines TPanel sind mir in all den Jahren entgangen?

Uwe Raabe 13. Dez 2023 07:31

AW: Delphi 11.2: Schriftfarbe bei einem TPanel während der Laufzeit ändern
 
Zitat:

Zitat von Benmik (Beitrag 1530756)
welche praktischen Nachteile

Ich denke, dass ist hier Key: Praktisch meint immer den persönlichen Umgang mit etwas, bedeutet also für jeden etwas anderes und ist somit in höchstem Maße subjektiv.

Es werden hier ja auch nur persönliche und oft eben auch subjektive Meinungen geäußert. Niemand muss das als Arbeitsanweisung umsetzen.

haentschman 13. Dez 2023 07:56

AW: Delphi 11.2: Schriftfarbe bei einem TPanel während der Laufzeit ändern
 
[meine Meinung]
Ich muß auch immer das "Caption" entfernen. Aber das stört mich nicht. :wink:

Viel Besser wäre es, wenn die IDE mal die Properties nach CTRL-C dort einordnen würde, wo sie hingehören und nicht die "Struktur" zerstören. (z.B. immer private oder strict private...was anderes kann er ja nicht wissen)
Delphi-Quellcode:
strict private
  FBlubb: Integer;
strict protected
  FBla: Boolean;
public

// neue Property
strict private
  FBlubb: Integer;
strict protected
  FBla: Boolean;
public
  property Test: Boolean read FTest write FTest

// nach CTRL-C
strict private
  FBlubb: Integer;
strict
private
  FTest: Boolean; protected
  FBla: Boolean;
public
  property Test: Boolean read FTest write FTest
...das nervt. :roll:

:zwinker:
[/meine Meinung]

jaenicke 13. Dez 2023 08:48

AW: Delphi 11.2: Schriftfarbe bei einem TPanel während der Laufzeit ändern
 
Es kann ja jeder die Komponente wählen, die er oder sie möchte. Dabei werden oft auch Komponenten verwenden, die nicht unbedingt für den Zweck gedacht waren. Das ist ja auch in Ordnung.

Das ändert aber nichts daran, dass bestimmte Komponenten für bestimmte Zwecke entworfen wurden, eben z.B. TStaticText zur Textanzeige, auch zur Beschriftung von Eingabefeldern, mit definierten Rändern und Fokussierung z.B. eines zu der Beschriftung gehörenden Eingabefelds.

Dass dabei oft die vertikale Zentrierung vergessen wurde (schon in der Windows API bei mehrzeiligem DrawText, für den sie zu faul waren DT_VCENTER zu implementieren), ist sicherlich richtig, wird aber auch oft gar nicht benötigt. Wenn man es benötigt, kann man natürlich TPanel verwenden, wenn man wiederum nicht einfach so mit Styles und Textfarben arbeiten können möchte und auch die Fokussierung nicht benötigt. Will man das, ist es einfacher, wenn man einfach ein TStaticText auf ein TPanel oder TGridPanel (mit 1 Zeile und 1 Spalte) legt.


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