Delphi-PRAXiS
Seite 1 von 2  1 2      

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)

Privateer3000 21. Nov 2007 08:50


TColorscheme als String
 
Hi Leuet,
in was muss ein Strin konvertiert werden
um als ColorScheme zu übergeben ?

Grüße

Der_Unwissende 21. Nov 2007 10:59

Re: TColorscheme als String
 
Hi,
eine kleine Bitte vorab, etwas mehr Zeit beim Schreiben nehmen und dafür bessere Rechtschreibung und mehr Information verwenden. Das spart zum Schluß eh Zeit, da das nachfragen wegfällt.
In was ein String konvertiert werden muss um als TColorScheme übergeben werden zu können? Na ja, in ein TColorScheme natürlich.
Da mir TColorScheme nichts sagt und auch meine Hilfe nichts dazu findet und ich einfach mal davon ausgehe, dass Deine eigentliche Frage sich auf das Wie bezieht, fehlt hier ganz klar eine Menge Informationen. Was genau möchtest Du denn machen? An wen möchtest Du einen String als TColorScheme übergeben und in welcher Unit (welcher Komponente) ist TColorScheme zu finden?

Gruß Der Unwissende

Progman 21. Nov 2007 11:23

Re: TColorscheme als String
 
Wenn die ColorSchemes der XiButtons gemeint sind. die sind so definiert:
Delphi-Quellcode:
  TColorScheme = (csNeoDesert, csNeoSky, csNeoGrass, csNeoSilver, csNeoRose, csNeoSun,
       csDesert, csGrass, csSky, csSun, csRose, csSilver, csCustom);
Da könnte man nur über die Ordnungszahl rankommen, mit String wird das nichts.

Bernhard Geyer 21. Nov 2007 11:28

Re: TColorscheme als String
 
Zitat:

Zitat von Progman
Da könnte man nur über die Ordnungszahl rankommen, mit String wird das nichts.

Nicht ganz. Eine Möglichkeit muß die IDE ja auch haben um das in die DFM's zu schreiben. Über die RTTI-Infos kommt man da schon ran und irgendwo hab ich das auch mal auch gemacht. Aber wo war das wieder :gruebel:

Progman 21. Nov 2007 11:32

Re: TColorscheme als String
 
naja, einfach mal in den Units (XIButtons.pas) mal nachgrasen, wie der gesetzt wird, das kann schon hilfreich sein ;)

Privateer3000 21. Nov 2007 13:16

Re: TColorscheme als String
 
Hallo,
ja es handelt sich um XIButtons.
Wie meinst du das mit Ordungszahlen?

Progman 21. Nov 2007 13:24

Re: TColorscheme als String
 
Die einzelnen Schemes haben doch eine Position in der Deklaration.
Delphi-Quellcode:
Ord(csNeoDesert)
ergibt z.B. 0 (null), das nächste wäre 1 usw.
Nun müsste man über ColorSchemes[0] ja csNeoDesert zuweisen können oder so in der Art.
Das hieße, den String in die entsprechende Ordnungszahl umsetzen.
Wäre jedenfalls meine Idee dazu.

Progman 21. Nov 2007 13:31

Re: TColorscheme als String
 
Delphi-Quellcode:
const
  ColorSchemeStrings: Array[0..12] of String = ('csNeoDesert', 'csNeoSky',
       'csNeoGrass', 'csNeoSilver', 'csNeoRose', 'csNeoSun',
       'csDesert', 'csGrass', 'csSky', 'csSun', 'csRose', 'csSilver',
       'csCustom');
Nun brauchst du nur nachzusehen, an welcher Position dein String steht und du hast die "Nummer" des ColorSchemes ;)

Privateer3000 21. Nov 2007 13:38

Re: TColorscheme als String
 
Vielen Dank, werd ich probieren :-)

Progman 21. Nov 2007 13:58

Re: TColorscheme als String
 
Ich hatte etwas Zeit, hier ne Beispiel-Unit:
Delphi-Quellcode:
unit testUnit4;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, XiButton;

type
  TForm1 = class(TForm)
    XiButton1: TXiButton;
    Edit1: TEdit;
    procedure XiButton1Click(Sender: TObject);
  private
    function GetColorScheme(s: String): TColorScheme;
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

const
  ColorSchemeStrings: Array[0..12] of String = ('csNeoDesert', 'csNeoSky',
       'csNeoGrass', 'csNeoSilver', 'csNeoRose', 'csNeoSun',
       'csDesert', 'csGrass', 'csSky', 'csSun', 'csRose', 'csSilver',
       'csCustom');
implementation

{$R *.dfm}

function TForm1.GetColorScheme(s: String): TColorScheme;
var i, x: Integer;
begin
  x:=-1;
  for i:=0 to 12 do
    if s = ColorSchemeStrings[i] then x:=i;
  if x > -1 then
    case x of
      0: Result:=csNeoDesert;
      1: Result:=csNeoSky;
      2: Result:=csNeoGrass;
      3: Result:=csNeoSilver;
      4: Result:=csNeoRose;
      5: Result:=csNeoSun;
      6: Result:=csDesert;
      7: Result:=csGrass;
      8: Result:=csSky;
      9: Result:=csSun;
      10: Result:=csRose;
      11: Result:=csSilver;
      12: Result:=csCustom;
    end;
end;

procedure TForm1.XiButton1Click(Sender: TObject);
begin
  XiButton1.ColorScheme:=GetColorScheme(Edit1.Text);
end;

end.
Es funktioniert :lol:


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:08 Uhr.
Seite 1 von 2  1 2      

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