OpenDialog, EditBox et fichier INI [Résolu]

sagitaz 8 Messages postés dimanche 13 novembre 2005Date d'inscription 12 février 2008 Dernière intervention - 6 mars 2006 à 02:58 - Dernière réponse : sagitaz 8 Messages postés dimanche 13 novembre 2005Date d'inscription 12 février 2008 Dernière intervention
- 6 mars 2006 à 23:15
Bonsoir a tous, par avance désolé si ma reponse peut vous parraitre béte et simple mais je debute et apres plusieurs recherche qui m'ont jusqu'a present permis d'avancer seul, je me trouve bloquer sur un point et j'ai peur d'en perdre les cheveux .

je me creer un appli qui me permet d'afficher et de modifier les infos d'un fichier INI.

Lorsque je demarre mon appli, les EditBox sont bien rempli par les valeur present dans le ini. A coter de chaque EditBox j'ai un bouton auquel est associe soit un OpenDialog, soit un SelectDir.

procedure TForm1.JvXPButton1Click(Sender: TObject);
begin
if selectDir.Execute then
Edit1.Text :=SelectDir.Directory;
end;

procedure TForm1.JvXPButton2Click(Sender: TObject);
begin
if OpenDialog1.Execute then
Edit2.Text :=OpenDialog1.Filename;
end;

mais lorsque je sauve les infos que j'ai recuperer dans mes editbox, seul celle recuperer par le SelectDir sont modifier dans mon fichier INI, j'ai tester en modifiant directement a la main dans les editbox qui me possais probleme et dans ce cas j'ai bien mon fichier INI correctement modifier.

j'en deduit que j'ai louper un passage sur les OpenDialog et c'est la que je vous demande de l'aide.

merci a tous ceux qui aurront la patiente de m'aider.
Afficher la suite 

Votre réponse

7 réponses

Meilleure réponse
Cirec 4231 Messages postés vendredi 23 juillet 2004Date d'inscription 3 août 2018 Dernière intervention - 6 mars 2006 à 19:57
3
Merci
Salut,
peux-tu donner plus de code puisque j'ai fait des testes et tout fonctionne très bien et à tout les coups donc je pense que le problème viens d'ailleurs.

Combien de données est ce que tu enregistres dans ton fichier Ini ?

@+
Cirec

Merci Cirec 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 69 internautes ce mois-ci

Commenter la réponse de Cirec
Meilleure réponse
Cirec 4231 Messages postés vendredi 23 juillet 2004Date d'inscription 3 août 2018 Dernière intervention - 6 mars 2006 à 21:09
3
Merci
Bon essaye déjà de faire comme ça et dis moi si c'est bon où non:

// #################################################################
// LECTURE DU FICHIER INI : CONFIGSPORT.INI
//##################################################################
procedure TForm1.LitFichierIni;
begin
With TIniFile.Create(ExtractFilePath(Application.ExeName) + 'configSport.ini') Do
Begin
Try
Frame2.Edit1.Text:= ReadString('PARAMETRES', 'Database', 'chosir le repertoire');
Frame2.Edit2.Text:= ReadString('SON', 'Debut', 'chosir le repertoire');
Frame2.Edit3.Text:= ReadString('SON', 'Fin', 'chosir le repertoire');
Frame2.Edit4.Text:= ReadString('XEVENT', 'XalarmPath', 'chosir le repertoire');
Frame2.Edit5.Text:= ReadString('XEVENT', 'XEventCmd', 'xxx|CmdXevent2Vbs:refreshXESport');
Frame4.CheckBox1.Checked:= ReadBool('CHAMPIONNATS FOOT', 'Import', false);
Frame4.CheckBox2.Checked:= ReadBool('CHAMPIONNATS FOOT', 'Ligue1', false);
Frame4.CheckBox3.Checked:= ReadBool('CHAMPIONNATS FOOT', 'Ligue2', false);
Frame4.CheckBox4.Checked:= ReadBool('CHAMPIONNATS FOOT', 'Angleterre', false);
Frame4.CheckBox5.Checked:= ReadBool('CHAMPIONNATS FOOT', 'Espagne', false);
Frame4.CheckBox6.Checked:= ReadBool('CHAMPIONNATS FOOT', 'Italie', false);
Frame4.CheckBox7.Checked:= ReadBool('CHAMPIONNATS FOOT', 'Allemagne', false);
Frame4.CheckBox8.Checked:= ReadBool('CHAMPIONNATS FOOT', 'Belgique', false);
Frame4.CheckBox9.Checked:= ReadBool('CHAMPIONNATS FOOT', 'Ecosse', false);
Frame4.CheckBox10.Checked:= ReadBool('CHAMPIONNATS FOOT', 'Suisse', false);
Frame4.CheckBox11.Checked:= ReadBool('CHAMPIONNATS FOOT', 'Portugal', false);
Frame4.CheckBox12.Checked:= ReadBool('CHAMPIONNATS RUGBY', 'Import', false);
Frame4.CheckBox13.Checked:= ReadBool('CHAMPIONNATS RUGBY', 'Top14', false);
Frame4.CheckBox14.Checked:= ReadBool('CHAMPIONNATS RUGBY', 'ProD2', false);
Finally
Free;
End;
End;
end;

// #################################################################
// ECRITURE DU FICHIER INI : CONFIGSPORT.INI
//##################################################################
procedure TForm1.EcritFichierIni;
begin
With TIniFile.Create(ExtractFilePath(Application.ExeName) + 'configSport.ini') Do
Begin
Try
WriteString('PARAMETRES', 'Database', Frame2.Edit1.Text);
WriteString('SON', 'Debut', Frame2.Edit2.Text);
WriteString('SON', 'Fin', Frame2.Edit3.Text);
WriteString('XEVENT', 'XalarmPath', Frame2.Edit4.Text);
WriteString('XEVENT', 'XEventCmd', Frame2.Edit5.Text);
WriteBool('CHAMPIONNATS FOOT', 'Import', Frame4.CheckBox1.Checked);
WriteBool('CHAMPIONNATS FOOT', 'Ligue1', Frame4.CheckBox2.Checked);
WriteBool('CHAMPIONNATS FOOT', 'Ligue2', Frame4.CheckBox3.Checked);
WriteBool('CHAMPIONNATS FOOT', 'Angleterre', Frame4.CheckBox4.Checked);
WriteBool('CHAMPIONNATS FOOT', 'Espagne', Frame4.CheckBox5.Checked);
WriteBool('CHAMPIONNATS FOOT', 'Italie', Frame4.CheckBox6.Checked);
WriteBool('CHAMPIONNATS FOOT', 'Allemagne', Frame4.CheckBox7.Checked);
WriteBool('CHAMPIONNATS FOOT', 'Belgique', Frame4.CheckBox8.Checked);
WriteBool('CHAMPIONNATS FOOT', 'Ecosse', Frame4.CheckBox9.Checked);
WriteBool('CHAMPIONNATS FOOT', 'Suisse', Frame4.CheckBox10.Checked);
WriteBool('CHAMPIONNATS FOOT', 'Portugal', Frame4.CheckBox11.Checked);
WriteBool('CHAMPIONNATS RUGBY', 'Import', Frame4.CheckBox12.Checked);
WriteBool('CHAMPIONNATS RUGBY', 'Top14', Frame4.CheckBox13.Checked);
WriteBool('CHAMPIONNATS RUGBY', 'ProD2', Frame4.CheckBox14.Checked);
finally
Free;
end;
End;
end;

procedure TForm1.Frame4CheckBox1Click(Sender: TObject);
Var I : Integer;
begin
For I : = 2 To 11 Do
With Frame4 Do
With TJvgCheckBox(FindComponent('CheckBox' + IntToStr(I))) Do
If CheckBox1.Checked Then
Show
Else
Hide;
// pour les frames je ne suis pas sur à 100% je ne les utilises pas donc si il y a un problème utilise le code en dessous
{if Frame4.CheckBox1.Checked then
begin
Frame4.CheckBox2.show;
Frame4.CheckBox3.Show;
Frame4.CheckBox4.show;
Frame4.CheckBox5.Show;
Frame4.CheckBox6.show;
Frame4.CheckBox7.Show;
Frame4.CheckBox8.show;
Frame4.CheckBox9.Show;
Frame4.CheckBox10.show;
Frame4.CheckBox11.show;
end
Else
begin
Frame4.CheckBox2.Hide;
Frame4.CheckBox3.Hide;
Frame4.CheckBox4.Hide;
Frame4.CheckBox5.Hide;
Frame4.CheckBox6.Hide;
Frame4.CheckBox7.Hide;
Frame4.CheckBox8.Hide;
Frame4.CheckBox9.Hide;
Frame4.CheckBox10.Hide;
Frame4.CheckBox11.Hide;
end;}
end;

procedure TForm1.Frame4CheckBox12Click(Sender: TObject);
begin
if Frame4.CheckBox12.Checked then
begin
Frame4.CheckBox13.show;
Frame4.CheckBox14.Show;
end
Else
begin
Frame4.CheckBox13.Hide;
Frame4.CheckBox14.Hide;
end;
end;

@+
Cirec

Merci Cirec 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 69 internautes ce mois-ci

Commenter la réponse de Cirec
Meilleure réponse
Cirec 4231 Messages postés vendredi 23 juillet 2004Date d'inscription 3 août 2018 Dernière intervention - 6 mars 2006 à 23:03
3
Merci
ps : Clique sur Réponse Acceptée S.T.P. Merci

@+
Cirec

Merci Cirec 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 69 internautes ce mois-ci

Commenter la réponse de Cirec
sagitaz 8 Messages postés dimanche 13 novembre 2005Date d'inscription 12 février 2008 Dernière intervention - 6 mars 2006 à 20:10
0
Merci
j'utilise une form sur laquel j'affiche differente frame.

je te post tous le code, si ca peut t'aider .... a m'aider ;)

form1 :

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls, JvComponentBase, JvXPCore, JvBaseDlg,
JvSelectDirectory, JvExControls, JvComponent, JvXPButtons, JvExStdCtrls,
JvEdit, IniFiles, JvDialogs, Unit2, Unit3, Unit4, JvAnimTitle,
JvFormAnimatedIcon, JvAppAnimatedIcon, JvFormTransparent, JvFormAnimation,
JvButton, JvCtrls, JvWinampLabel;

type
TForm1 = class(TForm)
Frame2: TFrame2;
Frame4: TFrame4;
procedure FormCreate(Sender: TObject);
procedure Frame4JvXPButton1Click(Sender: TObject);
procedure Frame2JvXPButton5Click(Sender: TObject);
procedure Frame4JvXPButton2Click(Sender: TObject);
procedure Frame2JvXPButton1Click(Sender: TObject);
procedure Frame4CheckBox1Click(Sender: TObject);
procedure Frame4CheckBox12Click(Sender: TObject);
private
{ Private declarations }
procedure LitFichierIni;
procedure EcritFichierIni;
public
{ Public declarations }
end;

var
Form1: TForm1;
pathxml : string;

implementation

{$R *.dfm}
// #################################################################
// LECTURE DU FICHIER INI : CONFIGSPORT.INI
//##################################################################
procedure TForm1.LitFichierIni;
var FichierIni: TIniFile;

begin
FichierIni:= TIniFile.Create('.\configSport.ini');

Frame2.Edit1.Text:= FichierIni.ReadString('PARAMETRES', 'Database', 'chosir le repertoire');
Frame2.Edit2.Text:= FichierIni.ReadString('SON', 'Debut', 'chosir le repertoire');
Frame2.Edit3.Text:= FichierIni.ReadString('SON', 'Fin', 'chosir le repertoire');
Frame2.Edit4.Text:= FichierIni.ReadString('XEVENT', 'XalarmPath', 'chosir le repertoire');
Frame2.Edit5.Text:= FichierIni.ReadString('XEVENT', 'XEventCmd', 'xxx|CmdXevent2Vbs:refreshXESport');
Frame4.CheckBox1.Checked:= FichierIni.ReadBool('CHAMPIONNATS FOOT', 'Import', false);
Frame4.CheckBox2.Checked:= FichierIni.ReadBool('CHAMPIONNATS FOOT', 'Ligue1', false);
Frame4.CheckBox3.Checked:= FichierIni.ReadBool('CHAMPIONNATS FOOT', 'Ligue2', false);
Frame4.CheckBox4.Checked:= FichierIni.ReadBool('CHAMPIONNATS FOOT', 'Angleterre', false);
Frame4.CheckBox5.Checked:= FichierIni.ReadBool('CHAMPIONNATS FOOT', 'Espagne', false);
Frame4.CheckBox6.Checked:= FichierIni.ReadBool('CHAMPIONNATS FOOT', 'Italie', false);
Frame4.CheckBox7.Checked:= FichierIni.ReadBool('CHAMPIONNATS FOOT', 'Allemagne', false);
Frame4.CheckBox8.Checked:= FichierIni.ReadBool('CHAMPIONNATS FOOT', 'Belgique', false);
Frame4.CheckBox9.Checked:= FichierIni.ReadBool('CHAMPIONNATS FOOT', 'Ecosse', false);
Frame4.CheckBox10.Checked:= FichierIni.ReadBool('CHAMPIONNATS FOOT', 'Suisse', false);
Frame4.CheckBox11.Checked:= FichierIni.ReadBool('CHAMPIONNATS FOOT', 'Portugal', false);
Frame4.CheckBox12.Checked:= FichierIni.ReadBool('CHAMPIONNATS RUGBY', 'Import', false);
Frame4.CheckBox13.Checked:= FichierIni.ReadBool('CHAMPIONNATS RUGBY', 'Top14', false);
Frame4.CheckBox14.Checked:= FichierIni.ReadBool('CHAMPIONNATS RUGBY', 'ProD2', false);
FichierIni.Free;
end;

// #################################################################
// ECRITURE DU FICHIER INI : CONFIGSPORT.INI
//##################################################################
procedure TForm1.EcritFichierIni;
var
FichierIni: TIniFile;
begin
Try
FichierIni:= TIniFile.Create('.\configSport.ini');

FichierIni.WriteString('PARAMETRES', 'Database', Frame2.Edit1.Text);

FichierIni.WriteString('SON', 'Debut', Frame2.Edit2.Text);
FichierIni.WriteString('SON', 'Fin', Frame2.Edit3.Text);

FichierIni.WriteString('XEVENT', 'XalarmPath', Frame2.Edit4.Text);
FichierIni.WriteString('XEVENT', 'XEventCmd', Frame2.Edit5.Text);

FichierIni.WriteBool('CHAMPIONNATS FOOT', 'Import', Frame4.CheckBox1.Checked);
FichierIni.WriteBool('CHAMPIONNATS FOOT', 'Ligue1', Frame4.CheckBox2.Checked);
FichierIni.WriteBool('CHAMPIONNATS FOOT', 'Ligue2', Frame4.CheckBox3.Checked);
FichierIni.WriteBool('CHAMPIONNATS FOOT', 'Angleterre', Frame4.CheckBox4.Checked);
FichierIni.WriteBool('CHAMPIONNATS FOOT', 'Espagne', Frame4.CheckBox5.Checked);
FichierIni.WriteBool('CHAMPIONNATS FOOT', 'Italie', Frame4.CheckBox6.Checked);
FichierIni.WriteBool('CHAMPIONNATS FOOT', 'Allemagne', Frame4.CheckBox7.Checked);
FichierIni.WriteBool('CHAMPIONNATS FOOT', 'Belgique', Frame4.CheckBox8.Checked);
FichierIni.WriteBool('CHAMPIONNATS FOOT', 'Ecosse', Frame4.CheckBox9.Checked);
FichierIni.WriteBool('CHAMPIONNATS FOOT', 'Suisse', Frame4.CheckBox10.Checked);
FichierIni.WriteBool('CHAMPIONNATS FOOT', 'Portugal', Frame4.CheckBox11.Checked);
FichierIni.WriteBool('CHAMPIONNATS RUGBY', 'Import', Frame4.CheckBox12.Checked);
FichierIni.WriteBool('CHAMPIONNATS RUGBY', 'Top14', Frame4.CheckBox13.Checked);
FichierIni.WriteBool('CHAMPIONNATS RUGBY', 'ProD2', Frame4.CheckBox14.Checked);
finally
FichierIni.Free;
end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
LitFichierIni;
end;

procedure TForm1.Frame4JvXPButton1Click(Sender: TObject);
begin
Frame4.Hide;
Frame2.Show;

end;

procedure TForm1.Frame2JvXPButton5Click(Sender: TObject);
begin
Frame2.Hide;
Frame4.Show;

end;

procedure TForm1.Frame4JvXPButton2Click(Sender: TObject);
begin
EcritFichierIni;
Form1.Close;

end;

procedure TForm1.Frame2JvXPButton1Click(Sender: TObject);
begin
Frame2.JvXPButton1Click(Sender);

end;

procedure TForm1.Frame4CheckBox1Click(Sender: TObject);
begin

if Frame4.CheckBox1.Checked = true then
begin
Frame4.CheckBox2.show;
Frame4.CheckBox3.Show;
Frame4.CheckBox4.show;
Frame4.CheckBox5.Show;
Frame4.CheckBox6.show;
Frame4.CheckBox7.Show;
Frame4.CheckBox8.show;
Frame4.CheckBox9.Show;
Frame4.CheckBox10.show;
Frame4.CheckBox11.show;
end;

if Frame4.CheckBox1.Checked = False then
begin
Frame4.CheckBox2.Hide;
Frame4.CheckBox3.Hide;
Frame4.CheckBox4.Hide;
Frame4.CheckBox5.Hide;
Frame4.CheckBox6.Hide;
Frame4.CheckBox7.Hide;
Frame4.CheckBox8.Hide;
Frame4.CheckBox9.Hide;
Frame4.CheckBox10.Hide;
Frame4.CheckBox11.Hide;
end;

end;
procedure TForm1.Frame4CheckBox12Click(Sender: TObject);
begin

if Frame4.CheckBox12.Checked = true then
begin
Frame4.CheckBox13.show;
Frame4.CheckBox14.Show;
end;

if Frame4.CheckBox12.Checked = False then
begin
Frame4.CheckBox13.Hide;
Frame4.CheckBox14.Hide;
end;

end;

end.

Frame 2:

unit Unit2;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, JvExControls, JvComponent, JvXPCore, JvXPButtons,
JvComponentBase, IniFiles, JvBaseDlg, JvSelectDirectory, JvDialogs, StdCtrls;

type
TFrame2 = class(TFrame)
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Edit4: TEdit;
Label5: TLabel;
Edit5: TEdit;
OpenDialog1: TJvOpenDialog;
SelectDir: TJvSelectDirectory;
JvXPStyleManager1: TJvXPStyleManager;
JvXPButton1: TJvXPButton;
JvXPButton2: TJvXPButton;
JvXPButton3: TJvXPButton;
JvXPButton4: TJvXPButton;
JvXPButton5: TJvXPButton;
procedure JvXPButton1Click(Sender: TObject);
procedure JvXPButton2Click(Sender: TObject);
procedure JvXPButton3Click(Sender: TObject);
procedure JvXPButton4Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

implementation

uses Unit1;

{$R *.dfm}

procedure TFrame2.JvXPButton1Click(Sender: TObject);
begin
if selectDir.Execute then
Edit1.Text :=SelectDir.Directory;
end;

procedure TFrame2.JvXPButton2Click(Sender: TObject);
begin
if OpenDialog1.Execute then
Edit2.Text :=OpenDialog1.Filename;
end;

procedure TFrame2.JvXPButton3Click(Sender: TObject);
begin
if OpenDialog1.Execute then
Edit3.Text :=OpenDialog1.Filename;
end;

procedure TFrame2.JvXPButton4Click(Sender: TObject);
begin
if OpenDialog1.Execute then
Edit4.Text :=OpenDialog1.Filename;
end;

end.

Frame 4 :

unit Unit4;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, JvExControls, JvComponent, JvXPCore, JvXPButtons, JvgCheckBox,
StdCtrls, JvLED, JvComponentBase, JvAppAnimatedIcon, JvExStdCtrls,
JvWinampLabel;

type
TFrame4 = class(TFrame)
JvXPButton1: TJvXPButton;
CheckBox2: TJvgCheckBox;
CheckBox3: TJvgCheckBox;
CheckBox4: TJvgCheckBox;
CheckBox5: TJvgCheckBox;
CheckBox6: TJvgCheckBox;
CheckBox7: TJvgCheckBox;
CheckBox8: TJvgCheckBox;
CheckBox9: TJvgCheckBox;
CheckBox10: TJvgCheckBox;
CheckBox11: TJvgCheckBox;
JvXPButton2: TJvXPButton;
CheckBox1: TCheckBox;
CheckBox12: TCheckBox;
CheckBox13: TJvgCheckBox;
CheckBox14: TJvgCheckBox;
procedure CheckBox1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

implementation

{$R *.dfm}

procedure TFrame4.CheckBox1Click(Sender: TObject);
begin
if CheckBox1.Checked then
CheckBox6.Show;
end;

end.

Par avance merci.
Commenter la réponse de sagitaz
sagitaz 8 Messages postés dimanche 13 novembre 2005Date d'inscription 12 février 2008 Dernière intervention - 6 mars 2006 à 22:24
0
Merci
merci beaucoup. ca fonctionne nikel maintenant.

pour les frames par contre je garde ma methode, j'ai pas reussi a faire fonctionner la tienne, mais ce n'est pas grave, je debute donc j' allege mon code au fur et a mesure que j'apprends.

a bientot pour d'autre question. ( pas trop non plus, j'aime qd même trouver par moi même ).
Commenter la réponse de sagitaz
Cirec 4231 Messages postés vendredi 23 juillet 2004Date d'inscription 3 août 2018 Dernière intervention - 6 mars 2006 à 22:51
0
Merci
on fait je pense que tu serais curieux de savoir ce qui clochait non?
Et bien le fait d'avoir écris ceci : FichierIni:= TIniFile.Create('.\configSport.ini');
enregistre bien le fichier une première fois mais dès que tu choisi un répertoire avec SelectDir le répertoire par défaut change et prend la valeur de la sélection effectué avec SelectDir
Pour éviter ceci il faut préciser le répertoire dans le quel on veut enregistrer le fichier Ini :
TIniFile.Create(ExtractFilePath(Application.ExeName) + 'configSport.ini') : Ici on récupère le répertoire de l'application avec ExtractFilePath donc plus de problème

donc si tu fait une recherche sur ton disque dur tu devrais trouver au moins un Fichier configSport.ini qui n'est pas à sa place

@+
Cirec
Commenter la réponse de Cirec
sagitaz 8 Messages postés dimanche 13 novembre 2005Date d'inscription 12 février 2008 Dernière intervention - 6 mars 2006 à 23:15
0
Merci
merci pour cette explication, c'est mieux de comprendre ce qu'on fait.

et en effet j'ai quelques fichiers mal placer ( je fai bcp de test ).

encore merci.
Commenter la réponse de sagitaz

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.