Nicolas___
Messages postés992Date d'inscriptionjeudi 2 novembre 2000StatutMembreDernière intervention24 avril 2013
-
27 juin 2005 à 22:27
EddiTheHead
Messages postés58Date d'inscriptionmercredi 16 février 2005StatutMembreDernière intervention 2 juin 2006
-
10 févr. 2006 à 00:54
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
EddiTheHead
Messages postés58Date d'inscriptionmercredi 16 février 2005StatutMembreDernière intervention 2 juin 2006 10 févr. 2006 à 00:54
Slt,
J'viens de découvrir ton prog. Bonne idée d'utiliser plusieurs mediaplayer pour émettre des sons. C'est plus agréable qu'un playsound et c'est facile à utiliser.
Nicolas___
Messages postés992Date d'inscriptionjeudi 2 novembre 2000StatutMembreDernière intervention24 avril 20131 2 nov. 2005 à 21:55
Merci Bcp pour ton intervention ...
J'etais sur qu il y avait moyen de raccourcir cette histoire mais je ne savais pas comment ...
En tout cas c est tres simple.
Merci pour augmenter le nbr de CheckBox c est vachement plus facile maintenant enfin moins emmerd*** en tt cas !!!
Ciao
WhiteHippo
Messages postés1154Date d'inscriptionsamedi 14 août 2004StatutMembreDernière intervention 5 avril 20123 1 nov. 2005 à 11:07
Juste un peu de code qui vient suite à un de tes commentaires dans le source :
"Pr ne pas devoir tjs taper la meme chose encore que Qd on voit la suite... C'est Tjs la meme chose [...] surement moyen de faire moins long"
procedure TForm1.SonoTimer(Sender: TObject);
var
i,j : integer ;
cb : TCheckBox ;
mp : TMediaPlayer ;
begin
with ImageTemps do
begin
for i:=1 to NOMBRE_VOIES do
begin
for j:=1 to NOMBRE_INSTRUMENTS do
begin
mp := TMediaPlayer ( Form1.FindComponent( 'MediaPlayer' + IntToStr(j) ) ) ;
cb := TCheckBox ( Form1.FindComponent( INSTRUMENT[j] + IntToStr(i) ) ) ;
if ( cb.Checked ) and ( left=cb.Left ) then mp.Play ;
end ;
end ;
end ;
end;
procedure TForm1.LitFichier(FileName: String);
var
i,j: Integer;
begin
with TIniFile.Create(FileName) do
begin
for i := 1 to NOMBRE_VOIES do
begin
for j := 1 to NOMBRE_INSTRUMENTS do
begin
cb := TCheckBox ( Form1.FindComponent( Instruments[j] + IntToStr(i) ) ) ;
cb.Checked := ReadBool('save',Instruments[j] + IntToStr(i), False) ;
end ;
end ;
end;
end;
N.B. tous les NxClick pourrait de la même façon etre regroupés au sein d'une unique procedure (c'est à dire une seule procedure OnClick) qui se chargera de faire le traitement adequate en fonction du menu appelant.
Cordialement.
Nicolas___
Messages postés992Date d'inscriptionjeudi 2 novembre 2000StatutMembreDernière intervention24 avril 20131 13 juil. 2005 à 19:42
Merci,
Tout simplement parce que si on va trop vite,les sons ne sont pas joués
-->on ne sait pas joué 2 sons en meme temps(Du moins pas ac MediaPlayer).
Pour ton idee de BPM je ne l'ai pas fait car je ne sais pas ce que ca vaut.
Si tu as des idées pas de probleme dit les et j'y reflechirai.
Slt
Nico
@+
djmmix
Messages postés152Date d'inscriptionlundi 28 juillet 2003StatutMembreDernière intervention29 avril 2009 13 juil. 2005 à 17:47
ta source est nikel mais pk le tempo va jusqu'a trois ????
de plus il serai mieux de le mettre en BPM sa serai plus cool ^^
sinon génial @+++++
Nicolas___
Messages postés992Date d'inscriptionjeudi 2 novembre 2000StatutMembreDernière intervention24 avril 20131 30 juin 2005 à 11:54
C'est clair que je me rends bien compte que ca a l'air bien+ difficille
meme quasiment impossible , mais comme tu le sais impossible n'est pas francais...
Je vais essayer de me documenter sur TCollection,TMemoryStream et tt le reste qui sont de grands inconnus pour moi!!!
Mais tt ceci ne sera pas pour tout de suite a mon avis...
Sinon qu'est ce que tu en penses?
Slt
Nico
@+
cs_shining
Messages postés304Date d'inscriptionlundi 30 décembre 2002StatutMembreDernière intervention10 mars 2012 30 juin 2005 à 02:30
on peut aussi par soucis d'esthetisme écrire celà:
for i := 1 to 8 do
TCheckBox(FindComponent(Format('clap%u', [i]))).Checked :=...
l'idéal pour ton projet, serait de créer un composant 'maître', qui serait un TScrollBox, ensuite chaque élément, sera dérivé d'un TPaintBox, avec align := alTop, et biensûr lorsqu'on clique sur un élément qu'on puisse au moins modifier certaines données, telle que le son à jouer, effets, ect..., je sais celà demande un niveau assez elever !!! , si tu comprends où je veux en venir ça vas faire de ce projet, un excellent logiciel pour le sampling ;), et dance Ejay et compagnie n'aura qu'a bien se tenir :p, bonne continuation, et concernant le TiniFile, je pense que le mieux serait d'utiliser un TCollection, ça permet de travailler en temps réel avec un accès beaucoup plus rapide qu'un fichier *.ini, de plus le TCollectionItem permet d'ajouter autant de propriétés que tu veux, example : les Effets, le nom du son, position, ainsi que des pointeurs des éléments "coller", à celui-ci., et seulement à la fin, lorsque l'utilisateur veut enregistrer son projet, qu'il faudra, non pas mettre ça dans un TiniFile mais créer sa propre structure, exemple
TMusicMakerHeader = record
Sign : array [0..2] of Char; //MMF
ElementCount : integer;
end;
TElementInfo = record
Sound : String;
BeginPos : Integer;// où Int64 si long fichier(tel que *.wav)
EndPos : Integer;//
Effect : TElementEffect;
ect ...
end;
et avec un TMemoryStream où TFileStream, mais pour un gain de rapidité je conseil vivement le TMemoryStream !!!
ensuite c'est simple il faut definir son propre format
exemple MusicMakerFile format fichier *.mmf
MS.position := 0;// ça revient au même que Seek(0 , fromBeginning);
MS.WriteBuffer(Header, SizeOf(TMusicMakerHeader));
bon je sais !!!, c'est beaucoup demander pour un débutant, mais c'est à force de se lancer des défis qu'on progressent :)
Nicolas___
Messages postés992Date d'inscriptionjeudi 2 novembre 2000StatutMembreDernière intervention24 avril 20131 30 juin 2005 à 00:39
Allez une derniere pour la route...
Voir Description MAJ...
SLT
NICO
@+
Nicolas___
Messages postés992Date d'inscriptionjeudi 2 novembre 2000StatutMembreDernière intervention24 avril 20131 29 juin 2005 à 23:21
Pas besion de MAJ pr si peux!
Nicolas___
Messages postés992Date d'inscriptionjeudi 2 novembre 2000StatutMembreDernière intervention24 avril 20131 29 juin 2005 à 23:20
Ca y est j'ai trouve,
Remplacer l'ancienne procedure TForm1.LitFichier(FileName: String);
par celle ci
procedure TForm1.LitFichier(FileName: String);
var
i: Integer;
begin
with TIniFile.Create(FileName) do
begin
for i := 1 to 8 do
TCheckBox(FindComponent('clap' + IntToStr(i))).Checked :=
ReadBool('save','clap' + IntToStr(i), False);
for i := 1 to 8 do
TCheckBox(FindComponent('hat' + IntToStr(i))).Checked :=
ReadBool('save','hat' + IntToStr(i), False);
for i := 1 to 8 do
TCheckBox(FindComponent('drumb' + IntToStr(i))).Checked :=
ReadBool('save','drumb' + IntToStr(i), False);
for i := 1 to 8 do
TCheckBox(FindComponent('rimshot' + IntToStr(i))).Checked :=
ReadBool('save','rimshot' + IntToStr(i), False);
for i := 1 to 8 do
TCheckBox(FindComponent('tom' + IntToStr(i))).Checked :=
ReadBool('save','tom' + IntToStr(i), False);
for i := 1 to 8 do
TCheckBox(FindComponent('woodpipe' + IntToStr(i))).Checked :=
ReadBool('save','woodpipe' + IntToStr(i), False);
for i := 1 to 8 do
TCheckBox(FindComponent('snare' + IntToStr(i))).Checked :=
ReadBool('save','snare' + IntToStr(i), False);
for i := 1 to 8 do
TCheckBox(FindComponent('bass' + IntToStr(i))).Checked :=
ReadBool('save','bass' + IntToStr(i), False);
Free;
end;
end;
Je ne sais pas si c'est la meilleure maniere mais ca marche ne tt cas!
slt
Nico
Nicolas___
Messages postés992Date d'inscriptionjeudi 2 novembre 2000StatutMembreDernière intervention24 avril 20131 29 juin 2005 à 23:04
AAH,
viens seulement de m'en rendre compte: le fait d'avoir renomme les Checkboxs,
la methode de lecture du fichier INI depose par Japee ne marche +.
"J'aurais mieux fait de rester faineant finalement!!!",lol
Vais regarde a ca.
Slt
Nico
JulioDelphi
Messages postés2226Date d'inscriptiondimanche 5 octobre 2003StatutMembreDernière intervention18 novembre 201014 29 juin 2005 à 22:16
ce n'est pas lourd si c'est fait au fur et a mesure des checkbox posées sur la form =) mais tout reprendre a la fin oui c'est lourd.
"un bon informaticien est un informaticien paresseux" on m'a dit, donc fait en le moins le plus vite possible pour eviter de revenir sur tes pas ^^
bien joué sinon
Nicolas___
Messages postés992Date d'inscriptionjeudi 2 novembre 2000StatutMembreDernière intervention24 avril 20131 29 juin 2005 à 21:57
Voila JulioDelphi,
J'ai nomme toutes les checkbox en
Clap1 ... clap2..
hat 1.. hat2 ...
...
Et tu avais raison c'est qd meme + clair ainsi
Merci pr ton conseil
C'est peut etre lourd a tous renommer mais c'est mieux.
Slt
Nico
Nicolas___
Messages postés992Date d'inscriptionjeudi 2 novembre 2000StatutMembreDernière intervention24 avril 20131 29 juin 2005 à 18:32
Ben tu sais je veux bien les nommer mais a la place de
checkbox1,checkbox2 ...
Tu auras Son 1,Son 2....
Il n'y a pas gd difference(A mon point de vue)
Mais si tu veux je vais le faire.
Slt
JulioDelphi
Messages postés2226Date d'inscriptiondimanche 5 octobre 2003StatutMembreDernière intervention18 novembre 201014 29 juin 2005 à 18:04
hello
nomme tes composants. avec tes 230 checkbox c'est fouilli ^^
Nicolas___
Messages postés992Date d'inscriptionjeudi 2 novembre 2000StatutMembreDernière intervention24 avril 20131 29 juin 2005 à 00:58
Voila normalement la source est MAJ
Pr finir J'ai ete + vite que prevu.
J'ai juste rajouté ce que tu m'a mis Japee.
J'en ferai 1 + grosse ds qq tps.
Nicolas___
Messages postés992Date d'inscriptionjeudi 2 novembre 2000StatutMembreDernière intervention24 avril 20131 28 juin 2005 à 23:53
ouais Merci,c'est sur ca doit etre ca qui monte au crane!!! lol
Je vais suivre tes conseils(qui mon été plusieurs * utiles,si si serieux(Me la joue vieux flatteur la!!! lol))---> Tjs la chaleur,put*** de chaleur!!!
Tjs et encore Merci
Slt
Nico
Mettrais le source a jour peut etre Dmain sinon apres Dmain.
japee
Messages postés1727Date d'inscriptionvendredi 27 décembre 2002StatutModérateurDernière intervention 6 novembre 20218 28 juin 2005 à 23:27
Je te dirais bien bon courage, mais en fait, tu verras, c'est très simple.
N'hésite pas à consulter l'aide en ligne de Delphi, à TInifile.
Tu peux stocker toutes sortes de valeurs avec les méthodes appropriées (WriteString, WriteFloat, WriteBool, WriteDate, etc...) et les lire (avec ReadString, ReadFloat, etc...).
Dans mon code, plus haut, je me rends compte que j'ai répété de manière inutile l'instruction
PathAppli := ExtractFilePath(Application.ExeName);
qui sert à déterminer le répertoire où s'exécute l'application.
Une fois suffit, dans OnCreate par exemple.
Pfff... la chaleur...
Bonne prog'
japee
Nicolas___
Messages postés992Date d'inscriptionjeudi 2 novembre 2000StatutMembreDernière intervention24 avril 20131 28 juin 2005 à 23:00
Merci Japee pour ton devouevement,
pas encore eu le temps de tester ce que tu m'as ecrit mais je compte le faire tt de suite.
Faut que je vois comment marche 1 peu les fichiers ini,jamais utilisés.
Slt
Nico
japee
Messages postés1727Date d'inscriptionvendredi 27 décembre 2002StatutModérateurDernière intervention 6 novembre 20218 28 juin 2005 à 12:27
Ca te permet de lire et d'enregistrer quand tu le désires, par forcément dans FormCreate ou FormClose, j'avais oublié de préciser.
Je vais y arriver...
japee
Messages postés1727Date d'inscriptionvendredi 27 décembre 2002StatutModérateurDernière intervention 6 novembre 20218 28 juin 2005 à 12:25
En fait, j'ai été un peu vite, il vaut mieux faire ainsi :
procedure TForm1.LitFichier(FileName: String);
var i: Integer;
begin
PathAppli := ExtractFilePath(Application.ExeName);
with TIniFile.Create(FileName) do
begin
for i := 1 to NbreCheckBox do
TCheckBox(FindComponent('CheckBox' + IntToStr(i))).Checked :=
ReadBool('save', 'CheckBox' + IntToStr(i), False);
Free;
end;
end;
procedure TForm1.EnregistreFichier(FileName: String);
var i: Integer;
begin
with TIniFile.Create(FileName) do
begin
for i := 0 to ComponentCount - 1 do
if Components[i] is TCheckBox then
with TCheckBox(Components[i]) do
WriteBool('save', Name, Checked);
Free;
end;
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
var i: Integer;
begin
EnregistreFichier(PathAppli + 'sauve01.ini');
end;
japee
japee
Messages postés1727Date d'inscriptionvendredi 27 décembre 2002StatutModérateurDernière intervention 6 novembre 20218 28 juin 2005 à 12:13
Intéressant, il donne des idées, ce code...
Pour sauvegarder la configuration des CheckBox cochées, tu peux utiliser un fichier ini placé dans ton répertoire. Par exemple :
uses IniFiles;
const
NbreCheckBox: Integer = 9; // le nombre de CheckBoxes
var
PathAppli: String;
procedure TForm1.FormCreate(Sender: TObject);
var i: Integer;
begin
PathAppli := ExtractFilePath(Application.ExeName);
with TIniFile.Create(PathAppli + 'sauve01.ini') do
begin
for i := 1 to NbreCheckBox do
TCheckBox(FindComponent('CheckBox' + IntToStr(i))).Checked :=
ReadBool('savecb', 'CheckBox' + IntToStr(i), False);
Free;
end;
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
var i: Integer;
begin
PathAppli := ExtractFilePath(Application.ExeName);
with TIniFile.Create(PathAppli + 'sauve01.ini') do
begin
for i := 0 to ComponentCount - 1 do
if Components[i] is TCheckBox then
with TCheckBox(Components[i]) do
WriteBool('savecb', Name, Checked);
Free;
end;
end;
Bonne prog'
japee
Scalpweb
Messages postés1467Date d'inscriptionsamedi 13 mars 2004StatutMembreDernière intervention 5 mai 20104 28 juin 2005 à 00:24
J'utilise Paint aussi tu sais ! lol
Je vais voir ton prog now :-p
@+, Scalpweb
Nicolas___
Messages postés992Date d'inscriptionjeudi 2 novembre 2000StatutMembreDernière intervention24 avril 20131 27 juin 2005 à 22:27
Je suis ouvert aux commentaires et desole pour les fautes s'il y en a(Et il y en a surement!)
10 févr. 2006 à 00:54
J'viens de découvrir ton prog. Bonne idée d'utiliser plusieurs mediaplayer pour émettre des sons. C'est plus agréable qu'un playsound et c'est facile à utiliser.
2 nov. 2005 à 21:55
J'etais sur qu il y avait moyen de raccourcir cette histoire mais je ne savais pas comment ...
En tout cas c est tres simple.
Merci pour augmenter le nbr de CheckBox c est vachement plus facile maintenant enfin moins emmerd*** en tt cas !!!
Ciao
1 nov. 2005 à 11:07
"Pr ne pas devoir tjs taper la meme chose encore que Qd on voit la suite... C'est Tjs la meme chose [...] surement moyen de faire moins long"
const
NOMBRE_VOIES = 8 ;
NOMBRE_INSTRUMENTS = 8 ;
INSTRUMENT : array[1..NOMBRE_INSTRUMENTS ] of String =
( 'Clap'
, 'Hat'
, 'Drumb'
, 'Rimshot'
, 'Tom'
, 'Woodpipe'
, 'Snare'
, 'bass'
) ;
procedure TForm1.SonoTimer(Sender: TObject);
var
i,j : integer ;
cb : TCheckBox ;
mp : TMediaPlayer ;
begin
with ImageTemps do
begin
for i:=1 to NOMBRE_VOIES do
begin
for j:=1 to NOMBRE_INSTRUMENTS do
begin
mp := TMediaPlayer ( Form1.FindComponent( 'MediaPlayer' + IntToStr(j) ) ) ;
cb := TCheckBox ( Form1.FindComponent( INSTRUMENT[j] + IntToStr(i) ) ) ;
if ( cb.Checked ) and ( left=cb.Left ) then mp.Play ;
end ;
end ;
end ;
end;
procedure TForm1.LitFichier(FileName: String);
var
i,j: Integer;
begin
with TIniFile.Create(FileName) do
begin
for i := 1 to NOMBRE_VOIES do
begin
for j := 1 to NOMBRE_INSTRUMENTS do
begin
cb := TCheckBox ( Form1.FindComponent( Instruments[j] + IntToStr(i) ) ) ;
cb.Checked := ReadBool('save',Instruments[j] + IntToStr(i), False) ;
end ;
end ;
end;
end;
N.B. tous les NxClick pourrait de la même façon etre regroupés au sein d'une unique procedure (c'est à dire une seule procedure OnClick) qui se chargera de faire le traitement adequate en fonction du menu appelant.
Cordialement.
13 juil. 2005 à 19:42
Tout simplement parce que si on va trop vite,les sons ne sont pas joués
-->on ne sait pas joué 2 sons en meme temps(Du moins pas ac MediaPlayer).
Pour ton idee de BPM je ne l'ai pas fait car je ne sais pas ce que ca vaut.
Si tu as des idées pas de probleme dit les et j'y reflechirai.
Slt
Nico
@+
13 juil. 2005 à 17:47
de plus il serai mieux de le mettre en BPM sa serai plus cool ^^
sinon génial @+++++
30 juin 2005 à 11:54
meme quasiment impossible , mais comme tu le sais impossible n'est pas francais...
Je vais essayer de me documenter sur TCollection,TMemoryStream et tt le reste qui sont de grands inconnus pour moi!!!
Mais tt ceci ne sera pas pour tout de suite a mon avis...
Sinon qu'est ce que tu en penses?
Slt
Nico
@+
30 juin 2005 à 02:30
for i := 1 to 8 do
TCheckBox(FindComponent(Format('clap%u', [i]))).Checked :=...
l'idéal pour ton projet, serait de créer un composant 'maître', qui serait un TScrollBox, ensuite chaque élément, sera dérivé d'un TPaintBox, avec align := alTop, et biensûr lorsqu'on clique sur un élément qu'on puisse au moins modifier certaines données, telle que le son à jouer, effets, ect..., je sais celà demande un niveau assez elever !!! , si tu comprends où je veux en venir ça vas faire de ce projet, un excellent logiciel pour le sampling ;), et dance Ejay et compagnie n'aura qu'a bien se tenir :p, bonne continuation, et concernant le TiniFile, je pense que le mieux serait d'utiliser un TCollection, ça permet de travailler en temps réel avec un accès beaucoup plus rapide qu'un fichier *.ini, de plus le TCollectionItem permet d'ajouter autant de propriétés que tu veux, example : les Effets, le nom du son, position, ainsi que des pointeurs des éléments "coller", à celui-ci., et seulement à la fin, lorsque l'utilisateur veut enregistrer son projet, qu'il faudra, non pas mettre ça dans un TiniFile mais créer sa propre structure, exemple
TMusicMakerHeader = record
Sign : array [0..2] of Char; //MMF
ElementCount : integer;
end;
TElementInfo = record
Sound : String;
BeginPos : Integer;// où Int64 si long fichier(tel que *.wav)
EndPos : Integer;//
Effect : TElementEffect;
ect ...
end;
et avec un TMemoryStream où TFileStream, mais pour un gain de rapidité je conseil vivement le TMemoryStream !!!
ensuite c'est simple il faut definir son propre format
exemple MusicMakerFile format fichier *.mmf
MS.position := 0;// ça revient au même que Seek(0 , fromBeginning);
MS.WriteBuffer(Header, SizeOf(TMusicMakerHeader));
bon je sais !!!, c'est beaucoup demander pour un débutant, mais c'est à force de se lancer des défis qu'on progressent :)
30 juin 2005 à 00:39
Voir Description MAJ...
SLT
NICO
@+
29 juin 2005 à 23:21
29 juin 2005 à 23:20
Remplacer l'ancienne procedure TForm1.LitFichier(FileName: String);
par celle ci
procedure TForm1.LitFichier(FileName: String);
var
i: Integer;
begin
with TIniFile.Create(FileName) do
begin
for i := 1 to 8 do
TCheckBox(FindComponent('clap' + IntToStr(i))).Checked :=
ReadBool('save','clap' + IntToStr(i), False);
for i := 1 to 8 do
TCheckBox(FindComponent('hat' + IntToStr(i))).Checked :=
ReadBool('save','hat' + IntToStr(i), False);
for i := 1 to 8 do
TCheckBox(FindComponent('drumb' + IntToStr(i))).Checked :=
ReadBool('save','drumb' + IntToStr(i), False);
for i := 1 to 8 do
TCheckBox(FindComponent('rimshot' + IntToStr(i))).Checked :=
ReadBool('save','rimshot' + IntToStr(i), False);
for i := 1 to 8 do
TCheckBox(FindComponent('tom' + IntToStr(i))).Checked :=
ReadBool('save','tom' + IntToStr(i), False);
for i := 1 to 8 do
TCheckBox(FindComponent('woodpipe' + IntToStr(i))).Checked :=
ReadBool('save','woodpipe' + IntToStr(i), False);
for i := 1 to 8 do
TCheckBox(FindComponent('snare' + IntToStr(i))).Checked :=
ReadBool('save','snare' + IntToStr(i), False);
for i := 1 to 8 do
TCheckBox(FindComponent('bass' + IntToStr(i))).Checked :=
ReadBool('save','bass' + IntToStr(i), False);
Free;
end;
end;
Je ne sais pas si c'est la meilleure maniere mais ca marche ne tt cas!
slt
Nico
29 juin 2005 à 23:04
viens seulement de m'en rendre compte: le fait d'avoir renomme les Checkboxs,
la methode de lecture du fichier INI depose par Japee ne marche +.
"J'aurais mieux fait de rester faineant finalement!!!",lol
Vais regarde a ca.
Slt
Nico
29 juin 2005 à 22:16
"un bon informaticien est un informaticien paresseux" on m'a dit, donc fait en le moins le plus vite possible pour eviter de revenir sur tes pas ^^
bien joué sinon
29 juin 2005 à 21:57
J'ai nomme toutes les checkbox en
Clap1 ... clap2..
hat 1.. hat2 ...
...
Et tu avais raison c'est qd meme + clair ainsi
Merci pr ton conseil
C'est peut etre lourd a tous renommer mais c'est mieux.
Slt
Nico
29 juin 2005 à 18:32
checkbox1,checkbox2 ...
Tu auras Son 1,Son 2....
Il n'y a pas gd difference(A mon point de vue)
Mais si tu veux je vais le faire.
Slt
29 juin 2005 à 18:04
nomme tes composants. avec tes 230 checkbox c'est fouilli ^^
29 juin 2005 à 00:58
Pr finir J'ai ete + vite que prevu.
J'ai juste rajouté ce que tu m'a mis Japee.
J'en ferai 1 + grosse ds qq tps.
28 juin 2005 à 23:53
Je vais suivre tes conseils(qui mon été plusieurs * utiles,si si serieux(Me la joue vieux flatteur la!!! lol))---> Tjs la chaleur,put*** de chaleur!!!
Tjs et encore Merci
Slt
Nico
Mettrais le source a jour peut etre Dmain sinon apres Dmain.
28 juin 2005 à 23:27
N'hésite pas à consulter l'aide en ligne de Delphi, à TInifile.
Tu peux stocker toutes sortes de valeurs avec les méthodes appropriées (WriteString, WriteFloat, WriteBool, WriteDate, etc...) et les lire (avec ReadString, ReadFloat, etc...).
Dans mon code, plus haut, je me rends compte que j'ai répété de manière inutile l'instruction
PathAppli := ExtractFilePath(Application.ExeName);
qui sert à déterminer le répertoire où s'exécute l'application.
Une fois suffit, dans OnCreate par exemple.
Pfff... la chaleur...
Bonne prog'
japee
28 juin 2005 à 23:00
pas encore eu le temps de tester ce que tu m'as ecrit mais je compte le faire tt de suite.
Faut que je vois comment marche 1 peu les fichiers ini,jamais utilisés.
Slt
Nico
28 juin 2005 à 12:27
Je vais y arriver...
28 juin 2005 à 12:25
private
{ Déclarations privées }
procedure LitFichier(FileName: String);
procedure EnregistreFichier(FileName: String);
uses IniFiles;
const
NbreCheckBox: Integer = 9;
var
PathAppli: String;
procedure TForm1.LitFichier(FileName: String);
var i: Integer;
begin
PathAppli := ExtractFilePath(Application.ExeName);
with TIniFile.Create(FileName) do
begin
for i := 1 to NbreCheckBox do
TCheckBox(FindComponent('CheckBox' + IntToStr(i))).Checked :=
ReadBool('save', 'CheckBox' + IntToStr(i), False);
Free;
end;
end;
procedure TForm1.EnregistreFichier(FileName: String);
var i: Integer;
begin
with TIniFile.Create(FileName) do
begin
for i := 0 to ComponentCount - 1 do
if Components[i] is TCheckBox then
with TCheckBox(Components[i]) do
WriteBool('save', Name, Checked);
Free;
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
PathAppli := ExtractFilePath(Application.ExeName);
LitFichier(PathAppli + 'sauve01.ini');
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
var i: Integer;
begin
EnregistreFichier(PathAppli + 'sauve01.ini');
end;
japee
28 juin 2005 à 12:13
Pour sauvegarder la configuration des CheckBox cochées, tu peux utiliser un fichier ini placé dans ton répertoire. Par exemple :
uses IniFiles;
const
NbreCheckBox: Integer = 9; // le nombre de CheckBoxes
var
PathAppli: String;
procedure TForm1.FormCreate(Sender: TObject);
var i: Integer;
begin
PathAppli := ExtractFilePath(Application.ExeName);
with TIniFile.Create(PathAppli + 'sauve01.ini') do
begin
for i := 1 to NbreCheckBox do
TCheckBox(FindComponent('CheckBox' + IntToStr(i))).Checked :=
ReadBool('savecb', 'CheckBox' + IntToStr(i), False);
Free;
end;
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
var i: Integer;
begin
PathAppli := ExtractFilePath(Application.ExeName);
with TIniFile.Create(PathAppli + 'sauve01.ini') do
begin
for i := 0 to ComponentCount - 1 do
if Components[i] is TCheckBox then
with TCheckBox(Components[i]) do
WriteBool('savecb', Name, Checked);
Free;
end;
end;
Bonne prog'
japee
28 juin 2005 à 00:24
Je vais voir ton prog now :-p
@+, Scalpweb
27 juin 2005 à 22:27