![]() |
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 |
Re: TColor in reg schreiben
TColor ist ein Integer
|
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; |
Re: TColor in reg schreiben
Was funktioniert nicht? Mit irgendwas können wir nicht viel anfangen
|
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. |
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. |
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.
|
Re: TColor in reg schreiben
Zitat:
|
Re: TColor in reg schreiben
ok dann liegt es ja daran nicht ...wisst ihr denn vieleicht eine Lösung wie ich das angehen soll?
|
Re: TColor in reg schreiben
Hast du denn schon mal per RegEdit geguckt, ob der Wert auch in der Registry steht?
|
Re: TColor in reg schreiben
Nein aber vorher hab ich den den wert von dlgcolor.color mit ColortoString umgewandelt und dann mit reg.writestring reingeschrieben und dann in der anderen Unit in einen Label geschrieben und da kam auch der Farbcode heraus doch beim panel.color wurde der code irgendwie nicht angenommen.
|
Re: TColor in reg schreiben
Dann guck doch mal ob der Integer Wert auch dort in der Registry steht. Nicht das noch der String dort drin steht
|
Re: TColor in reg schreiben
ok hab ich kontrolliert lag daran dass noch ein string drin stand. Dies hab ich jetzt gelöst trotzdem übernimmt der panel die Farbe immer nocht nicht.
|
Re: TColor in reg schreiben
Zitat:
TPanel + aktives XP-Theming = nein |
Re: TColor in reg schreiben
Zitat:
|
Re: TColor in reg schreiben
Steht schon auf False. Und geht trotzdem nicht
|
Re: TColor in reg schreiben
Dann zeige uns doch mak den Code zum Auslesen aus der Registry und wie du die Farbe zuweist. Immer nur "geht nicht", bringt uns nicht weiter.
|
Re: TColor in reg schreiben
Wenn du auf die erste hochscrollst da steht der Code
|
Re: TColor in reg schreiben
erste seite*
|
Re: TColor in reg schreiben
OK. Ich dachte, du hättest da noch was geändert. Hast du denn den Code schon mal debuggt und geguckt, ob er in die Verzweigungen überhaupt rein geht? Und wenn nicht, mal den fehler ausgewertet?
|
Re: TColor in reg schreiben
Er geht in die Verzweigung rein da ich sofort darunter eine Kontrolle mache ob der Farbcode überhaupt ausgelesen wird.
Ich schreibe einfach darunter was in reg.ReadInter('LC') steht in ein Label und dort kommt dann der richtige Code heraus. Denn wenn ich mir den Code kopiere und dann per Hand die Farbe des Panels wechsele geht es. Es liegt meiner Meinung an der Zeile pnlLeft.Color := reg.ReadInteger('LC'); |
Re: TColor in reg schreiben
SRY SRY ist meine Schuld ich hatte darunter noch eine Zeile Code stehen die vergessen hatte zu löschen :oops: . Jetzt funktioniert es.
Vielen Dank für die Hilfe Und nochmals SRY! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:09 Uhr. |
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-2025 by Thomas Breitkreuz