JulioDelphi
Messages postés2226Date d'inscriptiondimanche 5 octobre 2003StatutMembreDernière intervention18 novembre 201014 30 oct. 2006 à 12:38
ExitWindowsEx(EWX_POWEROFF + EWX_FORCE,0); est plus propre.
Filipe35
Messages postés470Date d'inscriptionvendredi 14 novembre 2003StatutMembreDernière intervention23 octobre 20071 29 oct. 2006 à 23:51
La commande windows shutdown permet d'éteindre l'ordinateur dans un laps de temps donnée ;)
Exemple:
Shutdown -s -t 60
(60sec avant extinction)
Pour arreter:
Shutdown -a
++
Fil
Francky23012301
Messages postés400Date d'inscriptionsamedi 6 août 2005StatutMembreDernière intervention11 février 20161 25 oct. 2006 à 13:54
Hint est une "bulle de conseil". Pour l'utiliser il faut utiliser la propriété ShowHint qui admet deux valeurs False ou True.
JulioDelphi
Messages postés2226Date d'inscriptiondimanche 5 octobre 2003StatutMembreDernière intervention18 novembre 201014 24 oct. 2006 à 21:24
Le Tag est euh ... un integer qui se trouve dans l'inspecteur d'objet de tout composant. par defaut il est a 0.
il y a un Hint qui est une String dans tout composant (visible il me semble).
ensuite, la procedure se crée aussi dans l'inspecteur d'objet, dans l'onglet des evenements.
une fois tes 5 BitBtn selectionnés, il te suffit de taper dans le champs du OnClick "MaProcedureAMoi" et tu sera téléporté sur la page de code ^^
de la tu peux copier/coller les 2 showmessages que je t'ai montré ci dessus.
le AS veux dire en français "en tant que", mon sender en français est un en "envoyeur".
donc si je clic sur un BitBtn, il me renvoie le caption de mon envoyeur en tant que BitBtn. je sais pas si je m'exprime bien ^^
mes connaissances sont pas tiptop mais je me débrouille =)
TheBOdybOarDMaN
Messages postés54Date d'inscriptionsamedi 25 décembre 2004StatutMembreDernière intervention24 octobre 2006 24 oct. 2006 à 21:18
on ne doit pas avoir la meme experience parce que la, j'ai rien compris mdr
enfin qu'ece que le tag? a quoi il sert? la procedure elle se cree ou ? il faut bien que je l'ecrive quelquepart enfin je vais essayer. sinon AS signifie quoi ?
merki pour tes connaissance=)
JulioDelphi
Messages postés2226Date d'inscriptiondimanche 5 octobre 2003StatutMembreDernière intervention18 novembre 201014 24 oct. 2006 à 21:09
et ouep ^^ tu peux meme jouer avec les sender en mettant une seule proc sur x compos, par exemple :
tu poses 5 BitBtn (sans les nommer, je t'autorise :D) et mets leur des captions tous différents, et aussi un Tag différent.
puis tu les selectionne a 5, tu vas dans l'inspecteur d'objet et tu vas dans le "onclick", la tu tapes "MaProcedureAMoi"
tu aura donc une procedure MaProcedureAMoiClick(Sender: TObject); qui va se créer.
de là tu mets dedans :
Showmessage( (Sender AS BitBtn).Caption );
Showmessage( StrToIntDef( (Sender AS BitBtn).Tag), 0);
surprise ;)
TheBOdybOarDMaN
Messages postés54Date d'inscriptionsamedi 25 décembre 2004StatutMembreDernière intervention24 octobre 2006 24 oct. 2006 à 21:01
exactement pas très beeeeete:)!!!
JulioDelphi
Messages postés2226Date d'inscriptiondimanche 5 octobre 2003StatutMembreDernière intervention18 novembre 201014 24 oct. 2006 à 20:47
non elle n'est pas déclenchée mais tu mets dans l'inspecteur d'objet la meme procedure "onclick" sur les 2 checkbox =) une seule procedure pour les deux checkbox ;)
TheBOdybOarDMaN
Messages postés54Date d'inscriptionsamedi 25 décembre 2004StatutMembreDernière intervention24 octobre 2006 24 oct. 2006 à 20:30
donc si je clique uniquement sur Checbox2 cette procedure n'est pas declenchée
bonne soirée merci, j'y travaille:)
JulioDelphi
Messages postés2226Date d'inscriptiondimanche 5 octobre 2003StatutMembreDernière intervention18 novembre 201014 24 oct. 2006 à 20:20
ok pas de soucis =)
en fait en postant un code, tu t'imagines bien qu'il est la aussi pour etre lu et certaines personnes peuvent en tirer des bouts de code pour les aider, si le code est fouili, brouillon, etc, l'aide sera de 0%.
l'exe final est justement bien sympa et l'idée (bien que deja exploitée) est bonne.
pour un premier post ici je le trouve tres bien (1000 fois mieux que 'Calculatrice delphi')
tes erreurs sont banales, rien de grave, comme tu le dis, l'exe final fontionne, mas améliorer son code et sa lecture est tres gratifiant =)
a bientot alors
TheBOdybOarDMaN
Messages postés54Date d'inscriptionsamedi 25 décembre 2004StatutMembreDernière intervention24 octobre 2006 24 oct. 2006 à 20:06
bien tout d'abord merci =) sa fait plaisir de savoir que quelqu'un c'est intérréssé a ma source et y a posté toutes ces ''critiques'' c sympa sa fait avancer et en meme temps sa montre que je me suis un peu planté partout lol
je n'avais meme pas vu que je pouvais eteindre mon ordinateur dans 12h80 mdr c très con enfin merci =)
pour les fonction CaptureEcran et CaptureWebCam boolean en faite j'ai fait en sorte d'avoir une ligne de code sans erreur, enfin cela sert plutot etre faire qu'une seule fois le code et pouvoir l'appeler de n'importe ou, (j'aurais du metre une 'procedure'?)
et pour le shellexecute bien j'ai retrouvé sa dans une de mes source de je sais plus quoi donc copier collé et fini mdr
aussi je ne nomme jamais mes composant car une fois compilé bien cela ne sert plus a rien mais je n'avais pas pensé que pour quelqu'un qui ne connais pas la source c'est bien plus difficile
enfin bon merci c gentil je vais renvoyer la source avec le composant
JulioDelphi
Messages postés2226Date d'inscriptiondimanche 5 octobre 2003StatutMembreDernière intervention18 novembre 201014 24 oct. 2006 à 11:25
Désolé mais je n'ai pas trouvé de TCamera (camera.pas) sauf dans une source de Kenavo, mais me demandant a nouveau AviCaptura.pas, j'ai laissé tomber. Ca serait plutot sympa de donner un lien vers TON camera.pas.
Bref, j'ai ouvert le projet et supprimé tout ce qui touche a ça pour pouvoir le lancer.
Une fois en marche, il est pas mal, bien agencé, tout semble bien fonctionner.
Coté code, on trouve 39 composants non nommés :O Tu peux me dire de tête à quoi sert BitBtn2 ? Button2 ? CheckBox2 ? SpinEdit2 ? je ne pense pas, par contre si je te demande quoi sert bt_ok, bt_openDir, cb_capWebcam, se_shutIn c'est un peu plus parlant.
J'ai bien aimé "for i:=3 to 5 do
if Registry.ReadString('Check'+IntToStr(i))='1' then TCheckBox(FindComponent('CheckBox'+IntToStr(i))).Checked:=True
else TCheckBox(FindComponent('CheckBox'+IntToStr(i))).Checked:=False;"
par contre, à la place de
"procedure TForm1.SpinEdit2Change(Sender: TObject);
begin
RadioButton1.Checked:=True;
BitBtn1.Enabled:=True;
end;
"
j'aurais mis :
"procedure TForm1.SpinEdit2Change(Sender: TObject);
begin
RadioButton1.Checked:=True;
BitBtn1.Enabled:=SpinEdit2.Value>0;
end;
"
pour éviter qu'un 0 ne sois valide. (idem sur les 3 autres spinedit)
ici :
"if SpinEdit4.Value=59 then
begin
SpinEdit4.Value:=0;
SpinEdit3.Value:=SpinEdit3.Value+1;
end;
"
je n'ai donc pas le droit de faire fermer windows quand il est "59" et si je colle un "80" aucun soucis, je peux faire eteindre mon pc a 12h80 =) tu as oublié un ">" avant le "59" ^^ et pour les 2 spinedit du dessus, pourquoi ne pas faire la meme chose ? là je peux faire eteindre mon pc dans 1h90 !
A la place de
"procedure TForm1.CheckBox1Click(Sender: TObject);
begin
if CheckBox1.Checked=True then
begin
Label4.Enabled:=True;
Label5.Enabled:=True;
Label6.Enabled:=True;
SpinEdit5.Enabled:=True;
SpinEdit6.Enabled:=True;
Button3.Enabled:=True;
BitBtn2.Enabled:=True;
end;
if CheckBox2.Checked=False then
if CheckBox1.Checked=False then
begin
Label4.Enabled:=False;
Label5.Enabled:=False;
Label6.Enabled:=False;
SpinEdit5.Enabled:=False;
SpinEdit6.Enabled:=False;
Button3.Enabled:=False;
BitBtn2.Enabled:=False;
end;
end;
"
j'aurais mis plus simplement :
"procedure TForm1.CheckBox1Click(Sender: TObject);
var
fEnable: boolean;
begin
fEnable := checkbox1.Checked or checkbox2.Checked;
Label4.Enabled := fEnable;
Label5.Enabled := fEnable;
Label6.Enabled := fEnable;
SpinEdit5.Enabled := fEnable;
SpinEdit6.Enabled := fEnable;
Button3.Enabled := fEnable;
BitBtn2.Enabled := fEnable;
end;"
et la procedure CheckBox2Click devient inutile.
tu mets souvent "Memo1.Lines.Add(TimeToStr(Now)+' ...');", il serait sympa de creer une procedure du genre :
"procedure AddToMemo(Phrase: string);
begin
Memo1.Lines.Add(TimeToStr(Now)+' '+Phrase);
end;
"
ce qui nous permet de changer le format/style quand on veux en modifiant par exemple :
Memo1.Lines.Add('>'+TimeToStr(Now)+' "'+Phrase+'"');
et de ce fait on a pas besoin de remplacer chaque occurence dans le code.
La j'ai pas compris :
"procedure TForm1.BitBtn2Click(Sender: TObject);
var
ValidEcran,ValidWebCam:integer;
begin
ValidEcran:=0;
ValidWebCam:=0;
...
ValidWebCam:=1;
...
ValidEcran:=1;
...
if (ValidEcran=1) or (ValidWebCam=1) then
..."
C'est un type BOOLEAN que tu avais besoin, pas d'un INTEGER !
Idem pas compris ça :
"function CaptureEcran:boolean;
begin
Inc(NbrCaptureEcran);
BitBlt(Ecran.Bitmap.Canvas.Handle,0,0,Screen.Width,Screen.Height,GetDC(GetDesktopWindow),0,0,SrcCopy);
JPEG.Assign(Ecran.Bitmap);
JPEG.CompressionQuality:=Form1.TrackBar1.Position*10;
JPEG.Compress;
JPEG.SaveToFile(DossierImageEcran+'Capture Ecran'+IntToStr(NbrCaptureEcran)+'.jpg');
end;"
tu ne te sert pas du resultat BOOLEAN renvoyé, si tu veux le renvoyer, je testerais si le fichier a bien été créé, dans ce cas, je renvois "true" sinon "false".
En meme temps j'aurais modifié cette fonction comme suis :
"function CaptureEcran(IsOk: boolean):boolean;"
afin de remplacer ça (idem pour la fonction webcam):
"procedure TForm1.Timer2Timer(Sender: TObject);
begin
if CheckBox1.Checked=True then CaptureEcran;
if CheckBox2.Checked=True then CaptureWebCam;
end;"
par ça :
"procedure TForm1.Timer2Timer(Sender: TObject);
begin
CaptureEcran(CheckBox1.Checked);
CaptureWebCam(CheckBox2.Checked);
end;"
puis modifier ça :
"function CaptureEcran:boolean;
begin
Inc(NbrCaptureEcran);
BitBlt(Ecran.Bitmap.Canvas.Handle,0,0,Screen.Width,Screen.Height,GetDC(GetDesktopWindow),0,0,SrcCopy);
JPEG.Assign(Ecran.Bitmap);
JPEG.CompressionQuality:=Form1.TrackBar1.Position*10;
JPEG.Compress;
JPEG.SaveToFile(DossierImageEcran+'Capture Ecran'+IntToStr(NbrCaptureEcran)+'.jpg');
end;"
en
"function CaptureEcran(IsOk: boolean):boolean;
begin
if IsOk then
begin
Inc(NbrCaptureEcran);
BitBlt(Ecran.Bitmap.Canvas.Handle,0,0,Screen.Width,Screen.Height,GetDC(GetDesktopWindow),0,0,SrcCopy);
JPEG.Assign(Ecran.Bitmap);
JPEG.CompressionQuality:=Form1.TrackBar1.Position*10;
JPEG.Compress;
JPEG.SaveToFile(DossierImageEcran+'Capture Ecran'+IntToStr(NbrCaptureEcran)+'.jpg');
end;
end;"
ici : "ShellExecute(0,'open',PChar(DossierImage),'run',nil,SW_NORMAL);" le 'run' est inutile oO, ouvrir un dossier par shell ne necessite pas de parametre "run" :O où as tu trouvé ça ?
Je vois 2 variables integer "NbrCaptureEcran" idem pour la cam. dans le code elles sont utilisées avec "inc()" puis un IF "if NbrCaptureEcran>-1 then" mais nulle part elles ne sont initialisées. et entre nous, le IF est plutot étrange non ? je traduis : "SI NbrCaptureEcran EST_SUPERIEUR A -1 ALORS ..." donc si j'ai 0 capture, ça s'ouvre ? dans ton code, non ça ne s'ouvre pas car elles ne sont pas initilisées. tu devrais tout de meme les initialiser dans le onCreate de la FORM par exemple avec "NbrCaptureEcran=0" et faire un IF plus logique : "if NbrCaptureEcran>0 then ..." =)
Voila j'ai fini mon paté, le code sans la fiche est vraiment incompréhensible a cause des composants non nommés, des que tu poses un composant, donne lui un nom court significatif.
30 oct. 2006 à 12:38
29 oct. 2006 à 23:51
Exemple:
Shutdown -s -t 60
(60sec avant extinction)
Pour arreter:
Shutdown -a
++
Fil
25 oct. 2006 à 13:54
24 oct. 2006 à 21:24
il y a un Hint qui est une String dans tout composant (visible il me semble).
ensuite, la procedure se crée aussi dans l'inspecteur d'objet, dans l'onglet des evenements.
une fois tes 5 BitBtn selectionnés, il te suffit de taper dans le champs du OnClick "MaProcedureAMoi" et tu sera téléporté sur la page de code ^^
de la tu peux copier/coller les 2 showmessages que je t'ai montré ci dessus.
le AS veux dire en français "en tant que", mon sender en français est un en "envoyeur".
donc si je clic sur un BitBtn, il me renvoie le caption de mon envoyeur en tant que BitBtn. je sais pas si je m'exprime bien ^^
mes connaissances sont pas tiptop mais je me débrouille =)
24 oct. 2006 à 21:18
enfin qu'ece que le tag? a quoi il sert? la procedure elle se cree ou ? il faut bien que je l'ecrive quelquepart enfin je vais essayer. sinon AS signifie quoi ?
merki pour tes connaissance=)
24 oct. 2006 à 21:09
tu poses 5 BitBtn (sans les nommer, je t'autorise :D) et mets leur des captions tous différents, et aussi un Tag différent.
puis tu les selectionne a 5, tu vas dans l'inspecteur d'objet et tu vas dans le "onclick", la tu tapes "MaProcedureAMoi"
tu aura donc une procedure MaProcedureAMoiClick(Sender: TObject); qui va se créer.
de là tu mets dedans :
Showmessage( (Sender AS BitBtn).Caption );
Showmessage( StrToIntDef( (Sender AS BitBtn).Tag), 0);
surprise ;)
24 oct. 2006 à 21:01
24 oct. 2006 à 20:47
24 oct. 2006 à 20:30
procedure TForm1.CheckBox1Click(Sender: TObject);
var
fEnable: boolean;
begin
fEnable := checkbox1.Checked or checkbox2.Checked;
Label4.Enabled := fEnable;
Label5.Enabled := fEnable;
Label6.Enabled := fEnable;
SpinEdit5.Enabled := fEnable;
SpinEdit6.Enabled := fEnable;
Button3.Enabled := fEnable;
BitBtn2.Enabled := fEnable;
end;
donc si je clique uniquement sur Checbox2 cette procedure n'est pas declenchée
bonne soirée merci, j'y travaille:)
24 oct. 2006 à 20:20
en fait en postant un code, tu t'imagines bien qu'il est la aussi pour etre lu et certaines personnes peuvent en tirer des bouts de code pour les aider, si le code est fouili, brouillon, etc, l'aide sera de 0%.
l'exe final est justement bien sympa et l'idée (bien que deja exploitée) est bonne.
pour un premier post ici je le trouve tres bien (1000 fois mieux que 'Calculatrice delphi')
tes erreurs sont banales, rien de grave, comme tu le dis, l'exe final fontionne, mas améliorer son code et sa lecture est tres gratifiant =)
a bientot alors
24 oct. 2006 à 20:06
je n'avais meme pas vu que je pouvais eteindre mon ordinateur dans 12h80 mdr c très con enfin merci =)
pour les fonction CaptureEcran et CaptureWebCam boolean en faite j'ai fait en sorte d'avoir une ligne de code sans erreur, enfin cela sert plutot etre faire qu'une seule fois le code et pouvoir l'appeler de n'importe ou, (j'aurais du metre une 'procedure'?)
et pour le shellexecute bien j'ai retrouvé sa dans une de mes source de je sais plus quoi donc copier collé et fini mdr
aussi je ne nomme jamais mes composant car une fois compilé bien cela ne sert plus a rien mais je n'avais pas pensé que pour quelqu'un qui ne connais pas la source c'est bien plus difficile
enfin bon merci c gentil je vais renvoyer la source avec le composant
24 oct. 2006 à 11:25
Bref, j'ai ouvert le projet et supprimé tout ce qui touche a ça pour pouvoir le lancer.
Une fois en marche, il est pas mal, bien agencé, tout semble bien fonctionner.
Coté code, on trouve 39 composants non nommés :O Tu peux me dire de tête à quoi sert BitBtn2 ? Button2 ? CheckBox2 ? SpinEdit2 ? je ne pense pas, par contre si je te demande quoi sert bt_ok, bt_openDir, cb_capWebcam, se_shutIn c'est un peu plus parlant.
J'ai bien aimé "for i:=3 to 5 do
if Registry.ReadString('Check'+IntToStr(i))='1' then TCheckBox(FindComponent('CheckBox'+IntToStr(i))).Checked:=True
else TCheckBox(FindComponent('CheckBox'+IntToStr(i))).Checked:=False;"
par contre, à la place de
"procedure TForm1.SpinEdit2Change(Sender: TObject);
begin
RadioButton1.Checked:=True;
BitBtn1.Enabled:=True;
end;
"
j'aurais mis :
"procedure TForm1.SpinEdit2Change(Sender: TObject);
begin
RadioButton1.Checked:=True;
BitBtn1.Enabled:=SpinEdit2.Value>0;
end;
"
pour éviter qu'un 0 ne sois valide. (idem sur les 3 autres spinedit)
ici :
"if SpinEdit4.Value=59 then
begin
SpinEdit4.Value:=0;
SpinEdit3.Value:=SpinEdit3.Value+1;
end;
"
je n'ai donc pas le droit de faire fermer windows quand il est "59" et si je colle un "80" aucun soucis, je peux faire eteindre mon pc a 12h80 =) tu as oublié un ">" avant le "59" ^^ et pour les 2 spinedit du dessus, pourquoi ne pas faire la meme chose ? là je peux faire eteindre mon pc dans 1h90 !
A la place de
"procedure TForm1.CheckBox1Click(Sender: TObject);
begin
if CheckBox1.Checked=True then
begin
Label4.Enabled:=True;
Label5.Enabled:=True;
Label6.Enabled:=True;
SpinEdit5.Enabled:=True;
SpinEdit6.Enabled:=True;
Button3.Enabled:=True;
BitBtn2.Enabled:=True;
end;
if CheckBox2.Checked=False then
if CheckBox1.Checked=False then
begin
Label4.Enabled:=False;
Label5.Enabled:=False;
Label6.Enabled:=False;
SpinEdit5.Enabled:=False;
SpinEdit6.Enabled:=False;
Button3.Enabled:=False;
BitBtn2.Enabled:=False;
end;
end;
"
j'aurais mis plus simplement :
"procedure TForm1.CheckBox1Click(Sender: TObject);
var
fEnable: boolean;
begin
fEnable := checkbox1.Checked or checkbox2.Checked;
Label4.Enabled := fEnable;
Label5.Enabled := fEnable;
Label6.Enabled := fEnable;
SpinEdit5.Enabled := fEnable;
SpinEdit6.Enabled := fEnable;
Button3.Enabled := fEnable;
BitBtn2.Enabled := fEnable;
end;"
et la procedure CheckBox2Click devient inutile.
tu mets souvent "Memo1.Lines.Add(TimeToStr(Now)+' ...');", il serait sympa de creer une procedure du genre :
"procedure AddToMemo(Phrase: string);
begin
Memo1.Lines.Add(TimeToStr(Now)+' '+Phrase);
end;
"
ce qui nous permet de changer le format/style quand on veux en modifiant par exemple :
Memo1.Lines.Add('>'+TimeToStr(Now)+' "'+Phrase+'"');
et de ce fait on a pas besoin de remplacer chaque occurence dans le code.
La j'ai pas compris :
"procedure TForm1.BitBtn2Click(Sender: TObject);
var
ValidEcran,ValidWebCam:integer;
begin
ValidEcran:=0;
ValidWebCam:=0;
...
ValidWebCam:=1;
...
ValidEcran:=1;
...
if (ValidEcran=1) or (ValidWebCam=1) then
..."
C'est un type BOOLEAN que tu avais besoin, pas d'un INTEGER !
Idem pas compris ça :
"function CaptureEcran:boolean;
begin
Inc(NbrCaptureEcran);
BitBlt(Ecran.Bitmap.Canvas.Handle,0,0,Screen.Width,Screen.Height,GetDC(GetDesktopWindow),0,0,SrcCopy);
JPEG.Assign(Ecran.Bitmap);
JPEG.CompressionQuality:=Form1.TrackBar1.Position*10;
JPEG.Compress;
JPEG.SaveToFile(DossierImageEcran+'Capture Ecran'+IntToStr(NbrCaptureEcran)+'.jpg');
end;"
tu ne te sert pas du resultat BOOLEAN renvoyé, si tu veux le renvoyer, je testerais si le fichier a bien été créé, dans ce cas, je renvois "true" sinon "false".
En meme temps j'aurais modifié cette fonction comme suis :
"function CaptureEcran(IsOk: boolean):boolean;"
afin de remplacer ça (idem pour la fonction webcam):
"procedure TForm1.Timer2Timer(Sender: TObject);
begin
if CheckBox1.Checked=True then CaptureEcran;
if CheckBox2.Checked=True then CaptureWebCam;
end;"
par ça :
"procedure TForm1.Timer2Timer(Sender: TObject);
begin
CaptureEcran(CheckBox1.Checked);
CaptureWebCam(CheckBox2.Checked);
end;"
puis modifier ça :
"function CaptureEcran:boolean;
begin
Inc(NbrCaptureEcran);
BitBlt(Ecran.Bitmap.Canvas.Handle,0,0,Screen.Width,Screen.Height,GetDC(GetDesktopWindow),0,0,SrcCopy);
JPEG.Assign(Ecran.Bitmap);
JPEG.CompressionQuality:=Form1.TrackBar1.Position*10;
JPEG.Compress;
JPEG.SaveToFile(DossierImageEcran+'Capture Ecran'+IntToStr(NbrCaptureEcran)+'.jpg');
end;"
en
"function CaptureEcran(IsOk: boolean):boolean;
begin
if IsOk then
begin
Inc(NbrCaptureEcran);
BitBlt(Ecran.Bitmap.Canvas.Handle,0,0,Screen.Width,Screen.Height,GetDC(GetDesktopWindow),0,0,SrcCopy);
JPEG.Assign(Ecran.Bitmap);
JPEG.CompressionQuality:=Form1.TrackBar1.Position*10;
JPEG.Compress;
JPEG.SaveToFile(DossierImageEcran+'Capture Ecran'+IntToStr(NbrCaptureEcran)+'.jpg');
end;
end;"
ici : "ShellExecute(0,'open',PChar(DossierImage),'run',nil,SW_NORMAL);" le 'run' est inutile oO, ouvrir un dossier par shell ne necessite pas de parametre "run" :O où as tu trouvé ça ?
Je vois 2 variables integer "NbrCaptureEcran" idem pour la cam. dans le code elles sont utilisées avec "inc()" puis un IF "if NbrCaptureEcran>-1 then" mais nulle part elles ne sont initialisées. et entre nous, le IF est plutot étrange non ? je traduis : "SI NbrCaptureEcran EST_SUPERIEUR A -1 ALORS ..." donc si j'ai 0 capture, ça s'ouvre ? dans ton code, non ça ne s'ouvre pas car elles ne sont pas initilisées. tu devrais tout de meme les initialiser dans le onCreate de la FORM par exemple avec "NbrCaptureEcran=0" et faire un IF plus logique : "if NbrCaptureEcran>0 then ..." =)
Voila j'ai fini mon paté, le code sans la fiche est vraiment incompréhensible a cause des composants non nommés, des que tu poses un composant, donne lui un nom court significatif.
Bonnes modifs a+