Einzelnen Beitrag anzeigen

schöni

Registriert seit: 23. Jan 2005
Ort: Dresden
445 Beiträge
 
Delphi 7 Personal
 
#1

Warum werden meine Farbwerte nich übernommen?

  Alt 30. Sep 2005, 19:26
Hallo!

Da will ich endlich mal ein glitze kleines Progrämmchen für die Allgemeinheit zugänglich machen und da tritt ein eklatenter Fehler auf. Das Programm soll Farbwerte übernehmen, die mit Trackbars eingestellt werden. Die sich ergebende Farbe soll in einer TShape Komponente angezeigt werden. Im fertigen Programm will ich auf diese Weise Farbpaletten erzeugen, die ich dann in einer Datei speichern will, um sie für die Farbgestaltung zukünftiger Anwendungen einzusetzen. Hier ist der Quelltext:

Delphi-Quellcode:
unit main;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  ComCtrls, ToolWin, StdCtrls, ExtCtrls;

type
  TRGBstructure = record
    case integer of
     0: (r,g,b: byte);
     1: (red,green,blue,alpha: byte); //Die RGB Werte
     2: (color: Longint); //Die Mischfarbe
  end;

type
  TRGBClass = class //Eine Klasse zur Bearbeitung der Farbwerte
  private
    rgbStruc: TRGBStructure;
    function getColor: Longint;
    procedure setColor(value: Longint);
    function getred: byte;
    procedure setred(value: byte);
    function getgreen: byte;
    procedure setgreen(value: byte);
    function getblue: byte;
    procedure setblue(value: byte);
  public
    constructor create(filename: string);
    destructor destroy; override;
    procedure LoadFromFile(filename: string);
    procedure SaveToFile(filename: string);
    property Color: Longint read getColor write setColor;
    property red: byte read getred write setred;
    property green: byte read getgreen write setgreen;
    property blue: byte read getblue write setblue;
  end;

type
  TForm1 = class(TForm)
    RedValue: TTrackBar;
    GreenVal: TTrackBar;
    BlueVal: TTrackBar;
    ColorMonitor: TShape;
    stxtRed: TStaticText;
    stGreen: TStaticText;
    stBlue: TStaticText;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    strMin: TStaticText;
    strMax: TStaticText;
    stgMin: TStaticText;
    stgMax: TStaticText;
    stbMin: TStaticText;
    stbMax: TStaticText;
    CoolBar1: TCoolBar;
    ToolBar1: TToolBar;
    procedure RedValueChange(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure GreenValChange(Sender: TObject);
    procedure BlueValChange(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
  Palette: TRGBClass;

implementation

{$R *.DFM}

function TRGBClass.getColor: Longint;
begin
   Result := rgbStruc.Color;
end;

procedure TRGBClass.setColor(value: Longint);
begin
   if rgbStruc.Color <> value then value := rgbStruc.Color;
end;

function TRGBClass.getred: byte;
begin
   Result := rgbStruc.red
end;

procedure TRGBClass.setred(value: byte);
begin
   if value <> rgbStruc.red then rgbStruc.red := value
end;

function TRGBClass.getgreen: byte;
begin
   Result := rgbStruc.green
end;

procedure TRGBClass.setgreen(value: byte);
begin
   if value <> rgbStruc.green then rgbStruc.green := value
end;

function TRGBClass.getblue: byte;
begin
   Result := rgbStruc.blue;
end;

procedure TRGBClass.setblue(value: byte);
begin
   if value <> rgbStruc.blue then rgbStruc.blue := value
end;


constructor TRGBClass.create(filename: string);
begin
   inherited Create;
end;

destructor TRGBClass.destroy;
begin
   inherited Destroy;
end;

procedure TRGBClass.LoadFromFile(filename: string);
begin
  //noch nicht implementiert
end;

procedure TRGBClass.SaveToFile(filename: string);
begin
  //noch nicht implementiert
end;

procedure TForm1.RedValueChange(Sender: TObject);
begin
   Palette.red := RedValue.Position; //Farbwert einstellen
   Brush.Color := Palette.Color; //Gesamtfarbe übergeben
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
   Palette := TRGBClass.Create('');
   ColorMonitor.Brush.Style := bsSolid;
   ColorMonitor.Brush.Color := Palette.Color;
end;

procedure TForm1.GreenValChange(Sender: TObject);
begin
   Palette.green := GreenVal.Position;
   ColorMonitor.Brush.Color := Palette.Color;
end;

procedure TForm1.BlueValChange(Sender: TObject);
begin
   Palette.blue := BlueVal.Position;
   ColorMonitor.Brush.Color := Palette.Color;
end;

end.
Nach Programmstart werden die Farben jedoch nicht korrekt übernommen und angezeigt. Kann mir jemand helfen. Wo liegt mein Fehler?

Verzweifelte Grüße von

schöni
Damit der Topf nicht explodiert, lässt man es ab und zu mal zischen.
  Mit Zitat antworten Zitat