Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Eigenschaft CustomColor von TColordialog (https://www.delphipraxis.net/147711-eigenschaft-customcolor-von-tcolordialog.html)

KahPee 14. Feb 2010 18:28


Eigenschaft CustomColor von TColordialog
 
Hallo,

ich habe nun das Problem der Farbpalette gelöst aber nun kommt ein weiteres. Meine Palette hat genau 16 Felder (genau die Anzahl an "CustomColors" die man in einem TColordialog festlegen kann).
Ich möchte nun, dass die Farbpalette "Benutzerdefinierte Farben" in dem Tcolordialog, beim auf Aufrufen des Colordialogs auch die Farben des Farbpallettentools haben. Also habe ich folgendes vor "Colordialog1.Execute" geschrieben:
Delphi-Quellcode:
ColorDialog1.CustomColors[0]:='ColorA='+GetHexValue(Pcol1.Color); //PcolX ist ein Panel
ColorDialog1.CustomColors[1]:='ColorB='+GetHexValue(Pcol2.Color);
//...
ColorDialog1.CustomColors[15]:='ColorP='+GetHexValue(Pcol16.Color);


//die Konvertierungsfunktion
function GetHexValue(Color:TColor):String;
var
Hex:String;
begin
Hex:=IntToHex(Color,6);
Result:=Hex[5]+Hex[6]+Hex[3]+Hex[4]+Hex[1]+Hex[2];
end;
Leider wird das ganze auf diese Art und weise nicht richtig konvertiert. Zwar werden Farben in CustomColors geladen aber nicht die richtigen! Hat jemand eine Idee wie die richtige Konvertierung der Panelfarbe zum Hexvalue sein muss?
Aus der Delphi Hilfe:
Zitat:

Jede selbstdefinierte Farbe wird als String in der Form ColorX=HexValue dargestellt. Der folgende String setzt beispielsweise die erste selbstdefinierte Farbe.

ColorA=808022

Es können bis zu 16 selbstdefinierte Farben (ColorA bis ColorP) festgelegt werden.

Kahpee

haentschman 14. Feb 2010 18:42

Re: Eigenschaft CustomColor von TColordialog
 
Versuch mal:

ColorDialog.CustomColors[0]:= ColorToString(Panel.Color)

KahPee 14. Feb 2010 18:43

Re: Eigenschaft CustomColor von TColordialog
 
Lösung gefunden:
Delphi-Quellcode:
function TColorToHex( Color : TColor ) : string;
begin
  Result :=

    IntToHex( GetBValue( Color ), 2 )+
    IntToHex( GetGValue( Color ), 2 )+
    IntToHex( GetRValue( Color ), 2 ) ;
end;



ColorDialog1.CustomColors[0]:='ColorA='+Tcolortohex(Pcol1.Color);
//...

KahPee 14. Feb 2010 18:47

Re: Eigenschaft CustomColor von TColordialog
 
Die frage ist nun wie Konvertiere ich zurück?

SirThornberry 14. Feb 2010 19:02

Re: Eigenschaft CustomColor von TColordialog
 
bitte unterlasse das pushen innerhalb von 24 Stunden und verwende (das nächste mal) stattdessen http://www.delphipraxis.net/template.../icon_edit.gif über deinem letzten Beitrag. :)

haentschman 14. Feb 2010 19:13

Re: Eigenschaft CustomColor von TColordialog
 
Delphi-Quellcode:
ColorDialog1.CustomColors.Insert(0,'ColorA=' + Copy(ColorToString(Panel1.Color),2,8));
- ColorToString liefert den Farbwert in HEX als 8 stelligen Wert
- zum einfügen in den String brauchst du dann nur das "$" abschneiden

Delphi-Quellcode:
if ColorDialog.Execute then Panel.Color:= ColorDialog.Color;
- zurück ist einfach

KahPee 14. Feb 2010 19:54

Re: Eigenschaft CustomColor von TColordialog
 
Delphi-Quellcode:
if ColorDialog.Execute then Panel.Color:= ColorDialog.Color;
Das gibt mir nur die ausgewählte Farbe. aber ich möchte auch die neudefinierten Farben übernehmen. Das heißt ich muss den String in CustomCOlors wieder zurück in Tcolor umwandeln. Wie läuft diese Konvertierung?

haentschman 14. Feb 2010 20:09

Re: Eigenschaft CustomColor von TColordialog
 
dem Value "$" hinzufügen und dann StringToColor :zwinker:
Delphi-Quellcode:
panel1.color:= StringToColor('$' + Colordialog1.CustomColors.ValueFromIndex[0]);


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:27 Uhr.

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