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

Langage Delphi Discussion :

Ouvrir plusieurs fiches dans mon applicarion OnShow TTimer


Sujet :

Langage Delphi

  1. #1
    Futur Membre du Club
    Inscrit en
    Février 2004
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 15
    Points : 6
    Points
    6
    Par défaut Ouvrir plusieurs fiches dans mon applicarion OnShow TTimer
    Comment faire sous Delphi 5 de sorte à ouvrir une fiche, travailler dessus, puis, sans la fermer, ouvrir une autre fiche pour une consultation ou une saisie par exemple. Ensuite passer d'une fiche à une autre sans nécessairement fermer l'une ou l'autre ?

  2. #2
    Membre confirmé
    Avatar de Philippe Gormand
    Inscrit en
    Mars 2002
    Messages
    330
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 330
    Points : 647
    Points
    647
    Par défaut Fiches multiples ??
    Bonjour.

    Heu ! Franchement je ne comprends pas ton problème. Tu peux ouvrir
    autant de fiches que tu veux et passer de l'une à l'autre sans problème.

    Il te suffit de les ouvrir avec la méthode Show.
    Par contre si tu l'ouvre avec la méthode ShowModal tu sera bloqué car
    obligé de fermer la fiche pour passer à une autre.

    Consulte l'aide de la classe TForm sur les méthodes Show et ShowModal.
    Rien n'est moins sur que l'incertain : Pierre DAC

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    108
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 108
    Points : 89
    Points
    89
    Par défaut
    Bonjour,

    Tu vas dans ton repertoir avec le poste de travail par exemple puis du ouvre le fichier *.PAS: ainsi tu n'ouvre que la fiche et pas le projet. Tu peut consulter, imprimer, copier/coller sans soucis...

  4. #4
    Membre expert
    Avatar de aityahia
    Homme Profil pro
    CIEPTAL CARS SPA
    Inscrit en
    Mars 2006
    Messages
    1 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Algérie

    Informations professionnelles :
    Activité : CIEPTAL CARS SPA
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 938
    Points : 3 329
    Points
    3 329
    Par défaut
    lors de ouverture des fiches vous utiliser la fonction ShowModal utilise plutot Show

  5. #5
    Membre confirmé
    Avatar de Philippe Gormand
    Inscrit en
    Mars 2002
    Messages
    330
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 330
    Points : 647
    Points
    647
    Par défaut Fiche
    Franchement je me demande si quelqu'un a compris ton problème.

    Parles tu de travailler sur plusieur fiches en mode conception, ou dans
    programme compilé ?

    A+
    Rien n'est moins sur que l'incertain : Pierre DAC

  6. #6
    Futur Membre du Club
    Inscrit en
    Février 2004
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 15
    Points : 6
    Points
    6
    Par défaut Travailler simultanément sur deux fiches en mode exécution
    Quand j'utilise Show pour ouvrir une fiche, le programme ne s'y arrête pas comme avec ShowModal, mais il se poursuit sur la ligne suivante.

  7. #7
    Membre confirmé
    Avatar de Philippe Gormand
    Inscrit en
    Mars 2002
    Messages
    330
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 330
    Points : 647
    Points
    647
    Par défaut Show
    C'est parfaitement normal. Mais je n'ai toujours pas compris ton
    problème.

    Il faut que tu sois très explicite, clair et précis pour expliquer ton
    problème et la difficulté que tu rencontre pour réaliser ce que tu voudrais
    faire.

    De grâce, explique clairement le problème, où les gens se lasseront.

    A+
    Rien n'est moins sur que l'incertain : Pierre DAC

  8. #8
    Futur Membre du Club
    Inscrit en
    Février 2004
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 15
    Points : 6
    Points
    6
    Par défaut Travailler simultanément sur deux fiches en mode exécution
    Bonjour

    OK Je vais expliquer mon problème.

    J'ai une fiche de saisie des lignes d'écritures comptables. Au cours de la saisie, un bouton me permet d'aller consulter le compte correspondant à une ligne d'écriture. L'ouverture de cette 2ème fiche prends un peu de temps parce qu'il fait plein de chose. C'est normal. Je voudrais donc ouvrir cette 2ème fiche une première fois pour consulter un compte, ensuite, sans la fermer, rentrer sur ma 1ère fiche continuer la saisie, revenir après pour consulter un autre compte sans rouvrir la 2ème fiche sinon cela prendrait à chaque fois un peu plus de temps

    Merci

  9. #9
    Membre expert
    Avatar de aityahia
    Homme Profil pro
    CIEPTAL CARS SPA
    Inscrit en
    Mars 2006
    Messages
    1 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Algérie

    Informations professionnelles :
    Activité : CIEPTAL CARS SPA
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 938
    Points : 3 329
    Points
    3 329
    Par défaut
    je pense que vous pouvez utiliser Show il faut juste revoir votre code pour que le Traitement s'arrete lorsque vous activé l'autre fiche tu peut utilisze les évenement OnActivate

  10. #10
    Membre confirmé
    Avatar de Philippe Gormand
    Inscrit en
    Mars 2002
    Messages
    330
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 330
    Points : 647
    Points
    647
    Par défaut Timer
    Bonjour.

    Tu peux utiliser un TTimer pour faire le traitement. C'est un truc que
    j'utilise souvent. L'interret est de faire le traitement en temps masqué.
    Si tu fait ton traitement dans l'événement OnActivate sans problème,
    c'est une bonne solution. Si non tu peux faire comme ceci :

    Place un TTimer sur la fiche avec la propriété Enabled à false par défaut.

    Dans l'événement OnShow de la fiche, tu active le Timer (propriété
    Enabled à True. Intervall à 500 ms par exemple.

    Cela donne ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    procedure TForm2.FormShow(Sender : TObject);
    begin
         Timer1.Enabled := True;
    end;
     
    procedure TForm2.Timer1Timer(Sender : TObject);
    begin
         Timer1.Enebled := False;
     
         // Traitement
     
    end;
    L'interret c'est que tout le traitement se fera en temps masquer sans
    gener quoi que ce soit.
    Le Timer va fonctionner un peu comme un Thread et c'est beaucoup plus
    simple à utiliser.

    A+
    Rien n'est moins sur que l'incertain : Pierre DAC

  11. #11
    Futur Membre du Club
    Inscrit en
    Février 2004
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 15
    Points : 6
    Points
    6
    Par défaut Merci, je vais essayer
    Merci

    Je vais essayer et je vais vous rendre compte

    Merci une fois de plus,

    Merci pour le forum

  12. #12
    Membre éclairé Avatar de slimjoe
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2005
    Messages : 647
    Points : 789
    Points
    789
    Par défaut Re: Timer
    Citation Envoyé par Philippe Gormand
    Bonjour.

    Tu peux utiliser un TTimer pour faire le traitement. C'est un truc que
    j'utilise souvent. L'interret est de faire le traitement en temps masqué.
    Si tu fait ton traitement dans l'événement OnActivate sans problème,
    c'est une bonne solution. Si non tu peux faire comme ceci :

    Place un TTimer sur la fiche avec la propriété Enabled à false par défaut.

    Dans l'événement OnShow de la fiche, tu active le Timer (propriété
    Enabled à True. Intervall à 500 ms par exemple.

    Cela donne ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    procedure TForm2.FormShow(Sender : TObject);
    begin
         Timer1.Enabled := True;
    end;
     
    procedure TForm2.Timer1Timer(Sender : TObject);
    begin
         Timer1.Enebled := False;
     
         // Traitement
     
    end;
    L'interret c'est que tout le traitement se fera en temps masquer sans
    gener quoi que ce soit.
    Le Timer va fonctionner un peu comme un Thread et c'est beaucoup plus
    simple à utiliser.

    A+
    Salut Philippe,

    Je ne comprends pas l'utilité de faire le traitement dans le timer au lieu de le faire exécuter directement dans le OnShow. Est-ce que tu pourrais m'expliquer stp ?

    Merci

    - Slimjoe
    -Slimjoe

  13. #13
    Futur Membre du Club
    Inscrit en
    Février 2004
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 15
    Points : 6
    Points
    6
    Par défaut Travailler sur + de 2 fiches
    En plus ce n'est pas un traitement en arrière plan que l'on veut faire. Il s'agit d'afficher par exemple une fiche de saisie des lignes d'écriture comptables par exemple, se mettre à saisir des lignes et :

    - soit valider la saisie et quitter pour retourner au menu,
    - soit aller consulter des renseignements sur un compte, puis sans fermer la fiche de ce compte, revenir continuer la saisie des lignes

    Comment procéder exactement sans utiliser ShowModal ?

  14. #14
    Membre confirmé
    Avatar de Philippe Gormand
    Inscrit en
    Mars 2002
    Messages
    330
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 330
    Points : 647
    Points
    647
    Par défaut Timer
    Bon ! OK.
    Je n'ai peut être pas compris le problème de FONKOU.
    Mais pour répondre à slimjoe sur l'utilisation d'un timer. C'est un vieux
    truc qui résoud pas mal de problèmes.

    Supposons que le traitement à faire soit très long. Cela peut gêner le
    reste de l'application si il est placé dans l'événement OnShow ou
    OnActivate car la fiche ne rendra pas la main tant que le traitement ne
    sera pas terminé.
    Deuxièmme cas : Si le traitement fait un appel à SetFocus (par exemple)
    alors que la fiche n'est pas encore réellement active, il y aura plantage
    puisque l'on ne peut pas placer le focus sur un WinControle si il n'est pas
    visible.

    Donc, placer le code du traitement en question dans un TTimer qui se
    declanchera après un délai comander par l'événement OnShow ou
    OnActivate va permetre à la fiche de terminer son activation ou son
    affichage, avant que le traitement commence.

    Ensuite, si dans le traitement il n'y a pas de code qui peu bloquer le
    déroulement de l'application, le traitement se fera dans la procedure de
    l'événement Timer, en temps masqué, et on poura faire autre chose pendant ce temps.

    Comme je l'ai montré :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    procedure TForm2.FormShow(Sender : TObject); 
    begin 
         Timer1.Enabled := True; 
    end; 
     
    procedure TForm2.Timer1Timer(Sender : TObject); 
    begin 
         Timer1.Enebled := False; 
     
         // Traitement 
     
    end;
    Il suffit de fixer un interval de 200 ms pour que ça marche. C'est un truc
    que j'ai utilisé souvent.
    Rien n'est moins sur que l'incertain : Pierre DAC

  15. #15
    Membre éclairé Avatar de slimjoe
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2005
    Messages : 647
    Points : 789
    Points
    789
    Par défaut Re: Timer
    Citation Envoyé par Philippe Gormand
    Bon ! OK.
    Je n'ai peut être pas compris le problème de FONKOU.
    Mais pour répondre à slimjoe sur l'utilisation d'un timer. C'est un vieux
    truc qui résoud pas mal de problèmes.

    Supposons que le traitement à faire soit très long. Cela peut gêner le
    reste de l'application si il est placé dans l'événement OnShow ou
    OnActivate car la fiche ne rendra pas la main tant que le traitement ne
    sera pas terminé.
    Deuxièmme cas : Si le traitement fait un appel à SetFocus (par exemple)
    alors que la fiche n'est pas encore réellement active, il y aura plantage
    puisque l'on ne peut pas placer le focus sur un WinControle si il n'est pas
    visible.

    Donc, placer le code du traitement en question dans un TTimer qui se
    declanchera après un délai comander par l'événement OnShow ou
    OnActivate va permetre à la fiche de terminer son activation ou son
    affichage, avant que le traitement commence.

    Ensuite, si dans le traitement il n'y a pas de code qui peu bloquer le
    déroulement de l'application, le traitement se fera dans la procedure de
    l'événement Timer, en temps masqué, et on poura faire autre chose pendant ce temps.

    Comme je l'ai montré :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    procedure TForm2.FormShow(Sender : TObject); 
    begin 
         Timer1.Enabled := True; 
    end; 
     
    procedure TForm2.Timer1Timer(Sender : TObject); 
    begin 
         Timer1.Enebled := False; 
     
         // Traitement 
     
    end;
    Il suffit de fixer un interval de 200 ms pour que ça marche. C'est un truc
    que j'ai utilisé souvent.
    Merci pour le truc

    - Slimjoe
    -Slimjoe

Discussions similaires

  1. Plusieurs Count dans mon select
    Par thomfort dans le forum Requêtes
    Réponses: 1
    Dernier message: 16/03/2007, 17h39
  2. [GD] Redimension d'image - plusieurs erreurs dans mon script
    Par Henry9 dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 18/02/2007, 10h58
  3. Registre : Ouvrir les .dtd dans mon navigateur
    Par prgasp77 dans le forum Windows XP
    Réponses: 4
    Dernier message: 16/10/2006, 03h32
  4. [jsp] - ouvrir un pdf dans mon browser IE
    Par karibouxe dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 19/05/2006, 15h42
  5. création de plusieurs fiches dans un meme formulaire...
    Par Toff !!!!! dans le forum Access
    Réponses: 3
    Dernier message: 13/10/2005, 13h44

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