Changer couleur du TEdit à partir de valeurs d'un INI (fichier)

Résolu
cs_SSB Messages postés 6 Date d'inscription mercredi 12 janvier 2005 Statut Membre Dernière intervention 11 avril 2006 - 5 juil. 2005 à 01:57
cs_neko Messages postés 135 Date d'inscription jeudi 14 août 2003 Statut Membre Dernière intervention 12 octobre 2006 - 6 juil. 2005 à 09:14
Bonjour à toutes et tous.

A partir de 2 petites sources, j'ai fait ce petit truc.

Le principe :

-On clique sur un TButton "Couleur", cela ouvre le TColorDialog, on choisit sa couleur et la couleur de fond du TEdit prend cette couleur.
La couleur choisit s'affiche dans le TLabel au format Couleur HTML (#FFFF00)

-On a un bouton "Enregistrer", et lorsque l'on clique dessus, cela met la valeur du TLabel (donc #FFFF00) dans un fichier INI.

-Maintenant, j'aimerais qu'à l'ouverture du programme (FormCreate), la couleur de fond du TEdit, soit celle qui a été enregistrée dans le fichier INI (A savoir #FFFF00), donc jaune.
Ca fait 2 jours que je galère et que j'ai essayé de multiples bidouilles mais sans résultats.

J'espère qu'une âme charitable passera dans le coin.

Voici le programme ci-dessous et j'espère qu'il y a suffisement d'explications.
C'est à la fin dans FormCreate que se situe le problème ;)

{------------------------------------------------}
{transformation d'un TColor en Couleur type HTML }
{------------------------------------------------}
function ColorToHtml(Color:TColor):String;
Var R,G,B : LongInt;
begin
B:=GetBValue(ColorToRGB(Color));
G:=GetGValue(ColorToRGB(Color));
R:=GetRValue(ColorToRGB(Color));
Result:='#'+IntToHex(R,2)+IntToHex(G,2)+IntToHex(B,2);
end;


// ----- Clic sur le 1er bouton pour choisir sa couleur à partir d un TColorDialog
procedure TForm1.Button_Var_01Click(Sender: TObject);
begin
if ColorDialog1.Execute then
begin
// Ici on met la couleur de fond du TEdit par celle choisi dans le TColorDialog
Edit_Var_01.Color:=ColorDialog1.Color;


// Ici on met la valeur ex #FFFF00 dans un TLabel
LabelCouleurHtml_01.Caption:= ColorToHtml(Edit_Var_01.Color);


end;
end;


// ----- Enregistrement de la valeur du TLabel dans une fichier INI
procedure TForm1.EnregistrerClick(Sender: TObject);
Var FichierIni : TIniFile;
begin
FichierIni:=TIniFile.Create(ExtractFilePath(Application.ExeName)+ 'Monfichier.ini'); //Créée le fichier INI si il n'existe pas
FichierIni.WriteString('Test','Texte1',LabelCouleurHtml_01.Caption); //Ecrit dans le fichier INI, la valeur du TLabel ex: #FFFF00
FichierIni.Free; //Libère le fichier
end;


// ----- A l'ouverture du programme La couleur de fond du TEdit doit correspondre à la valeur se trouvant dans mon fichier INI
procedure TForm1.FormCreate(Sender: TObject);
Var FichierIni : TIniFile;


begin
FichierIni:=TIniFile.Create(ExtractFilePath(Application.ExeName)+ 'Monfichier.ini');


// Ci-dessous j'ai mis LabelCouleurHtml_01.Caption,parce que c'est la seule chose qui fonctionnait, mais après cela ne me sert pas à grand chose :(
LabelCouleurHtml_01.Caption:=FichierIni.ReadString('Test','Texte1','DELPHI'); //Lit dans le fichier INI la valeur ex: #FFFF00


Edit_Var_01.Color := ?????; // Je ne sais pas quoi mettre ICI pour qu'a l'ouverture la couleur de fond soit celle de mon fichier INI à savoir #FFFF00


// En mettant ça ci-dessous cela fonctionne mais cela ne m'intéresse pas ;)
Edit_Var_01.Color := $00FFFF00;


FichierIni.Free;
end;


end.

4 réponses

cs_neko Messages postés 135 Date d'inscription jeudi 14 août 2003 Statut Membre Dernière intervention 12 octobre 2006 1
5 juil. 2005 à 09:13
Enregistre la couleur plutot que le texte

// ----- Enregistrement de la valeur du TColor dans une fichier INI

procedure TForm1.EnregistrerClick(Sender: TObject);
Var FichierIni : TIniFile;
begin
FichierIni:= TIniFile.Create(ExtractFilePath(Application.ExeName)+ 'Monfichier.ini'); //Créée le fichier INI si il n'existe pas
FichierIni. WriteInteger ('Test','Texte1',Edit_Var_01.Color); //Ecrit dans le fichier INI, la valeur de la couleur ( Le type TColor est en fait simplement un entier
FichierIni.Free; //Libère le fichier
end;


// ----- A l'ouverture du programme La couleur de fond du TEdit doit correspondre à la valeur se trouvant dans mon fichier INI
procedure TForm1.FormCreate(Sender: TObject);
Var FichierIni : TIniFile;


begin
FichierIni: =TIniFile.Create(ExtractFilePath(Application.ExeName)+ 'Monfichier.ini');


// Ci-dessous j'ai mis LabelCouleurHtml_01.Caption,parce que c'est la seule chose qui fonctionnait, mais après cela ne me sert pas à grand chose :(
Edit_Var_01.Color:= FichierIni. ReadInteger ('Test','Texte1',clWhite); //Lit dans le fichier INI la valeur ex: #FFFF00


LabelCouleurHtml_01.Caption: ='#'+
IntToHex(GetBValue(ColorToRGB(Edit_Var_01.Color)))+
IntToHex(GetGValue(ColorToRGB(Edit_Var_01.Color)))+;
IntToHex(GetRValue(ColorToRGB(Edit_Var_01.Color)));

FichierIni.Free;
end;

bouh
3
exyacc Messages postés 163 Date d'inscription dimanche 20 octobre 2002 Statut Membre Dernière intervention 31 juillet 2008
5 juil. 2005 à 09:14
essayes avec les fonctions colortostring et stringtocolor....

exyacc
0
cs_SSB Messages postés 6 Date d'inscription mercredi 12 janvier 2005 Statut Membre Dernière intervention 11 avril 2006
5 juil. 2005 à 12:40
Salut Neko et Exyacc.



Merci tout d'abord de m'avoir répondu.



Etant débutant Exyacc, vous pensez
bien que je me suis de suite orienté vers la réponse de Neko, étant
donné qu'il m'avait déjà maché le boulot, je n'ai plus eu qu'à prendre
la paille pour tout aspirer ;).



Neko suite à votre réponse, j'ai d'abord été content (en voyant votre
réponse), déçu (en la mettant en pratique) et de nouveau content
(en bidouillant tout ça au pifomètre ;) ).



Maintenant tout fonctionne comme je voulais :))))



Sauf qu'il y avait quelques petites erreurs dans la source que vous m'avez donné.



LabelCouleurHtml_01.Caption:= '#'+
IntToHex(GetBValue(ColorToRGB(Edit_Var_01.Color)))+
IntToHex(GetGValue(ColorToRGB(Edit_Var_01.Color)))+;
IntToHex(GetRValue(ColorToRGB(Edit_Var_01.Color)));



La 1ère erreur est le point virgule sur la 3ème ligne.



Ensuite j'ai eu des messages d'erreurs à propos de IntToHex.

En regardant la doc de delphi pour IntToHex, j'ai vu ça :

Label1.Caption :=Label1.Caption +IntToHex(Edit1.Text[i],2)+'';



Alors au pif j'ai remplacé par (en ajoutant ,2 ):

IntToHex(GetBValue(ColorToRGB(Edit_Var_01.Color)),2)+



Et là j'avais presque tout bon, mais un peu comme le loto dans le désordre.

Et en zieutant un peu mieux, j'ai vu votre chaîne qui était BGR au lieu
de RGB, donc après bidouillage pifométrique, au final cela donne :



LabelCouleurHtml_01.Caption: ='#'+
IntToHex(GetRValue(ColorToRGB(Edit_Var_01.Color)),2)+
IntToHex(GetGValue(ColorToRGB(Edit_Var_01.Color)),2)+
IntToHex(GetBValue(ColorToRGB(Edit_Var_01.Color)),2);



Et là apparement cela fonctionne bien (après quelques essais).



Donc si vous repassez par ici, vous me confirmez, que ce que j'ai modifié au petit bonheur la chance, est correct????



Autre petite question.

Dans mon code d'origine, il y avait ceci avec DELPHI, à la fin

FichierIni.ReadString('Test','Texte1','DELPHI');



Et dans le votre il y a clWhite

FichierIni.ReadInteger('Test','Texte1',clWhite);



A quoi correspond cette dernière valeur?



En tout cas Merci Neko, d'avoir prit le temps de taper toutes ces
lignes de codes et de m'avoir donné la solution, sans vous je n'y
serait jamais arrivé (et je désespérais)... I'm haaaappppppyyyy comme
dirait l'autre ;)



Re-merci aussi
exyacc de m'avoir répondu.



Salut.

0
cs_neko Messages postés 135 Date d'inscription jeudi 14 août 2003 Statut Membre Dernière intervention 12 octobre 2006 1
6 juil. 2005 à 09:14
Oula, pas de vouvoiement lol

Bon, tes correction elle sont tout à fait bonnes ( j'avou que j'avais
pas testé le code d'où toutes les fautes d'inatention genre les point
virgules lol ) et donc je m'escuse de t'avoir donné un code qui
marchait a moité seulement, enfin tu a réussi a corriger c'est
l'important.



Ensuite pour ça:

FichierIni.ReadInteger('Test','Texte1',clWhite);

et bien c'est très simple puisque ça veux simplement dire que si la
valeur de Texte1 n'est pas trouvée ( lors de la première utilisation du
programme par exemple ) la fonction te renvoie clWhite ( donc la
couleur blanche ) c'est une valeur par defaut quoi.






bouh
0
Rejoignez-nous