IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 Delphi Discussion :

Comment mettre une procédure en pause ?


Sujet :

Delphi

  1. #1
    Membre éprouvé
    Avatar de neuneu1
    Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Avril 2007
    Messages
    1 874
    Détails du profil
    Informations personnelles :
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 874
    Points : 1 194
    Points
    1 194
    Par défaut Comment mettre une procédure en pause ?
    Bonjour,
    je voudrais savoir comment mettre une precedure en pause le temps qu une autre soit effectuer.

    J'ai fait un tour sur la FAQ, mais je n'ai rien vu ou mal vu.

    je pensais a un progressbar, mais y surement mieux..

    merci
    a+
    Une porte peut -etre ouverte ou....rouge!!!!:mouarf

  2. #2
    Expert éminent sénior

    Avatar de sjrd
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2004
    Messages
    4 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Suisse

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2004
    Messages : 4 517
    Points : 10 154
    Points
    10 154
    Par défaut
    Tu travailles avec des threads ? Si oui, il faut regarder du côté des événements (events) qui sont exactement prévus pour ce type de comportement.

    Sinon, explique comment tu peux avoir une procédure qui doit en attendre une autre
    sjrd, ancien rédacteur/modérateur Delphi.
    Auteur de Scala.js, le compilateur de Scala vers JavaScript, et directeur technique du Scala Center à l'EPFL.
    Découvrez Mes tutoriels.

  3. #3
    Membre éprouvé
    Avatar de neuneu1
    Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Avril 2007
    Messages
    1 874
    Détails du profil
    Informations personnelles :
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 874
    Points : 1 194
    Points
    1 194
    Par défaut
    Desole j'ai pas votre niveau,je vais mattre un bout de code , c'est des test donc pas super classe.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    table1.Last;
    calcule.Last;
    cpt:=table1.Fields[4].AsInteger;
    cpt2:=calcule.fields[0].asinteger;
    planner1.Caption.Title:=edit8.Text;
    Planner1.Items.Selected:=nil;
    form2.Show
    form2.Enabled:=true;
     ///////tantque///////
     while form2.Enabled //c'est la a l appel de la form2 je souhaite bloquer les evenement qui suivent a savoir insert un nouvel items
     do begin
     
     end;
    
    
      if planner1.Items.HasItem(fromSel,toSel,Position) then
      begin
        ShowMessage('Cannot create item.'#13#10'Selected period already contains an item without overlap !');
        Exit;
      end;
    
          Planner1.Items.BeginUpdate;
    
      with (Planner1.Items.Add) do
      begin
    
        Text.Add(Edit6.Text);  //affiche la valeur de l'edit dans l items cree
    
        Name := 'Test';
        ItemPos := Position;
        ItemEnd := ToSel;
        ItemBegin := FromSel;
        edit1.Text:=  inttostr( ItemPos) ;
        edit2.Text:= inttostr(  ItemEnd);
        edit3.Text:= inttostr( ItemBegin);
    
         CaptionType := ctTime;
    
    
    
          //enregistrement dans la table
    
        table1.Insert;
       calcule.Insert;
    table1.Fields [0].AsInteger:=   ItemPos ;
    table1.Fields [1].AsInteger:=ItemEnd;
    table1.Fields [2].AsInteger:=ItemBegin;
    table1.Fields [3].AsString:=planner1.Items.Items[0].Text.GetText;
    table1.Fields [4].AsInteger:=cpt + 1 ;
    table1.Fields [6].asstring:=edit8.text;
    //table1.Fields[7].AsString:=planner1.Items.Items[i].GetCaptionString;
     calcule.Fields[0].AsInteger:=cpt2+1;
     calcule.Fields[1].AsDateTime:= (planner1.Items.Items[i].ItemStartTime);
     calcule.Fields[2].AsDateTime:=(planner1.Items.Items[i]. ItemEndTime);
      calcule.Fields[3].AsDateTime:= (calcule.Fields[2].AsDateTime)- (calcule.Fields[1].AsDateTime);
      calcule.Fields[4].Asstring:=edit8.text ;
    
          end;
    Planner1.Items.EndUpdate;
    edit4.Text:=planner1.Items.Items[i].ItemSpanTimeStr;//planner1.Items.Items[i].ItemStartTimeStr ;   //affiche heure debut
    edit5.Text:=planner1.Items.Items[i].ItemendTimeStr ; //affiche heures fin
    edit7.Text:=planner1.Items.Items[i].Text.GetText;   //recupre valeur d u texte
    i:=i+1;
    table1.Post;
    calcule.Post;
    Comme je l'ai dit dans le code , je veux bloquer ma procedure avant le xhith afin d ouvrir la form2 et recuper les valeur des edit de cette form2.

    merci
    Une porte peut -etre ouverte ou....rouge!!!!:mouarf

  4. #4
    Rédacteur
    Avatar de evarisnea
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Juin 2005
    Messages
    1 957
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 957
    Points : 4 384
    Points
    4 384
    Par défaut

    je ne sais pas si j'ai tout compris, mais à la base, lorsque dans une procédure tu en appelle une autre celle ci est entièrement exécutée avant de revenir à la première non?
    bon pour l'exemple que tu as donné, si tu utilisais ShowModal en lieu et place de Show pour l'affichage de form2, cela t'éviterais d'utiliser une boucle.
    Citation Envoyé par neuneu1
    je pensais a un progressbar, mais y surement mieux..
    euh, je ne vois pas de rapport.

  5. #5
    Membre éprouvé
    Avatar de neuneu1
    Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Avril 2007
    Messages
    1 874
    Détails du profil
    Informations personnelles :
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 874
    Points : 1 194
    Points
    1 194
    Par défaut
    ben avec la procedure insert de tms planner, ca pas l'ai d arreter la procedure.

    Le progressebar, c'etait pour la bouchle tant que .
    Tant que la progresse bar n'est pas a la fin faire un truc, si progressebar a 10 reprendre la procedure..

    j'essaye des truc

    Je vais refaire un essaye avec showmodal.

    merci
    a+
    Une porte peut -etre ouverte ou....rouge!!!!:mouarf

  6. #6
    Teo
    Teo est déconnecté
    Membre régulier
    Profil pro
    Inscrit en
    Août 2002
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 110
    Points : 111
    Points
    111
    Par défaut
    Bonjour

    form2.Show
    form2.Enabled:=true;
    ///////tantque///////
    while form2.Enabled //c'est la a l appel de la form2 je souhaite bloquer les evenement qui suivent a savoir insert un nouvel items
    do
    begin

    end;
    Je rejoins Evarisnea , je te propose
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    form2.Enabled:=true;
    form2.ShowModal;
    //les 2 lignes qui suivent devienennt superflues
    while form2.Enabled //c'est la a l appel de la form2 je souhaite bloquer les evenement qui suivent a savoir insert un nouvel items
    dobegin end;
    Tant que ta Form2, ne sera pas fermée, le code apres
    le form2.ShowModal ne sera pas executé

    ShowModal, donne la main a ta fiche, en la mettant au premier plan.
    Tant qu'elle sera active, le code appelant sera "gelé"
    sauf les eventuels TTimers,et TThread il me semble.

Discussions similaires

  1. Comment mettre une pause dans un jeu
    Par Pulsar360 dans le forum AWT/Swing
    Réponses: 11
    Dernier message: 06/05/2013, 13h02
  2. Comment mettre une classe principal en pause, sans arreter les threads
    Par KOULARK dans le forum Débuter avec Java
    Réponses: 3
    Dernier message: 28/11/2009, 22h19
  3. [FLASH MX2004] Comment mettre une pause dans un script
    Par vbcasimir dans le forum Flash
    Réponses: 3
    Dernier message: 16/02/2006, 09h47
  4. [C#] Comment mettre une ligne en couleur dans mon DataGrid ?
    Par vandeyy dans le forum Windows Forms
    Réponses: 7
    Dernier message: 19/07/2004, 10h03
  5. Comment mettre une image en fond de JFrame
    Par marc26 dans le forum Débuter
    Réponses: 3
    Dernier message: 19/01/2004, 17h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo