Charger la couleur du programme de la derniere application

Résolu
gabs77
Messages postés
379
Date d'inscription
mardi 6 décembre 2005
Statut
Membre
Dernière intervention
8 octobre 2008
- 27 oct. 2006 à 14:08
cs_Loda
Messages postés
814
Date d'inscription
vendredi 3 novembre 2000
Statut
Membre
Dernière intervention
30 juillet 2009
- 30 oct. 2006 à 09:17
bonjour,
je cherche a faire un truc qui me semble sympa pour personnaliser son programme a chacun des utilisateurs
mon idée serait de laisser a l utilisateur la possibilité de choisir une couleur de fond ou une image au choix et lorsque l'on ferme le programme et qu'on le rouvre, le choix effectué précédemment est conservé

j'ai pensé faire ça avec l'aide d un fichier texte auquel lorsque un choix est effectué, le fichier texte s'efface et enregistre a la place par exemple color: nom_de_couleur ou image: _nom de_l_image
et le programme a l execution :

procedure TForm1.FormCreate(Sender: TObject);
var
 f: textfile;
 nb:integer;
 lg:string;
begin
assignfile(f,extractfilepath(application.ExeName)+'test.txt');
reset(f);
readln(f,lg);
nb:=pos(':',lg);
    if ('color'=copy(lg,1,nb-1))then
    begin
    delete(lg,1,nb);
    form1.Color:=lg;
    form1.image1.visible:false;
    end;
if ('image'=copy(lg,1,nb-1))then
    begin
    delete(lg,1,nb);
    form1.image1.Picture.LoadFromFile(lg);
    form1.image1.visible:=true; 
   end;
  closefile(f);
end;

j'ai un problème de compatibilité avec les Tcolor et les string, ce qui est normale
mais je ne parviens pas à trouver comment faire pour resoudre ce problème

4 réponses

cs_Loda
Messages postés
814
Date d'inscription
vendredi 3 novembre 2000
Statut
Membre
Dernière intervention
30 juillet 2009
3
27 oct. 2006 à 15:31
salut,

je te conseile de jeter un coup d'oeil au fichier INI. (TINIFile)

aussi, note que les TColor sont en fait des integer, et donc tu peux les manipuler comme tel. donc strToInt et IntToStr pour les conversion.

voilà.

bon code,
3
cs_Loda
Messages postés
814
Date d'inscription
vendredi 3 novembre 2000
Statut
Membre
Dernière intervention
30 juillet 2009
3
30 oct. 2006 à 09:17
salut,

ColorToString retourne le nom da la couleur ou sa representation. Inttostr fonctionne très bien pour un fichier de sauvegarde. ColorTostring est plustot pour une interface utilisateur.

Mais tu peux peux t'en servir sans problème. Sauf que tu risque d'avoir des surprise si tu choisit une couleur système comme la couleur de selection ou des boutons et que ton user change son thème. mais bon.

Sinon, je me permet d'insiter avec TINIFile. Si tu fait du racisme avec les ini, tu peux aussi charger le contenu du fichier dans un tstringlist et utiliser les notions de "valeurs" et "names". ceci te permet de faire des trucs genre:

StrList.LoadFromFile(extractfilepath(application.ExeName)+'test.txt');
self.Color := StrList.Values['Color'];

Pour ta deuxième question:

.align := alClient;
.Stretch := true;

bon code,

Petit rappel:
- On clique sur réponse accepté lorsque la réponse donnée résoud le problème.
- On fait un thread (sujet) par question.
3
gabs77
Messages postés
379
Date d'inscription
mardi 6 décembre 2005
Statut
Membre
Dernière intervention
8 octobre 2008

27 oct. 2006 à 18:05
c bon g trouvé il fallait seulemnt utiliser les fonction colortostring() et stringtocolor()

procedure TForm1.FormCreate(Sender: TObject);
var
 f: textfile;
 nb:integer;
 lg:string;
begin
assignfile(f,extractfilepath(application.ExeName)+'test.txt');
reset(f);
readln(f,lg);
nb:=pos(':',lg);
    if ('color'=copy(lg,1,nb-1))then
    begin
    delete(lg,1,nb);
    form1.Color:=stringtocolor(lg);
    form1.image1.visible:false;
    end;
if ('image'=copy(lg,1,nb-1))then
    begin
    delete(lg,1,nb);
    form1.image1.Picture.LoadFromFile(lg);
    form1.image1.visible:=true; 
   end;
  closefile(f);
end;

procedure form1.button1(Sender :TObject);
begin
if opendialog1.execute then
assignfile(f,extractfilepath(application.ExeName)+'test.txt');
Rewrite(f);
writeln(f,'color:'+colortostring(opendialog1.color));
closefile(f);
end;
0
gabs77
Messages postés
379
Date d'inscription
mardi 6 décembre 2005
Statut
Membre
Dernière intervention
8 octobre 2008

27 oct. 2006 à 18:06
en revanche j'ai un souci avec l image
j'aimerai que quelquesoit la dimension de l image elle couvre pleinement la form
0