Changer couleur du TEdit à partir de valeurs d'un INI (fichier) [Résolu]

Messages postés
6
Date d'inscription
mercredi 12 janvier 2005
Dernière intervention
11 avril 2006
- - Dernière réponse : cs_neko
Messages postés
135
Date d'inscription
jeudi 14 août 2003
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.
Afficher la suite 

Votre réponse

4 réponses

Meilleure réponse
Messages postés
135
Date d'inscription
jeudi 14 août 2003
Dernière intervention
12 octobre 2006
3
Merci
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

Merci cs_neko 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 101 internautes ce mois-ci

Commenter la réponse de cs_neko
Messages postés
163
Date d'inscription
dimanche 20 octobre 2002
Dernière intervention
31 juillet 2008
0
Merci
essayes avec les fonctions colortostring et stringtocolor....

exyacc
Commenter la réponse de exyacc
Messages postés
6
Date d'inscription
mercredi 12 janvier 2005
Dernière intervention
11 avril 2006
0
Merci
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.

Commenter la réponse de cs_SSB
Messages postés
135
Date d'inscription
jeudi 14 août 2003
Dernière intervention
12 octobre 2006
0
Merci
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
Commenter la réponse de cs_neko

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.