Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi clRed to Rot Funktion (https://www.delphipraxis.net/58384-clred-rot-funktion.html)

alexo 6. Dez 2005 12:23


clRed to Rot Funktion
 
hi!

gibt es eine funktion die es mir ermöglicht eine farbe zB clRed in "Rot" umzuwandeln OHNE jede farbe einzeln zu definieren.

mir ist schon klar das es mit

Delphi-Quellcode:

 case AColor of
clGreen: Result := 'Grün';
....
usw. gehen würde, ich will aber nicht 100 Farben definieren müssen....

danke :mrgreen:

dahead 6. Dez 2005 12:24

Re: clRed to Rot Funktion
 
Du könntest dir eine Komma-Getrennte Liste machen. Außer ColorToString oder StringToColor wird es da sonst nichts geben.

[Colors]
clred;Rot
clgreen;Grün
clBlue;Blau
usw.

alexo 6. Dez 2005 12:29

Re: clRed to Rot Funktion
 
ich verwende eine TColorBox, da kann man ja cbPrettyName auf true stellen u. delphi wandelt automatisch die farbe von clBlack auf Schwarz....

kann ich diese funktion nicht irgendwie verwenden :?:

dahead 6. Dez 2005 12:33

Re: clRed to Rot Funktion
 
so wie ich das sehe, entfernt die nur das präfix "cl". außerdem verwendet sie eine liste der farben.

hier ein auszug:

Delphi-Quellcode:
resourcestring
  clNameBlack = 'Black';
  clNameMaroon = 'Maroon';
  clNameGreen = 'Green';
...

const
  ColorToPretyName: array[0..46] of TIdentMapEntry = (
    (Value: clBlack; Name: clNameBlack),
    (Value: clMaroon; Name: clNameMaroon),
    (Value: clGreen; Name: clNameGreen),
 ...

procedure TCustomColorBox.ColorCallBack(const AName: String);
var
  I, LStart: Integer;
  LColor: TColor;
  LName: string;
begin
  LColor := StringToColor(AName);
  if cbPrettyNames in Style then
  begin
    if not IntToIdent(LColor, LName, ColorToPretyName) then
    begin
      if Copy(AName, 1, 2) = 'cl' then
        LStart := 3
      else
        LStart := 1;
      LName := '';
      for I := LStart to Length(AName) do
      begin
        case AName[I] of
          'A'..'Z':
            if LName <> '' then
              LName := LName + ' ';
        end;
        LName := LName + AName[I];
      end;
    end;
  end
  else
    LName := AName;
  Items.AddObject(LName, TObject(LColor));
end;

alexo 6. Dez 2005 12:41

Re: clRed to Rot Funktion
 
Danke!!

wie verwende ich die jetzt für meine unit :roll:

dahead 6. Dez 2005 12:45

Re: clRed to Rot Funktion
 
für welche unit?

wie gesagt, die obige funktion arbeitet mit einer Liste von sog. Standard-Farben. Die sind wohl im dt. Delphi auf Deutsch, bei meinem engl. auf Englisch.

Dir wird wohl nichts anderes übrig bleiben, als selbst die Farbwerte den Namen zuzuordnen. Dafür würde ich eine Liste verwenden (s. o.).

Union 6. Dez 2005 12:49

Re: clRed to Rot Funktion
 
Hier ist eine Liste der X11 Farben msdn - colors by name
Und mit .NET hättest Du es noch einfacher, da gibts nämlich TColor.ToString

alexo 6. Dez 2005 12:52

Re: clRed to Rot Funktion
 
danke :thumb:


noch eine frage:

wenn ich den index meiner TColorBox auf die Übergebene Farbe setzen will wie greife ich dan auf das Farbobject zu?!

bisher:
Delphi-Quellcode:
cmb.ItemIndex := cmb.Items.Indexof(FColor);
möchte nun aber auf das zusätzlich gespeicherte object abfragen

Delphi-Quellcode:
cmb.ItemIndex := cmb.Items.IndexofObject(FColor);
geht das?!?

alexo 7. Dez 2005 08:11

Re: clRed to Rot Funktion
 
noch was:

kann ich den objekt inhalt von lv.item.data auch in eine spalte einfügen?! (ohne dass ich den ihnalt von der DB 2x laden muss??)

Union 7. Dez 2005 08:30

Re: clRed to Rot Funktion
 
Hallo alexo,

neue Frage -> Neuer Thread, bitte.


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