Un timer pour gerer un enregistrement

Résolu
Utilisateur anonyme - 24 oct. 2005 à 11:14
 Utilisateur anonyme - 24 oct. 2005 à 13:59
Salut à tous,

Voila j'ai une Form avec 3 boutons et 2 Edit

*Bouton 1 : Parcourir
Edit 1 : Fichier choisis

En cliquant sur Parcourir je sélectionne ou créer un fichier texte

*Bouton 2 :Enregistrer
Edit 2 : un édit ou j'écris ce que je veux
Bouton 3 : Arretter

Je cherche à enregistrer le contenu de l'Edit2 toute les 10 secondes dans un fichier texte. Je suppose qu'il faut utiliser un timer mais je ne connais pas la procédure.

Merci pour votre aide

6 réponses

vaughan Messages postés 198 Date d'inscription mardi 6 août 2002 Statut Membre Dernière intervention 29 octobre 2008
24 oct. 2005 à 13:41
Il serait nécessaire de faire un Thread si ton traitement avait été plus long qu'une alimentation de zone.

Voici le code

unit Unit1;


interface


uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls;


type
TForm1 = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Button1: TButton;
Button2: TButton;
Button3: TButton;
Timer1: TTimer;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
private
{ Déclarations privées }
public
{ Déclarations publiques }
end;


var
Form1: TForm1;


implementation


{$R *.dfm}


procedure TForm1.Button1Click(Sender: TObject);
begin
Edit1.Text := Edit2.Text + Edit3.Text;
end;


procedure TForm1.Button2Click(Sender: TObject);
begin
Timer1.Enabled := True;
end;


procedure TForm1.Button3Click(Sender: TObject);
begin
Timer1.Enabled := False;
end;


procedure TForm1.Timer1Timer(Sender: TObject);
begin
// Le code de sauvegarde
end;


end.

vaughan
3
vaughan Messages postés 198 Date d'inscription mardi 6 août 2002 Statut Membre Dernière intervention 29 octobre 2008
24 oct. 2005 à 11:34
Le timer est une solution ...

Dans les composants System sélectionner TIMER et le mettre sur ta fenêtre :
Mettre 10000 dans la proprièté INTERVAL (10000 msec = 10 sec)
Mettre dans la propriété Enable, true afin de rendre actif ton timer
Et mettre ton code d'insertion dans ton fichier texte dans l'événement OnTimer

procedure TForm1.Timer1Timer(Sender: TObject);
begin
// Code
end;

vaughan
0
Utilisateur anonyme
24 oct. 2005 à 12:40
Ok mais en fait je veux que l'enregistrement toutes les 10 secondes débute quand j'appuye sur le bouton Enregistrer et qu'il s'arrette quand j'appuye sur le bouton Arretter
0
vaughan Messages postés 198 Date d'inscription mardi 6 août 2002 Statut Membre Dernière intervention 29 octobre 2008
24 oct. 2005 à 13:02
Ok ... en gros tu lance un traitement dans un bouton et ton autre bouton sert à lancer tout les dix secondes une sauvegarde.


La solution est donc de lancer ton traitement par un Thread avec la classe TThread et dans ton bouton Sauvegarde activer et désactiver ton Timer pour sauvegarde.

vaughan
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Utilisateur anonyme
24 oct. 2005 à 13:29
Tu as pas bien compris :

j'ai 3 edits : Edit 1 Edit 2 Edit 3
J'ai trop boutons : Bouton 1 bouton2 bouton 3
J'ai un timer

bouton 1 : si je clique dessus je fais
Edit1.text : =Edit2.text+Edit3.text;

bouton 2 : j'enregistre le contenu de l'Edit1 toutes les 10 secondes

bouton3 : j'arrette "la boucle" d'enregistrement.

Je pense qu'il y a plus simple qu'un Thread.

Mon idées est : je met la procédure d'enregistrement dans le timer avec enable=false comme le timer marche pas donc pas d'enregistrement.

Si je clique sur Bouton 2 j'appelle le timer en l'activant biensur (enable=true).

Si je clique sur Bouton 3 je désactive le timer et j'arrette la procédure du timer.

Ce sont les parties activation/desactivation du timer et appelle/liberation de la procédure du timer qui me posent probleme

PS : enable est du type booleen.
0
Utilisateur anonyme
24 oct. 2005 à 13:59
Merci pour tout : j'avais essayé avec 0 et 1 à la place de false et true mais cela ne fonctionnait pas
0
Rejoignez-nous