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 :

ShowModal qui plante.


Sujet :

Langage 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 ShowModal qui plante.
    Bonjour à tous

    Voici une syntaxe qui plante ShowModal. Elle est pourtant identique à celle que j'ai l'habitude d'utiliser...

    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
     
     
    Procedure Appel_ITF_Saisie_Titre;  
    Var Retour : integer;
     
    begin
     
          Retour := Saisie_Titre_FLT.Form2.ShowModal;  // La renêtre s'appelle Saisie_Titre_FLT.DFM et le .PAS idem
     
          CASE Retour OF
              mrOK :
                  begin
                  end;
     
              mrAbort :
                  begin
                  end; 
          end; // Case
     
    end;
    Et j'ai cette erreur-là systématiquement à l'exécution (à travers l'IDE comme en dehors de l'IDE) :




    Très exactement à l'appel de ShowModal.

    Qu'est-ce qui m'arrive, là ? Merci...

  2. #2
    Rédacteur/Modérateur
    Avatar de ero-sennin
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    2 965
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 2 965
    Points : 4 935
    Points
    4 935
    Par défaut
    Salut,

    A mon avis, il doit manquer un create sur la fenêtre...
    Du moins, là comme ça, c'est ce que je dirai.

  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
    Citation Envoyé par ero-sennin Voir le message
    Salut,

    A mon avis, il doit manquer un create sur la fenêtre...
    Du moins, là comme ça, c'est ce que je dirai.
    Un create sur laquelle ? La Form appelée ?

  4. #4
    Rédacteur/Modérateur
    Avatar de ero-sennin
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    2 965
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 2 965
    Points : 4 935
    Points
    4 935
    Par défaut
    Sur la form Saisie_Titre_FLT.

    En fait, tu as une adresse null, donc il faut vérifier que Saisie_Titre_FLT soit bien instanciée, ainsi que form2.

  5. #5
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 654
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 654
    Points : 25 420
    Points
    25 420
    Par défaut
    Saisie_Titre_FLT c'est pas plutôt le nom de l'unité ?
    Il y a une différence entre ITF_Saisie_Titre et Saisie_Titre_FLT ?

    tu devrais renommer Form2 en SaisieTitreFLTForm, cela serait plus élégant !
    Attention aussi à l'utilisation de la variable Globale !
    Ne pas confondre:
    - nom de l'unité (uses)
    - nom de la Classe TForm2 dans ton cas
    - nom de la variable globale Form2 (ajouter automatiquement, à supprimer le plus tôt que possible !)

    Ce qui est étrange c'est 00000000, c'est rare qu'une variable mal initialisée soit à nil, tu n'aurais pas un FreeAndNil de Form2 avant ?

    J'ai passé un test de compétence, il y avait ce genre de question, et moi qui pensant le test facile !

    C'est marrant de faire une procédure, les méthodes statiques et la POO c'est encore un truc obscure !

  6. #6
    Rédacteur/Modérateur
    Avatar de ero-sennin
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    2 965
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 2 965
    Points : 4 935
    Points
    4 935
    Par défaut
    Citation Envoyé par ShaiLeTroll Voir le message
    Saisie_Titre_FLT c'est pas plutôt le nom de l'unité ?
    A oui, j'avais pas percuté là dessus!!

  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
    Citation Envoyé par ShaiLeTroll Voir le message
    Saisie_Titre_FLT c'est pas plutôt le nom de l'unité ?
    Il y a une différence entre ITF_Saisie_Titre et Saisie_Titre_FLT ?

    tu devrais renommer Form2 en SaisieTitreFLTForm, cela serait plus élégant !
    Attention aussi à l'utilisation de la variable Globale !
    Ne pas confondre:
    - nom de l'unité (uses)
    - nom de la Classe TForm2 dans ton cas
    - nom de la variable globale Form2 (ajouter automatiquement, à supprimer le plus tôt que possible !)

    Ce qui est étrange c'est 00000000, c'est rare qu'une variable mal initialisée soit à nil, tu n'aurais pas un FreeAndNil de Form2 avant ?

    J'ai passé un test de compétence, il y avait ce genre de question, et moi qui pensant le test facile !

    C'est marrant de faire une procédure, les méthodes statiques et la POO c'est encore un truc obscure !
    Alors : les fichiers du projet sont :

    Interface_Saisie_FLT.cfg
    Interface_Saisie_FLT.dof
    Interface_Saisie_FLT.dpr
    Interface_Saisie_FLT.res

    Saisie_Contient.dfm
    Saisie_Contient.pas

    Saisie_Ne_Contient_Pas.dfm
    Saisie_Ne_Contient_Pas.pas

    Saisie_Titre_FLT.dfm
    Saisie_Titre_FLT.pas

    Unit1.dfm // Form1, bien sûr
    Unit1.pas // Unité de la Form1

    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
      // du fichier .DPR
    program Interface_Saisie_FLT;
     
    uses
      Forms,
      Unit1 in 'Unit1.pas' {Form1},
      Var_Globales_Base_Articles in '..\Var_Globales_Base_Articles.pas',
      Procedures_Communes in '..\Procedures_Communes.pas',
      Saisie_Titre_FLT in 'Saisie_Titre_FLT.pas' {Form2},
      Saisie_Contient in 'Saisie_Contient.pas' {Form3},
      Saisie_Ne_Contient_Pas in 'Saisie_Ne_Contient_Pas.pas' {Form4};
     
    {$R *.res}
     
    begin
      Application.Initialize;
      Application.CreateForm(TForm1, Form1);
      Application.CreateForm(TForm2, Form2);
      Application.CreateForm(TForm3, Form3);
      Application.CreateForm(TForm4, Form4);
      Application.Run;
    end.

    Ca vous renseigne ? Là, je suis dans le bleu

  8. #8
    Rédacteur/Modérateur
    Avatar de ero-sennin
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    2 965
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 2 965
    Points : 4 935
    Points
    4 935
    Par défaut
    Tu pourrais nous montrer également le code de Saisie_Titre_FLT.pas stp ?

  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
    Citation Envoyé par ero-sennin Voir le message
    Tu pourrais nous montrer également le code de Saisie_Titre_FLT.pas stp ?
    En entier ? Ca donne ça :

    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
    86
    87
    88
    89
    90
    91
    92
     
    unit Saisie_Titre_FLT;
     
    interface
     
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, JvExStdCtrls, JvEdit, ExtCtrls;
     
    type
      TForm2 = class(TForm)
        Panel1: TPanel;
        JvEdit1: TJvEdit;
        Btn_Retour_Abandon: TButton;
        procedure FormActivate(Sender: TObject);
        procedure Btn_Retour_AbandonClick(Sender: TObject);
        procedure Btn_Retour_AbandonKeyPress(Sender: TObject; var Key: Char);
      private
        { Déclarations privées }
      public
        { Déclarations publiques }
      end;
     
     
    Procedure Pilote_Saisie_Titre_FLT;
    Procedure Retour;
     
     
     
    var
      Form2: TForm2;
     
     
     
    implementation
     
    {$R *.dfm}
     
     
    Uses Var_Globales_Base_Articles; 
     
     
     
    procedure TForm2.FormActivate(Sender: TObject);
    begin
     
            // Pilote_Saisie_Titre_FLT;   DEBUG (j'ai mis DEBUG parce que c'est provisoire, pr le débogage
            Form2.Btn_Retour_Abandon.SetFocus; 
    end;
     
     
     
    Procedure Pilote_Saisie_Titre_FLT;
    begin
     
          Form2.JvEdit1.SetFocus;
     
     
    end;
     
     
    Procedure Retour;
    begin
          if Saisie_Titre_Filtre_Abandonnee = True then Form2.ModalResult := mrAbort
          else
              begin
                    Saisie_Titre_Filtre_Terminee := True;
                    Form2.ModalResult := mrOK;
              end;
     
     
    end;
     
     
     
    procedure TForm2.Btn_Retour_AbandonClick(Sender: TObject);
    begin
          Saisie_Titre_Filtre_Abandonnee :=  True;
          Retour;
    end;
     
    procedure TForm2.Btn_Retour_AbandonKeyPress(Sender: TObject;
      var Key: Char);
    begin
            if Key = #27 then
                  begin
                        Saisie_Titre_Filtre_Abandonnee := True;
                        Retour;
                  end;
    end;
     
    end.

  10. #10
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 654
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 654
    Points : 25 420
    Points
    25 420
    Par défaut
    bvsud, tu n'es pas obligé de citer toute la réponse, tu peux juste écrire

    @shai, oui blablabla ...

    bvsud, tu DOIS nommer tes classes, c'est infame de laisser la numérotation automatique (Form1, Form2...), tu renommes les unités mais pas les classes ! c'est idiot !

    Pourquoi laisser les fiches Modales en création au démarrage du projet, il vaut mieux les créer à la volée !

    bvsud, as-tu déjà instancié une fenêtre par code ?

    Par Hazard, tu n'utiliserais pas Form2 (via Appel_ITF_Saisie_Titre) dans le OnCreate de Form1 ?

    Ce mélange procédure et méthode, c'est très drôle, on te paye pour ça ?
    Tu connais l'objet, la mot clé Self ? tu développe un projet perso en tant qu'amateur ?

    au lieu de #27, il est plus élégant d'utiliser VK_ESCAPE ou de mettre un commentaire si un autre développeur reprend et ne connait pas tous ses codes ANSI !

Discussions similaires

  1. Enncore un ShowModal qui plante !
    Par bvsud dans le forum Langage
    Réponses: 16
    Dernier message: 13/08/2012, 12h21
  2. [Novice] Problème avec Eclipse 3.0.x qui plante
    Par esolarc dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 27/05/2005, 13h22
  3. Programme qui plante
    Par harris_macken dans le forum C++
    Réponses: 1
    Dernier message: 22/05/2005, 23h50
  4. Pc qui plante
    Par tooms2028 dans le forum Ordinateurs
    Réponses: 9
    Dernier message: 19/03/2005, 17h32
  5. [JTextArea] redessin qui plante
    Par phil_ma dans le forum Composants
    Réponses: 3
    Dernier message: 04/01/2005, 05h19

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