Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   FastReport und Font-Color (https://www.delphipraxis.net/214168-fastreport-und-font-color.html)

harfes 27. Nov 2023 14:33

FastReport und Font-Color
 
Ich muss einen (statischen) Text in einer bestimmten Farbe anzeigen. Als Vorgabe habe ich einen HEX-Code #0073A5 - wenn ich diesen nun für ein TfrxMemoView in den Bereich Font -> Color eingebe (als $0073A5), dann macht mir FastReport daraus $000073A5 und zeigt eine völlig andere Farbe an. Eigentlich kenne ich das ja so, das #0073A5 eingegeben wird, aber da meckert FastReport, das sei kein Integer-Wert.
Da ich weder in der Internetsuche noch bei FastReport etwas dazu finden konnte, also hier die Frage: was mache ich falsch? Oder: was muss da überhaupt korrekt eingegeben werden?

Hartmut

himitsu 27. Nov 2023 14:50

AW: FastReport und Font-Color
 
# ist auch kein Wert für einen "Integer" :stupid:



HTML-Color?

RGB vs BGR :zwinker:
bzw. big-endian vs. little-endian (wenn man nur die 3 Bytes der Farben betrachtet)
https://htmlcolorcodes.com/#color-codes
https://docwiki.embarcadero.com/Libr...r#Beschreibung
https://learn.microsoft.com/de-de/wi...uide/vis-color

Ein Integer $112233 bzw $00112233 (oder 0x00112233)
beedeutet $33 $22 $11 $00 im Speicher


also $A57300

harfes 27. Nov 2023 15:04

AW: FastReport und Font-Color
 
Der HEX-Code stammt aus einer RGB-Angabe: 0/115/165. Wenn ich das an verschiedenen Stellen - wo es möglich ist - direkt eingebe, kommt auch die korrekte Farbe dabei raus. Aber offensichtlich will FastReport keinen HEX- sondern einen Integer-Wert. Es stellt sich also die Frage, wie bekomme ich den?

Hartmut

himitsu 27. Nov 2023 15:14

AW: FastReport und Font-Color
 
Es kommt auf die Art der Umwandlung an, aber

TColor = Integer (nicht wirklich, aber mit selben Wertebereich)

IntToStr nimmt Dezimalzahlen, aber auch Hexadezimal (mit $ davor)

StringToColor nimmt bestimmte Zahlnamen, aber auch alles, was IntToStr nimmt.

Und Fastreport wird bestimmt TColor verwenden (also den Standard-Property-Editor des TColor, mit StringToColor)



Zitat:

Es stellt sich also die Frage, wie bekomme ich den?
[win] calc [enter]
auf "Progammierer" umstellen
und ... na siehst'e dann schon

harfes 27. Nov 2023 15:16

AW: FastReport und Font-Color
 
@himitsu: Ok, einen Converter habe ich nicht gefunden - aber zumindest den Weg zum Umrechnen von RGB in Integer:

RGB = R + G * 256 + B * 256*256

R=0
G=115=>29440
B=165=>10813440

-> Integer-Wert=>10842880

Jetzt passt Die Farbe!

Trotzdem peinlich, dass es bei FastReport keinen Hinweis dazu gibt...

Hartmut

himitsu 27. Nov 2023 15:22

AW: FastReport und Font-Color
 
TColor ist nichts vom FastReport ... das ist überall im Delphi so.
Auch im Quellcode, wobei der Quellcode in aktuellen Delphis nun auch Binär kann.


PS: siehe mein [Edit] oben in der #4

mytbo 27. Nov 2023 16:22

AW: FastReport und Font-Color
 
Zitat:

Zitat von harfes (Beitrag 1530131)
@himitsu: Ok, einen Converter habe ich nicht gefunden - aber zumindest den Weg zum Umrechnen von RGB in Integer

ShowMessage(Winapi.Windows.RGB(0, 115, 165).ToString);

Bis bald...
Thomas

harfes 27. Nov 2023 16:25

AW: FastReport und Font-Color
 
@himitsu: Dein Edit ist seeehr interessant - hab' ich vorher auch noch nicht gesehen...

@mytbo: auch interessant - aber da ich das nicht programmieren möchte, sondern nur den Wert nutzen will, könnte es aber für andere interessant sein. Danke.

Hartmut

mytbo 27. Nov 2023 16:44

AW: FastReport und Font-Color
 
Zitat:

Zitat von harfes (Beitrag 1530137)
@mytbo: auch interessant - aber da ich das nicht programmieren möchte, sondern nur den Wert nutzen will, könnte es aber für andere interessant sein. Danke.

Ich verstehe dein Problem nicht. Im Objektinspektor des Designers in das Edit einer TColor Eigenschaft doppelt klicken und den Farbendialog benutzen. Hier kann die Farbe ausgewählt oder ein RGB Wert eingegeben werden.

Bis bald...
Thomas

himitsu 27. Nov 2023 17:27

AW: FastReport und Font-Color
 
Kommt auch auf den Designer drauf an.
z.B. der Runtime-Designer (der in der eigenen EXE) des FastReport ist nicht der Selbe, wie der in der IDE.

mytbo 27. Nov 2023 18:03

AW: FastReport und Font-Color
 
Zitat:

Zitat von himitsu (Beitrag 1530141)
Kommt auch auf den Designer drauf an.
z.B. der Runtime-Designer (der in der eigenen EXE) des FastReport ist nicht der Selbe, wie der in der IDE.

Stimmt, es gibt unterschiedliche Versionen von FastReport. Ich gehe gedanklich immer von der Vollversion aus, kenne auch keine andere, da ist es nicht der Fall.

Bis bald...
Thomas

Rolf Frei 29. Nov 2023 13:00

AW: FastReport und Font-Color
 
Zitat:

Zitat von harfes (Beitrag 1530126)
Ich muss einen (statischen) Text in einer bestimmten Farbe anzeigen. Als Vorgabe habe ich einen HEX-Code #0073A5 - wenn ich diesen nun für ein TfrxMemoView in den Bereich Font -> Color eingebe (als $0073A5), dann macht mir FastReport daraus $000073A5 und zeigt eine völlig andere Farbe an. Eigentlich kenne ich das ja so, das #0073A5 eingegeben wird, aber da meckert FastReport, das sei kein Integer-Wert.
Da ich weder in der Internetsuche noch bei FastReport etwas dazu finden konnte, also hier die Frage: was mache ich falsch? Oder: was muss da überhaupt korrekt eingegeben werden?

Hartmut

Das Format #xxxxx kommt von HTML und ist ein HTML Farbwert. Den kannst du nicht direkt so in Delphi verwenden, weil Windows hier ein anderes Format für Farbwerte hat. Wie bereits von himitsu geschrieben, musst du die Reihenfolge der 2 stelligen HEX Werte ändern und kannst diese dann in Delphi mittels $xxxxx angeben. Das # darf hier nicht sein, da wir hier keine HTML-Farbwerte nutzen können. Dein Wert wäre also korrekt: $A57300, den du genau so in Fastreport oder jeder anderen Stelle wo du eine Frabe angeben kannst, einfügen kannst. Mit dem $ sagst du Delphi, dass das Folgende eine HEX-Zahl ist. Das heisst, das ist genauso ein Integer wie dein dezimaler Wert 10842880. Gibt übrigens auch noch eine binäre Schreibweise, wie du im folgenden Beispiel sehen kannst.

Hier ein Beispiel der verschiedneen Zahlensysteme und wie man die in Delphi angeben kann:
Delphi-Quellcode:
var i: Integer; // oder TColor
begin
  i := 10842880;  // Dezimal
  i := $A57300;   // HEX
  i := %1010_0101_0111_0011_0000_0000; // Binär (geht so erst ab Delphi 11)
  // i hat hier immer den selben Wert in verschiedene Zahlensystemen.
end;
Ein Umrechung kannst du mit dem Windows Rechner (calc.exe) im Progammierermodus machen.

himitsu 29. Nov 2023 14:36

AW: FastReport und Font-Color
 
Der neue Unterstrich _ als Trenner ist kein Muß
und noch schöner, den kann man für alles benutzen, also auch im Dezimal und Hexadezimal.

Delphi-Quellcode:
var i: Integer; // oder TColor
begin
  i := RGB(0, 115, 165);
  i := RGB($00, $73, $A5);
  i := 10_842_880; // Dezimal
  i := $00A5_7300; // HEX
  i := $00_A5_73_00; // HEX
  i := %00000000_10100101_01110011_00000000; // Binär (geht so erst ab Delphi 11)
  i := %00000000101001010111001100000000; // Binär
  // i hat hier immer den selben Wert in verschiedene Zahlensystemen.
end;
StrToInt und StringToColor werden aber % und _ noch nicht kennen

peterbelow 30. Nov 2023 10:56

AW: FastReport und Font-Color
 
Warum so aufwendig? Die VCL.Graphutils-Unit enthält eine Menge Konvertierungsfunktionen, z. B. WebColorStrToColor.


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