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

XMLRAD Discussion :

Génération ProgressBar Delphi, XMLRAD


Sujet :

XMLRAD

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 94
    Points : 58
    Points
    58
    Par défaut Génération ProgressBar Delphi, XMLRAD
    Bonjour,
    J'ai bien suivi les indications trouvées ici pour piloter ma progress depuis Delphi.

    J'ai d'abord :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    XMLInstruction := XMLGram.GetXMLInstruction('MyProgress');
    if(XMLInstruction = nil) then showmessage('Instruction Progress non trouvée !');
    Progress := TProgress(XMLInstruction.Get_ObjectReference);
    Puis, dans un repeat (sur le contenu d'un dossier), j'ai :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Progress.Current := 0;
    Progress.MaxField := IntToStr(var);
    Mon pb : à l'affichage, ma progress indique un max toujours égal à 100, ne tenant apparement pas compte de l'affection précédente ! Qq'un a t'il une idée ?

    Merci de votre indulgence ...

    NB

  2. #2
    RDM
    RDM est déconnecté
    Membre émérite

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    1 424
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 424
    Points : 2 927
    Points
    2 927
    Par défaut
    http://xmlrad.com/DelosXMLRADBin/Del...01015#Progress

    MaxField est le nom du champ dans le Context qui contient la valeur max.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 94
    Points : 58
    Points
    58
    Par défaut
    Ok j'ai donc fais dans Delphi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Context.SetValue('MaxField',IntToStr(nbLinesCSV));
    Context.SetValue('Current','0');
    puis dans XMLRAD dans le champ MaxField : {$MaxField}

    ainsi que dans le ProgressLabel :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    {$Current} / {$MaxField}
    et bien sûr, j'ai rajouté en params de mon XMLGramOnly Current et MaxField. (Source Context, Destination Field Output) ...

    Mon progress label affiche bien le bon maxfield transmis (Delphi=>Context=>XMLRAD) mais le compteur semble ne pas tenir compte de cette affectation en Context ! (il affiche tjs /100).

    Si tu as une idée ... ? Merci d'avance

    NB

  4. #4
    RDM
    RDM est déconnecté
    Membre émérite

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    1 424
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 424
    Points : 2 927
    Points
    2 927
    Par défaut
    nop, dans MaxFields il doit y a voir le nom du champs du Context

    example:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Context.SetValue('nbLinesCSV',IntToStr(nbLinesCSV));
    puis dans XMLRAD dans le champ MaxField : nbLignesCSV

    pour le progressLabel c'est ok, il faut bien des templates properties pour récupérer la valeur du context !

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 94
    Points : 58
    Points
    58
    Par défaut
    Effectivement ...

    Merci

    NB

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 94
    Points : 58
    Points
    58
    Par défaut
    Le maxfield fonctionne donc, mais le curent semble additionner les valeurs des précédentes progress. Dans delphi j'ai en fait:

    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
    repeat
    ...
       if() then
       begin
          Context.SetValue('MaxFieldA',IntToStr(nbLinesCSVA));
          for i:=0 to nbLinesCSV-1 do
          begin
             Context.SetValue('CurrentA',IntToStr(i+1));
             ProgressA.DoProcess(Context, InputDoc, OutputDoc);
             ...
          end;
       end;
     
       if() then
       begin
          Context.SetValue('MaxFieldB',IntToStr(nbLinesCSVB));
          for i:=0 to nbLinesCSVB-1 do
          begin
             Context.SetValue('CurrentB',IntToStr(i+1));
             ProgressB.DoProcess(Context, InputDoc, OutputDoc);
             ...
          end;
       end;
       ... suivi d'autres ifs identiques
     
    until
    Le pb est qu'à l'affichage, celà me génère à la fin par ex : 236/183 alors que, pour débuguer, celà affiche bien dans mon progress label ({$CurrentB} / {$MaxFieldB}) : 186/186 ... Après débug, A retourne effectivement 236-186=50results. Le current de la progress n'est donc pas RAZ ! Pourtant à chaque for, i retourne bien 0, et le renvoie en context.

    Si tu peux m'aider à terminer ca, après je t'embète plus (sur la progress )

  7. #7
    RDM
    RDM est déconnecté
    Membre émérite

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    1 424
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 424
    Points : 2 927
    Points
    2 927
    Par défaut
    en fait les barres de progression partage dans le context le XMLC_Progress.Current qu'il te faut réinitialiser à 0 ou à blanc

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 94
    Points : 58
    Points
    58
    Par défaut
    Oui en effet, j'aurai voulu te dire que j'avais mis Context.SetValue('XMLC_Progress.Current','0'); après recherches, mais le site était off, sorry .. Il me reste maintenant à comprendre pourquoi le nextaction de mon XMLGramOnly (contenant mes progress) ne semble pas tenir compte du NextAction (PS: je suis dans une iframe, ca pose pb ?)

    A bientot

    NB

  9. #9
    RDM
    RDM est déconnecté
    Membre émérite

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    1 424
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 424
    Points : 2 927
    Points
    2 927
    Par défaut
    le NextAction ne peut pas fonctionner quand on utilise des ProgressBar
    il faut qu'il y ait une action utilisateur a partir de la page ou il y al es progress ou la page contenant l'iframe...
    pourquoi ?
    parce que les progressbar utilise une technique spéciale d'écriture de la réponse au fur et à mesure.Or a partir du moment ou les progressbar sont démarrés, la réponse à la requête qui les a déclenchée est déjà envoyé au navigateur, donc trop tard pour effectuer un autre XMLService et renvoyer une autre page HTML.

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 94
    Points : 58
    Points
    58
    Par défaut
    Ma page contient un formulaire qui poste le resultat dans l'iframe (XMLGramOnly avec plusieurs progress), de manière à garder les critères visibles lorsque déroulent les progress en dessous. A la fin du traitement, j'aurai voulu redirigé (dans mon iframe via le nextaction) un sorte de bilan des tâches effectuées. En y repensant, peut etre aurait-il été possible de créer un DIV à la place d'iframe et de piloter via AJAX l'état de mes progress, permettant le NextAction cette fois ... hum

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 94
    Points : 58
    Points
    58
    Par défaut
    Pb contourné :
    - création d'une progressFake
    - rajout de document.location.href='url'; sur le EndScript de celle ci et voilà ...
    ... étant donné que j'avais pas le droit au nextaction :-)

  12. #12
    RDM
    RDM est déconnecté
    Membre émérite

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    1 424
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 424
    Points : 2 927
    Points
    2 927
    Par défaut
    oui voila tu as trouvé la solution

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 8
    Dernier message: 02/02/2006, 18h07
  2. Delphi 2006 & XMLRAD 2005
    Par Lux interior dans le forum XMLRAD
    Réponses: 4
    Dernier message: 22/12/2005, 20h35
  3. Migration Delphi 7 vers XMLRAD
    Par Francis dans le forum XMLRAD
    Réponses: 3
    Dernier message: 28/09/2005, 17h42
  4. Progressbar Delphi/Oracle
    Par Angele dans le forum Bases de données
    Réponses: 2
    Dernier message: 13/06/2004, 11h04
  5. Delphi et XMLRAD pour un calendrier
    Par Toxine77 dans le forum XMLRAD
    Réponses: 9
    Dernier message: 23/01/2003, 13h56

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