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

Composants VCL Delphi Discussion :

Une fenêtre-message sans bouton


Sujet :

Composants VCL Delphi

  1. #1
    Membre régulier

    Profil pro
    Inscrit en
    Avril 2004
    Messages
    540
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 540
    Points : 123
    Points
    123
    Par défaut Une fenêtre-message sans bouton
    Bonjour tous

    Existe-t-il un composant (Jedi, TMS ou autre) qui afficherait à peu près ceci :


    http://data.imagup.com/10/1157987402.png

    L'utilisateur ne fait rien, il attend, et le prog fait lui-même disparaître le message lorsque c'est exactement le moment. Là, j'ai utilisé un AdvTaskDialog de TMS. Ca pourrait ressembler à ça... mais sans le bouton, bien sûr.

    P.S.: il me semble que ça porte un nom anglais - pr ne pas changer - mais j'ai oublié lequel...

    Merci

  2. #2
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 151
    Points : 41 331
    Points
    41 331
    Billets dans le blog
    63
    Par défaut
    Citation Envoyé par bvsud Voir le message
    il me semble que ça porte un nom anglais
    tu veux certainement parler d'une splashform (qui généralement apparait au lancement du programme)
    c'est une forme toute 'bête' , sans cadre ni bouton système, appelée via un showmodal (l'utilisateur n'a plus la main sur le programme) donc pas besoin de composant particulier , juste basculer le traitement
    il attend, et le prog fait lui-même disparaître le message lorsque c'est exactement le moment.
    dans cette forme

  3. #3
    Membre régulier

    Profil pro
    Inscrit en
    Avril 2004
    Messages
    540
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 540
    Points : 123
    Points
    123
    Par défaut
    Ah... OK ! Je compliquais pour rien, quoi

  4. #4
    Membre régulier

    Profil pro
    Inscrit en
    Avril 2004
    Messages
    540
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 540
    Points : 123
    Points
    123
    Par défaut
    Ca marche Résolu.

    Merci :hello:

  5. #5
    Membre régulier

    Profil pro
    Inscrit en
    Avril 2004
    Messages
    540
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 540
    Points : 123
    Points
    123
    Par défaut
    Citation Envoyé par SergioMaster Voir le message
    tu veux certainement parler d'une splashform (qui généralement apparait au lancement du programme)
    c'est une forme toute 'bête' , sans cadre ni bouton système, appelée via un showmodal (l'utilisateur n'a plus la main sur le programme) donc pas besoin de composant particulier , juste basculer le traitement dans cette forme
    Ben, non... Ce n'est pas résolu, en fin de compte

    Ca fonctionne sous XP, mais pas systématiquement. Sous SEven, jamais . J'ai ds tous les cas ce message d'erreur 123 (parfaitement inexplicable) et, qui plus est, la Form expédie mon prog vers une routine où il est déjà passé.

    Bref, le prog perd la tête...

    Le message est ici :
    http://data.imagup.com/10/1158660301.png

    ->> Désolé, l'image ne veut pas passer !! Elle représente le code erreur 123 des API de Win32.

    Précision : syntaxe d'appel :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
         Msg_Patientez_1.Form_Msg_Patientez.Show; 
         Msg_Patientez_1.Form_Msg_Patientez.Close;
    Même résultat avec ShowModal;

  6. #6
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 877
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 877
    Points : 11 367
    Points
    11 367
    Billets dans le blog
    6
    Par défaut
    Où se situe l'appel qui affiche l'écran d'attente ? Et celui qui le ferme ?

    Et surtout, que se passe-t-il entre les 2 ?

    Y a-t-il ouverture de fichiers ?

    Un peu de code aiderait pê à cerner le problème.

  7. #7
    Membre régulier

    Profil pro
    Inscrit en
    Avril 2004
    Messages
    540
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 540
    Points : 123
    Points
    123
    Par défaut
    Enormément de code, et tout autant d'accès disque !

    Je vais dire : un parcours entier du disque C:\ , effaçant tout ce qui traîne (.TMP, résidus de compilation, etc), sauvegarde de C: dur D: (ou autre lecteur cible de la sauvegarde) du répertoire Documents, Pictures, etc. Le code ? Je n'affiche que la procédure pilote, autrement l y en a un paquet !

    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
     
     
    Procedure La_Totale;
    Var   Retour : boolean;
     
    begin
          Retour := Quest_Confirmer_Lancement_Totale; (fonction retournant un booléen)
     
          if Retour = True then
          BEGIN
     
          Form1.Btn_Totale_Sans_Doubler.Enabled := False;
          Form1.Btn_Totale.Enabled := False;
          Form1.Btn_Totale_Sans_Nettoyage.Enabled := False;
          Form1.Btn_Doubler.Enabled := False;
     
    //      Msg_Patientez_1.Form_Msg_Patientez.Show;  // DEBUG  ATTENTION ICI !!
     
          Totale_En_Cours := True;  // variable dont différentes procédures ont besoin de connaître la valeur
     
          Form1.CoolTrayIcon1.IconVisible := True;  // Ici, un appel à CoolTrayIcon. Aucun pb. 
          Form1.CoolTrayIcon1.ShowBalloonHint('SAUVEGARDE SEVEN',
                                              'SAUVEGARDE TOTALE EN COURS, AVEC DUPLICATION. Opération très longue. Patienter . . .',
                                               bitInfo, // ?
                                               60); // Nb secondes d'affichage
     
     
     
     
    // C'est là que ça commence vraiment ....
          // Nettoyage du DD --------------------------
          Pilote_Supp_F_Temp;
     
          // SAUVEGARDES ------------------------------
          Sauve_Mes_Docs;
          Sauve_F_Config;
          Sauvegarde_Recherches_Copernic;
          Pilote_Sauvegarde_RSS_Bandit;
     
          Pilote_Sauvegarde_Tout_Mozilla;
          Vidanger_Corbeille;
          Vidanger_Presse_Papiers;
     
          Doubler_Sauvegarde_Complete;  // Un sous-rep est créé, sur D: (ou tout autre lecteur pris pour cible de la sauvcegarde : c'est paramétrable). 
          																 Son nom est du format : Mercredi 21 janvier 2012 à 15 H 36 . 
     
     
          // ------------------------------------------
          Form1.CoolTrayIcon1.IconVisible := False;
          Form1.StatusBar1.SimpleText := 'SAUVEGARDE TOTALE : TERMINEE';
          Totale_En_Cours := False;
     
    //      Msg_Patientez_1.Form_Msg_Patientez.Close;   // DEBUG  ATTENTION ICI !!
     
          END; // Confirmer lancement Tolate ?
     
          Form1.Btn_Quitter.SetFocus;
     
    end;
    Même si j'appelle la form avec la syntaxe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Msg_Patientez_1.Form_Msg_Patientez.ShowModal
    ça foire aussi.

    La Form elle-même, tout comme le .PAS qui va avec sont ridiculement courts et vides à côté de mon style... un peu lourdeau

  8. #8
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 877
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 877
    Points : 11 367
    Points
    11 367
    Billets dans le blog
    6
    Par défaut
    Rappelons ton message d'erreur : "Nom de fichier, de répertoire ou de volume incorrect"...

    Avant d'incriminer ta SplashForm, as-tu testé individuellement chaque procédure ? Aucune n'entraîne cette même erreur ?

  9. #9
    Membre régulier

    Profil pro
    Inscrit en
    Avril 2004
    Messages
    540
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 540
    Points : 123
    Points
    123
    Par défaut
    "(...) as-tu testé individuellement chaque procédure ? Aucune n'entraîne cette même erreur". Eh oui ! Et pas qu'une seule fois. Rien là-dedans n'est bogué, tant que je ne rajoute pas la SplashForm.

    En voici les sources, à tout hasard :

    Le fichier .DFM
    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
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
     
    object Form_Msg_Patientez: TForm_Msg_Patientez
      Left = 628
      Top = 437
      Align = alCustom
      AutoSize = True
      BorderIcons = []
      BorderStyle = bsDialog
      BorderWidth = 1
      ClientHeight = 110
      ClientWidth = 470
      Color = clBtnFace
      Font.Charset = ANSI_CHARSET
      Font.Color = clWindowText
      Font.Height = -13
      Font.Name = 'Times New Roman'
      Font.Style = [fsBold]
      OldCreateOrder = False
      Position = poMainFormCenter
      PrintScale = poNone
      PixelsPerInch = 96
      TextHeight = 15
      object Panel1: TPanel
        Left = 0
        Top = 0
        Width = 470
        Height = 110
        Align = alClient
        BevelInner = bvRaised
        BevelWidth = 3
        TabOrder = 0
        object XiPanel1: TXiPanel
          Left = 6
          Top = 6
          Width = 458
          Height = 98
          ColorFace = clWhite
          ColorGrad = 16769217
          ColorLight = 15767117
          ColorDark = 11753728
          ColorScheme = csSky
          FillDirection = fdHorizontal
          Align = alClient
          TabOrder = 0
          UseDockManager = True
          object Label1: TLabel
            Left = 172
            Top = 32
            Width = 122
            Height = 22
            Align = alCustom
            Alignment = taCenter
            Caption = 'PATIENTER :'
            Font.Charset = ANSI_CHARSET
            Font.Color = clWindowText
            Font.Height = -19
            Font.Name = 'Times New Roman'
            Font.Style = [fsBold]
            ParentFont = False
            Transparent = True
          end
          object Label2: TLabel
            Left = 14
            Top = 62
            Width = 425
            Height = 22
            Align = alCustom
            Alignment = taCenter
            Caption = 'le TRAITEMENT EN COURS EST un PEU LONG'
            Font.Charset = ANSI_CHARSET
            Font.Color = clWindowText
            Font.Height = -19
            Font.Name = 'Times New Roman'
            Font.Style = [fsBold]
            ParentFont = False
            Transparent = True
          end
        end
      end
      object JvTransparentForm1: TJvTransparentForm
        Active = True
        Left = 350
        Top = 22
      end
    end

    Le fichier .PAS
    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
     
    unit Msg_Patientez_1;
     
    interface
     
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, ExtCtrls, XiPanel, JvComponentBase, JvFormTransparent, StdCtrls;
     
    type
      TForm_Msg_Patientez = class(TForm)
        Panel1: TPanel;
        XiPanel1: TXiPanel;
        JvTransparentForm1: TJvTransparentForm;
        Label1: TLabel;
        Label2: TLabel;
      private
        { Déclarations privées }
      public
        { Déclarations publiques }
      end;
     
    var
      Form_Msg_Patientez : TForm_Msg_Patientez;
     
    implementation
     
    {$R *.dfm}
     
    end.
    En revanche, pas encore testé sans le JvFormTransparent... Vais tester.

  10. #10
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 877
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 877
    Points : 11 367
    Points
    11 367
    Billets dans le blog
    6
    Par défaut
    dans ce cas, rien de tel qu'un fichier de log pour voir (sous Seven) où ça plante

  11. #11
    Membre régulier

    Profil pro
    Inscrit en
    Avril 2004
    Messages
    540
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 540
    Points : 123
    Points
    123
    Par défaut
    C'est ce que je vais faire, même si , en mode trace, j'ai bien vu la ligne de code qui foire (sur un ChDir(Rep) .

    Reste à savoir pourquoi le prog repasse là...

    Et la Form ? Son code paraît-il correct ?

Discussions similaires

  1. Boîte de message sans bouton "Veuillez patienter..."
    Par Droïde Système7 dans le forum Delphi
    Réponses: 18
    Dernier message: 14/02/2007, 10h38
  2. Réponses: 1
    Dernier message: 17/10/2006, 16h01
  3. Trouver un la handle d'une fenêtre cachée sans FindWindow()
    Par Jean-Philippe Shields dans le forum Windows
    Réponses: 3
    Dernier message: 24/02/2006, 12h08
  4. Réponses: 5
    Dernier message: 06/07/2005, 14h51
  5. Réponses: 1
    Dernier message: 11/04/2005, 09h59

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