Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi TColor in reg schreiben (https://www.delphipraxis.net/151587-tcolor-reg-schreiben.html)

Chris92 .A 24. Mai 2010 11:41


TColor in reg schreiben
 
Hallo ich wollte fragen ob jemand zufällig weiß wie man den Wert den man bekommt wenn man eine Farbe aus dem Dialog.Color nimmt in die reg schreiben kann
es gibt ja reg.writestring, reg.writeinteger etc... aber keinen reg.writecolor

mkinzler 24. Mai 2010 11:43

Re: TColor in reg schreiben
 
TColor ist ein Integer

Chris92 .A 24. Mai 2010 11:52

Re: TColor in reg schreiben
 
Hmm irgendwie funktioniert das aber nicht. Hier ist mein Code. In einer Unit3 die für die Einstellungen des Pong Spiel gedacht ist wollte ich die Farbe der Schläger verändern. Die Unit2 ist das eigentliche Spiel wo sich die Schläger befinden.

Delphi-Quellcode:
unit Unit3;

interface

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

type
  TfrmOption = class(TForm)
    Label1: TLabel;
    btnSpeichern: TButton;
    dlgColor: TColorDialog;
    Label2: TLabel;
    Label3: TLabel;
    btn1Color: TButton;
    btn2Color: TButton;
    Edit1: TEdit;
    procedure btn1ColorClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  frmOption: TfrmOption;
  reg: TRegistry;

implementation
uses unit2;

{$R *.DFM}
procedure TfrmOption.FormCreate(Sender: TObject);
begin
reg := TRegistry.Create;

end;
procedure TfrmOption.FormDestroy(Sender: TObject);
begin
        reg.Free;
end;

procedure TfrmOption.btn1ColorClick(Sender: TObject);
begin
        if dlgColor.execute then
                Leftcolor := dlgColor.color;

        if reg.OpenKey('Software\FDAC\Pong', true) then
        begin
                reg.WriteInteger('Leftcolor', Leftcolor);
                reg.CloseKey;
        end;
end;

end.
---------------------------------------

Delphi-Quellcode:
unit Unit2;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  ExtCtrls, StdCtrls, Menus, MPlayer, ExtDlgs, jpeg,Unit3,Registry;

type
  TfrmPong = class(TForm)
    tmBall: TTimer;
    pnlLeft: TPanel;
    pnlLine: TPanel;
    lblLeftPoint: TLabel;
    lblRightPoint: TLabel;
    pnlRight: TPanel;
    mmMenu2: TMainMenu;
    mmiPause: TMenuItem;
    mmiSound: TMenuItem;
    dlgOpen: TOpenDialog;
    mpWM: TMediaPlayer;
    mmiWMLied: TMenuItem;
    dlgPicture: TOpenPictureDialog;
    imgBall: TImage;
    pnlBottom: TPanel;
    pnlTop: TPanel;
    mmicolor: TMenuItem;
    dlgcolor2: TColorDialog;
    procedure FormKeyPress(Sender: TObject; var Key: Char);
    procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    procedure FormCreate(Sender: TObject);
    procedure FormClick(Sender: TObject);
    procedure tmBallTimer(Sender: TObject);
    procedure mmiPauseClick(Sender: TObject);
    procedure mmiWMLiedClick(Sender: TObject);
    procedure mmicolorClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  frmPong: TfrmPong;
  var X,Y,VX,VY:integer;
  var Test:Boolean;
  var FWidth,FHeight:Integer;
  var Leftcolor:integer;


implementation

{$R *.DFM}


procedure TfrmPong.FormCreate(Sender: TObject);
var
  reg: TRegistry;
begin
        reg := TRegistry.Create;
        if reg.OpenKey('Software\FDAC\Pong', false) then
        begin
                if reg.ValueExists('Leftcolor') then
                begin
                        pnlLeft.Color := reg.ReadInteger('Leftcolor');
                end;
        reg.CloseKey
        end;
        reg.Free;
end;

daywalker9 24. Mai 2010 11:54

Re: TColor in reg schreiben
 
Was funktioniert nicht? Mit irgendwas können wir nicht viel anfangen

Chris92 .A 24. Mai 2010 11:57

Re: TColor in reg schreiben
 
sry vergessen die Fehlermeldung hinzuzufügen:
Error:
Project Project1.exe raised execption class ERegistryExecption with message "Failed to get data for 'Leftcolor'. Process stopped.Use Step or Run to Continue.

Diese Fehlermeldung kommt wenn ich Pong starten will.

Matze 24. Mai 2010 12:02

Re: TColor in reg schreiben
 
Hallo,

Du solltest schon angeben, wo sich der Schlüssel in der Registry befindet (HKLM, HKCU, ...). Diese Angabe fehlt bei dir komplett, wenn ich das richtig sehe.
Ob das dein Problem löst, weiß ich nicht, aber mir kommt es aktuell falsch vor.

PS: Das mit den globalen Variablen ist sehr unsauber, aber das ist eine andere Geschichte.

Chris92 .A 24. Mai 2010 12:10

Re: TColor in reg schreiben
 
Also ich hab den Code mit eine Zahl getestet z.b um die Breite zuverändern und da funktioniert der Code. Also am Code selbst glaube ich liegt es nicht. Es liegt meiner Meinung nach dabei den dlgColor.Color in die reg.WriteInteger zuschreiben.

Luckie 24. Mai 2010 12:13

Re: TColor in reg schreiben
 
Zitat:

Zitat von Matze
Du solltest schon angeben, wo sich der Schlüssel in der Registry befindet (HKLM, HKCU, ...). Diese Angabe fehlt bei dir komplett, wenn ich das richtig sehe.

Wird kein Hive angegeben, nimmt Delphi automatisch HKCU.

Chris92 .A 24. Mai 2010 12:15

Re: TColor in reg schreiben
 
ok dann liegt es ja daran nicht ...wisst ihr denn vieleicht eine Lösung wie ich das angehen soll?

daywalker9 24. Mai 2010 12:15

Re: TColor in reg schreiben
 
Hast du denn schon mal per RegEdit geguckt, ob der Wert auch in der Registry steht?


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:47 Uhr.
Seite 1 von 3  1 23      

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 by Thomas Breitkreuz