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
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:
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;