Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi TColorscheme als String (https://www.delphipraxis.net/103746-tcolorscheme-als-string.html)

mimi 26. Nov 2007 16:30

Re: TColorscheme als String
 
Normalerweise müsste auch sowas klappen:
Integer(csNeoDesert)

Apollonius 26. Nov 2007 16:37

Re: TColorscheme als String
 
Mit RTTI geht es deutlich einfacher. Nur die Unit TypInfo (ja, ohne e) einbinden und daraus die Funktionen TypeInfo, GetEnumName und GetEnumValue verwenden. Das sollte eigentlich recht selbsterklärend sein.

uligerhardt 26. Nov 2007 16:48

Re: TColorscheme als String
 
Wenn du mit den Enum-Namen (in Englisch mit cs... vornedran) klarkommst, würde ich vorschlagen, du nimmst Apollonius' Vorschlag. Anderenfalls musst du selber was basteln. Ich hab mir mal die Freiheit genommen, Progmans Lösung etwas zu vereinfachen:
Delphi-Quellcode:
const
  ColorSchemeStrings: array[TColorScheme] of string = ('Neo Desert', 'Neo Sky',
    'Neo Grass', 'Neo Silver', 'Neo Rose', 'Neo Sun',
    'Desert', 'Grass', 'Sky', 'Sun', 'Rose', 'Silver',
    'Custom');

function TForm1.GetColorScheme(const s: string): TColorScheme;
var
  cs: TColorScheme;
begin
  for cs := Low(TColorScheme) to High(TColorScheme) do
    if s = ColorSchemeStrings[cs] then
    begin
      Result := cs;
      Exit;
    end;
  raise EConvertError.CreateFmt('%s ist kein TColorScheme.', [s]);
end;
HTH,
Uli.

Muetze1 26. Nov 2007 16:54

Re: TColorscheme als String
 
Und wenn vorhanden, kann man das ganze mit Delphi-Referenz durchsuchenAnsiIndexText() (bzw. Delphi-Referenz durchsuchenAnsiIndexStr()) nochmal deutlich verkürzen:

Delphi-Quellcode:
function TForm1.GetColorScheme(const s: string): TColorScheme;
var
  cs: TColorScheme;
  lInt: integer;
begin
  lInt := AnsiIndexText(s, ColorSchemeStrings);

  if lInt > -1 then
    result := TColorScheme(lInt)
  else
    raise EConvertError.CreateFmt('%s ist kein TColorScheme.', [s]);
end;

Privateer3000 26. Nov 2007 20:22

Re: TColorscheme als String
 
Es funktioniert tadellos
Danke Leute!


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:10 Uhr.
Seite 2 von 2     12   

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