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

 Delphi Discussion :

je suis bloquer dans l'utilisation de uses unite1/unite2


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    175
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2009
    Messages : 175
    Par défaut je suis bloquer dans l'utilisation de uses unite1/unite2
    Salut
    je sais que ma question est bete mais je la pose quand même
    J'ai un petit problème!!
    je suis entrain de m'entrainer comment je peux me servir de Uses en ouvrant +sieur Form.
    le probleme c'est que Form2 une fois elle est affiché elle execute aucune procedures;
    je vous envoi une petite partie de mon code et essayez de le compiler, vous allez voir:
    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
    program Project1;
     
    uses
      Forms,
      Unit1 in 'Unit1.pas' {Form1},
      Unit2 in 'Unit2.pas' {Form2};
     
    {$R *.res}
     
    begin
      Application.Initialize;
      Application.CreateForm(TForm1, Form1);
      Application.CreateForm(TForm2, Form2);
      Application.Run;
    end.
    Code de l'unit1
    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
    unit Unit1;
     
    interface
     
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;
     
    type
      TForm1 = class(TForm)
        Button1: TButton;
        Button2: TButton;
        LabelForm1: TLabel;
        procedure Button1Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;
     
    var
      Form1: TForm1;
     
    implementation
     
    {$R *.dfm}
    uses
    unit2;
     
    procedure TForm1.Button1Click(Sender: TObject);
    begin
    form2.show;
    labelForm1.Caption:='1';
     
    end;
     
    end.
    code de l'unit2
    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
    unit Unit2;
     
    interface
     
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;
     
    type
      TForm2 = class(TForm)
        LabelForm2: TLabel;
        procedure FormShow (Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;
     
    var
      Form2: TForm2;
     
    implementation
    uses
    unit1;
     
    {$R *.dfm}
      procedure TForm2.FormShow (Sender: TObject);
    begin
     labelForm2.Caption:= '5';
    end;
     
    end.

  2. #2
    Membre Expert
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mai 2008
    Messages
    2 400
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 400
    Par défaut
    Salut;

    comme tout le travail (ou presque) se fait en mémoire faudrait que ton forme pointe sur une adresse autrement dit elle doit-être créé. Si tu as bien regardé l'ordre de création dans ton projet on ne peut pas appeler une forme qui n'a pas encore été créé. Pour détourner ce petit problème utilise Assigned :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    procedure TForm1.Button1Click(Sender: TObject);
    begin
       if Assigned(Form2) then
       begin
         form2.show;
         labelForm1.Caption:='1';
      end
    end;

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    175
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2009
    Messages : 175
    Par défaut
    Salut
    oui je comprend bien mais le problème est toujours pas résolu

  4. #4
    Membre Expert
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mai 2008
    Messages
    2 400
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 400
    Par défaut
    Re;

    d'abord uses est spécifique aux unités pas forme (le titre) si je me permets bien sûr. secondo, qu'attends-tu de Form2 puisqu'il ne lui a pas été demandé de faire quelque chose ? ma question est : que veux-tu qu'elle fasse?

    Bonne chance.

  5. #5
    Membre émérite Avatar de Yurck
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 16
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2005
    Messages : 682
    Par défaut
    Citation Envoyé par Medoou Voir le message
    Salut
    oui je comprend bien mais le problème est toujours pas résolu
    Mais quel problème ???

    Dans un moment de détente j'ai été jusqu'à reproduire le projet,
    et je ne me suis pas détendu !!

  6. #6
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 989
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 989
    Par défaut
    Le problème est relativement simple.

    Par défaut, les fiches ont la propriété Visible à FALSE.
    Faire un Show va faire commuter Visible à TRUE et puisque il y a changement d'état, l'événement OnShow est exécuté.

    Lors du deuxième appel (tu as simplement cliqué sur la Form1), Form2.Visible est toujours à TRUE et OnShow n'est pas appelé puisqu'il n'y a pas de changement d'état.

    Tu pourrais peut-être utiliser OnActivate qui sera exécuté lui à chaque fois que la fiche prend le focus.

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    175
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2009
    Messages : 175
    Par défaut
    Salut!
    OK OK , je vous explique !!
    En fait l'exercice consiste à afficher une autre Form 'Form2' (Avec un label quI doit prendre une valeur que je lui affecte'5')aprés avoir cliquer sur le button de la Form1.
    Si vous voiyez bien dans 'Unit2',la procedure
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    procedure TForm2.FormShow();
    begin
    LabelForm2.Caption:='5';
    end;
    se déclenche à chaque fois que l'on "Show" la fiche form2 à partire de la procedure
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    procedure TForm1.Button1Click(Sender: TObject);
    dans l'unit1.'
    et aprés la compilation j'attend que le' LabelForm2' de la fiche ' Form2' prend la valeur '5'
    mais ce n'st pas le Cas, le 'labelform2' garde toujours son nom 'labelform2 ' au lieu de prendre la valeur '5'.
    voila le problème!!

  8. #8
    Membre émérite Avatar de Yurck
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 16
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2005
    Messages : 682
    Par défaut
    Bah pas chez moi tout se passe bien !

    En conséquence de quoi je pense que ton problème est dans le form2.dfm et que tu as perdu le lien avec l'évènement OnShow de ta fiche.

    pour le prouver
    ajoute cette ligne

    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
    program Project1;
     
    uses
      Forms,
      Unit1 in 'Unit1.pas' {Form1},
      Unit2 in 'Unit2.pas' {Form2};
     
    {$R *.res}
     
    begin
      Application.Initialize;
      Application.CreateForm(TForm1, Form1);
      Application.CreateForm(TForm2, Form2);
    Form2.OnShow := Form2.FormShow;
      Application.Run;
    end.

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    175
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2009
    Messages : 175
    Par défaut
    A bon !!
    comment ta fait toi pour ouvrire la 2 ième Form, peut etre que je l'ai mal ouvert

    il l'a pas aimé
    il affiche l'erreur suivant :
    [Error] Project1.dpr(14): Incompatible types: 'Parameter lists differ'
    j'ai reessayé et le problème perciste

  10. #10
    Membre émérite Avatar de Yurck
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 16
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2005
    Messages : 682
    Par défaut
    J'ai recopié (reconstitue plutôt) ton code

    Quel Delphi utilises-tu ?

    Bon élimine cette ligne dans le projet et contrôle à l'aide de l'inspecteur d'objet (F11) sur ta fiche Form2 que l'évenement OnShow pointe bien sur ta procédure.

    voilà c'est tout ce que je peux faire pour toi ce soir.

    a+

    Citation Envoyé par Andnotor Voir le message
    Lors du deuxième appel (tu as simplement cliqué sur la Form1),
    Quel deuxième appel ?

    Citation Envoyé par Medoou Voir le message
    la procedure
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    procedure TForm2.FormShow();
    begin
    LabelForm2.Caption:='5';
    end;
    se déclenche à chaque fois que l'on "Show" la fiche form2
    AndNotOr a raison le formshow ne se déclenche pas à chaque fois

    Citation Envoyé par Medoou Voir le message
    et aprés la compilation j'attend que le' LabelForm2' de la fiche ' Form2' prend la valeur '5'
    mais ce n'st pas le Cas, le 'labelform2' garde toujours son nom 'labelform2 ' au lieu de prendre la valeur '5'.
    voila le problème!!
    mais il devrait se déclencher au moins une fois.

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    175
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2009
    Messages : 175
    Par défaut
    Je comprend pas d'ou il vient le probleme
    je pense que ma version Delphi7 décone
    un dernier service, je sais que je vous ai soulé se soir mais bon
    si quelqu'un peut compiler mon code pour la dernière fois pour confirmer mon doute
    Voila le code sachant que je l'ai refait :
    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
    //***********************************************//
    program Project1;
     
    uses
      Forms,
      Unit1 in 'Unit1.pas' {Form1},
      Unit2 in 'Unit2.pas' {Form2};
     
    {$R *.res}
     
    begin
      Application.Initialize;
      Application.CreateForm(TForm1, Form1);
      Application.CreateForm(TForm2, Form2);
      Application.Run;
    end.
    //***********************************************//
    unit Unit1;
     
    interface
     
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;
     
    type
      TForm1 = class(TForm)
        LabelForm1: TLabel;
        Button1: TButton;
        Button2: TButton;
        procedure Button1Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;
     
    var
      Form1: TForm1;
     
    implementation
     
    {$R *.dfm}
     uses Unit2;
    procedure TForm1.Button1Click(Sender: TObject);
    begin
    form2.Show;
    LabelForm1.caption:='Ouverture de form2 avec la méthode Show';
    end;
     
    end.
    //******************************************************//
    unit Unit2;
     
    interface
     
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;
     
    type
      TForm2 = class(TForm)
        Label1: TLabel;
        procedure onshow(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;
     
    var
      Form2: TForm2;
     
    implementation
     
    {$R *.dfm}
     uses
     unit1;
       procedure TForm2.onshow(Sender: TObject);
       begin
        Label1.Caption:=form1.LabelForm1.Caption;
     
       end;
    end.
    //****************************************************//
    et je vous serais trés reconaissant

  12. #12
    Membre émérite Avatar de Yurck
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 16
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2005
    Messages : 682
    Par défaut
    Ton code n'est en rien modifié.

    Il semble que tu n'ai pas utiliser l'inspecteur d'objet pour le générer je dit cela à cause du nom de ta méthode : "onshow".

    Ce que je peux te proposer.
    Ouvre le fichier Form2.dfm avec notepad et envoie nous sa copie

    fait de même avec form1.dfm et tu devrais comprendre comment Delphi fait le lien entre un évènement et une procédure.

  13. #13
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    175
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2009
    Messages : 175
    Par défaut
    voila
    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
    unit1.dfm:
    //****************************//
    object Form1: TForm1
      Left = 168
      Top = 137
      Width = 234
      Height = 165
      Caption = 'Form1'
      Color = clBtnFace
      Font.Charset = DEFAULT_CHARSET
      Font.Color = clWindowText
      Font.Height = -11
      Font.Name = 'MS Sans Serif'
      Font.Style = []
      OldCreateOrder = False
      PixelsPerInch = 96
      TextHeight = 13
      object LabelForm1: TLabel
        Left = 136
        Top = 48
        Width = 55
        Height = 13
        Caption = 'LabelForm1'
      end
      object Button1: TButton
        Left = 40
        Top = 8
        Width = 41
        Height = 41
        Caption = '1'
        TabOrder = 0
        OnClick = Button1Click
      end
      object Button2: TButton
        Left = 40
        Top = 64
        Width = 41
        Height = 41
        Caption = '2'
        TabOrder = 1
      end
    end
     
    //*************************************//
    et unit2.dfm:
    //*************************************//
    object Form2: TForm2
      Left = 465
      Top = 133
      Width = 279
      Height = 165
      Caption = 'Form2'
      Color = clBtnFace
      Font.Charset = DEFAULT_CHARSET
      Font.Color = clWindowText
      Font.Height = -11
      Font.Name = 'MS Sans Serif'
      Font.Style = []
      OldCreateOrder = False
      PixelsPerInch = 96
      TextHeight = 13
      object LabelForm2: TLabel
        Left = 80
        Top = 40
        Width = 55
        Height = 13
        Caption = 'LabelForm2'
      end
    end

  14. #14
    Membre émérite Avatar de Yurck
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 16
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2005
    Messages : 682
    Par défaut
    Okay cela confirme ce que je te dis.

    1 ère solution
    recopie

    tu manques de pratique en Delphi

    voilà le code que tu devrais avoir pour Form2.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
    object Form2: TForm2
      Left = 0
      Top = 0
      Caption = 'Form2'
      ClientHeight = 294
      ClientWidth = 562
      Color = clBtnFace
      Font.Charset = DEFAULT_CHARSET
      Font.Color = clWindowText
      Font.Height = -11
      Font.Name = 'Tahoma'
      Font.Style = []
      OldCreateOrder = False
      OnShow = FormShow
      PixelsPerInch = 96
      TextHeight = 13
      object labelForm2: TLabel
        Left = 24
        Top = 64
        Width = 52
        Height = 13
        Caption = 'labelForm2'
      end
    end
    Pour affecter un évènement au bouton tu as tout simplement double cliquer dessus.
    ainsi Delphi à ajouté a ton form1.dfm la ligne
    [FONT=monospace]
    [/FONT]
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
      OnClick = Button1Click
    Mais pour affecter le OnShow d'une fiche tu dois utiliser l'inspecteur d'objet sur l'onglet "Evènements" .

    C'est l'IDE Delphi que tu dois apprivoiser.

    l'inspecteur d'objet s'ouvre par la touche F11

  15. #15
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    175
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2009
    Messages : 175
    Par défaut
    finalement
    le le prolème est tjs là
    Mon Form2 il affiche pas ce que je lui ai demandé d'afficher
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    procedure TForm2.FormShow (Sender: TObject);
    begin
    LabelForm2.Caption:='je veux afficher qlq chose ici!';
     
    end;

Discussions similaires

  1. Je suis bloquer dans mon code js
    Par LittleBoyPass dans le forum Débuter avec Java
    Réponses: 1
    Dernier message: 25/05/2013, 11h25
  2. [FPDF] Probleme dans l'utilisation de la classe FPDF et les tableaux
    Par mathieu77186 dans le forum Bibliothèques et frameworks
    Réponses: 3
    Dernier message: 24/04/2008, 23h03
  3. "warning" dans eclipse (utiliser les Generic)
    Par Isher dans le forum Eclipse Java
    Réponses: 15
    Dernier message: 19/10/2005, 13h04
  4. [Select()/Focus()] Pb dans l'utilisation de ces méthodes
    Par Kylen dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 23/06/2005, 15h54
  5. Erreur dans l'utilisation de SWAP
    Par mire dans le forum Langage
    Réponses: 12
    Dernier message: 15/03/2003, 22h39

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