p
u
b
l
i
c
i
t
é
publicité

Discussion: IHM bloquée ou pas

  1. #1
    Membre à l'essai
    Inscrit en
    juin 2004
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : juin 2004
    Messages : 74
    Points : 22
    Points
    22

    Par défaut IHM bloquée ou pas

    Bonjour,

    mon contexte : DELPHI7/WIN 7

    Résumé : boucle infinie dans une fiche qui bloque l'accès aux controls de cette fiche mais pas à ceux d'une autre fiche de l'application.

    Voilà la situation plus détaillée :

    J'ai une frame (un cadre) placé dans une Fiche (FORM1).

    Voici quelques éléments de code de cette frame (FNextTep est un champs
    de TFrame) :

    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
    procedure tFrame.execute;
    begin
      FNextStep:=True;
      boucle;
    end;
     
    procedure tFrame.boucle;
    begin
       //...quelques instructions
       while not FNextStep do
       begin
          application.processMessages
       end;
       FNextStep:=false;
     
    end;
     
    procedure tFrame.monEvt;
    begin
       FNextStep:=true;
    end;
    L'évênement "tFrame.monEvt" est associé à un toolbouton dans une toolBar de ma tFrame.

    Au runtime lorsque je lance le "TFrame.execute" alors je ne peux plus actionner mon toolbouton et je ne peux donc plus stopper ma procédure
    "TFrame.boucle".

    En revanche si dans le "TFrame.execute" je crée et j'affiche une autre fiche (FORM2) dans laquelle je mets une copie de la toolbar avec le toolBouton auquel j'associe "tFrame.monEvt", Alors, après avoir lancé le "TFrame.execute" le "toolBouton" de FORM2 est actif et me permet de stopper la procédure "TFrame.boucle".

    Cette façon de faire avec une fiche n°2 permettant de contrôler ce qui se passe dans la fiche n°1 est assez bien adaptée à mon besoin. (je n'ai pas besoin de Threads). Mais j'aimerai bien des explications sur ce qui se passe...

    Merci beaucoup de votre attention....

  2. #2
    Membre à l'essai
    Inscrit en
    juin 2004
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : juin 2004
    Messages : 74
    Points : 22
    Points
    22

    Par défaut

    Oups! une erreur de frappe il fallait lire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    procedure tFrame.execute;
    begin
      FNextStep:=False;
      boucle;
    end;
    désolé...

  3. #3
    Membre chevronné Avatar de peter27x
    Inscrit en
    janvier 2007
    Messages
    1 024
    Détails du profil
    Informations forums :
    Inscription : janvier 2007
    Messages : 1 024
    Points : 675
    Points
    675

    Par défaut

    Une solution peut être de placer ton traitement long dans un thread séparé que tu lanceras depuis ton appli... ainsi ton toolbar restera actif, car totalement indépendant du traitement long (c'est le principe du multi thread, que j'ai déjà testé sous Delphi : ça marche nickel).

  4. #4
    Membre à l'essai
    Inscrit en
    juin 2004
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : juin 2004
    Messages : 74
    Points : 22
    Points
    22

    Par défaut

    Mon problème n'est pas de trouver une solution (puisqu'il existe une façon d'avoir le comportement qui m'intéresse) mais de comprendre techniquement les deux comportements différents que j'obtiens :

    Résumé : boucle infinie dans une fiche qui bloque l'accès aux controls de cette fiche mais pas à ceux d'une autre fiche de l'application.

    Existe-il une forme de "bloquage" des messages dues aux Frames ?

    Merci

  5. #5
    Expert Confirmé Sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    novembre 2002
    Messages
    6 124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : novembre 2002
    Messages : 6 124
    Points : 18 007
    Points
    18 007

    Par défaut

    je viens de faire un test rapide sous Delphi 6, je ne constate pas de problème

    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
     
    unit Unit2;
     
    interface
     
    uses 
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
      ComCtrls, ToolWin, StdCtrls;
     
    type
      TFrame2 = class(TFrame)
        Button1: TButton;
        Button2: TButton;
        ToolBar1: TToolBar;
        ToolButton1: TToolButton;
        CheckBox1: TCheckBox;
        procedure ToolButton1Click(Sender: TObject);
        procedure Button2Click(Sender: TObject);
        procedure Button1Click(Sender: TObject);
      private
        { Déclarations privées }
      public
        { Déclarations publiques }
      end;
     
    implementation
     
    {$R *.dfm}
     
    procedure TFrame2.ToolButton1Click(Sender: TObject);
    begin
      ShowMessage('ToolButton');
    end;
     
    procedure TFrame2.Button2Click(Sender: TObject);
    begin
      ShowMessage('Button2');
    end;
     
    procedure TFrame2.Button1Click(Sender: TObject);
    begin
      while not Application.Terminated do
      begin
        CheckBox1.Checked := not CheckBox1.Checked;
        Application.ProcessMessages;
      end;
    end;
     
    end.
    en cliquant sur Button1, CheckBox1 se met à clignoter, tandis Button2 et ToolButton1 affichent bien leur message.
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Produits : UPnP, RemoteOffice, FlashPascal

  6. #6
    Membre à l'essai
    Inscrit en
    juin 2004
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : juin 2004
    Messages : 74
    Points : 22
    Points
    22

    Par défaut

    Je dois donc avoir quelque chose d'autre qui bloque.
    Merci

Discussions similaires

  1. Suivi de fabrication bloqué si pas de stock
    Par x3rbt95 dans le forum SAGE
    Réponses: 5
    Dernier message: 05/07/2013, 00h14
  2. Ordinateur bloqué, mais pas complètement
    Par Seryus dans le forum Windows 7
    Réponses: 19
    Dernier message: 22/02/2013, 19h37
  3. Ihm bloqué pendant le traitement
    Par 304bl dans le forum Interfaces Graphiques en Java
    Réponses: 5
    Dernier message: 20/04/2011, 19h45
  4. Accès du site bloqué si pas de sessions
    Par dztcid dans le forum Sessions
    Réponses: 5
    Dernier message: 12/05/2010, 21h23
  5. Réponses: 8
    Dernier message: 25/11/2005, 18h38

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