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 :

Créer une seconde fenêtre avec paramètres


Sujet :

Langage Delphi

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Août 2009
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2009
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Créer une seconde fenêtre avec paramètres
    Bonjour !
    Je suis en train de développer un petit logiciel pour moi, et je m'interroge à propos de certaines choses.

    Pour l'instant, mon programme ne comprend qu'une seule fiche. ce que je souhaiterais faire, c'est ouvrir une deuxième fenêtre en cliquant soit sur le bouton1, soit sur le bouton2 (ils sont positionnés sur la première fenêtre), et en même temps faire passer un paramètre que je pourrai récupérer et utiliser dans la procédure déclenchée par l'évènement OnCreate de la seconde fenêtre. De cette façon, je pourrai créer cette 2e fenêtre différemment en cliquant sur l'un ou l'autre des boutons.

    Ce paramètre dont je vous parle servirais donc à savoir par quel bouton l'utilisateur a ouvert la fenêtre et de cette manière construire la fenêtre de manière appropriée.

    Je voudrait donc savoir s'il est possible de réaliser quelque chose du style (et si oui, comment?), faute de quoi je devrai me résigner à créer deux fenêtres (ce que j'aimerais éviter car les deux fenêtre se ressembleraient comme deux gouttes d'eau).

    J'espère avoir été clair et vous remercie d'avance pour votre aide précieuse.

  2. #2
    Membre chevronné

    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2009
    Messages
    935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2009
    Messages : 935
    Points : 1 765
    Points
    1 765
    Par défaut
    Salut

    Tu crées une nouvelle fiche avec son unité associée, pouis dans cette unité tu déclares une variable globale dans la partie interface, et dans ton unité principale, tu tapes "uses Unit2" pour pouvoir acceder a ta variable. Voila =)

    Bonne chance !

  3. #3
    Membre éclairé Avatar de Kaféine
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    569
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 569
    Points : 736
    Points
    736
    Par défaut
    Salut,

    Tu peux également ajouter un paramètre du type TButton au constructeur de ta fiche, ou si ta version de delphi le permet, créer une methode de classe.

  4. #4
    Membre actif

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2007
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2007
    Messages : 47
    Points : 297
    Points
    297
    Par défaut
    Comme le dit mick605, il suffit de créer une nouvelle fiche dans laquelle tu ajoutes une variable dans la zone public de la déclaration de la nouvelle fiche, par exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
      TmaFiche2 = class(TForm)
        Button1: TButton;
        RadioGroup1: TRadioGroup;
        procedure FormClose(Sender: TObject; var Action: TCloseAction);
        procedure FormCreate(Sender: TObject);
      private
        { Déclarations privées }
      public
        { Déclarations publiques }
        maVariable: Integer;
      end;
    Dans la première fiche tu initialises cette variable avant d'afficher la deuxième fiche ainsi:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    maFiche2 := TmaFiche2.Create(self);
    with maFiche2 do
    try
      maVariable := 123; {initialisation de ta variable}
      ShowModal; {affichage de la fiche}
    finally
      Free;
    end;

  5. #5
    Membre éclairé Avatar de Kaféine
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    569
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 569
    Points : 736
    Points
    736
    Par défaut
    Salut,

    pourquoi ne pas transmettre le paramètre via le constructeur?
    je vais mettre un peu de code histoire de faire classe...

    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
    23
    24
     
    implementation
     
    uses Unit2;
     
    procedure CreerFenetre(AType: TFenetreType);
    begin
      with TForm2.Create(AType) do
        try
          ShowModal;
        finally
          Free;
        end;
    end;
     
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      CreerFenetre(ftUn);
    end;
     
    procedure TForm1.Button2Click(Sender: TObject);
    begin
      CreerFenetre(ftDeux);
    end;
    et la form2

    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
     
      TFenetreType = (ftUn, ftDeux);
      TForm2 = class(TForm)
      private
      protected
        procedure InitialiseFenetre(AType: TFenetreType);
      public
        constructor Create(AFenetreType: TFenetreType); reintroduce;
      end;
     
    implementation
     
    constructor TForm2.Create(AFenetreType: TFenetreType);
    begin
      inherited Create(nil);
      InitialiseFenetre(AFenetreType);
    end;
     
    procedure TForm2.InitialiseFenetre(AType: TFenetreType);
    begin
      case AType of
        ftUn: Caption := 'Initialisé type Un';
        ftDeux: Caption := 'Initalisé type Deux';
      end;
    end;

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

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 812
    Points : 13 527
    Points
    13 527
    Par défaut
    Une simple variable n'est pas suffisante si l'affichage doit être adapté, si des fichiers différents doivent être ouverts, etc. Il faudrait au minimum l'encapsuler. (Ce genre de gestion dans le OnShow n'est pas top):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    public
      property maVariable: Integer read FMaVariable write SetMaVariable;
    Mais ça entraîne une complication de la déclaration et des appels (Que se passe-t-il si cette variable n'est pas settée ?..).
    J'y préférerais aussi une redéfinition du constructeur comme proposé par Kaféine. (avec tout de même un propriétaire)

    Sinon, dans les versions récentes de Delphi, il y a aussi l'héritage de fiche...

Discussions similaires

  1. Ouverture d'une seconde fenêtre avec passage de variable
    Par kawther dans le forum Interfaces Graphiques
    Réponses: 7
    Dernier message: 06/11/2012, 08h50
  2. Créer une Tâche Outlook avec ASP
    Par Hamdi dans le forum ASP
    Réponses: 3
    Dernier message: 04/04/2006, 17h00
  3. Es-ce possible de créer une table MySQL avec MS Excel
    Par pierrot10 dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 16/10/2005, 06h30
  4. Créer une base Access avec Delphi
    Par Oluha dans le forum Bases de données
    Réponses: 3
    Dernier message: 11/10/2005, 16h55
  5. [JTable] Créer une JTable vide avec des noms de colonnes.
    Par Cyborg289 dans le forum Composants
    Réponses: 2
    Dernier message: 27/09/2005, 15h54

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