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 :

[tframe] passage d'un cadre a l'autre


Sujet :

Composants VCL Delphi

  1. #1
    Membre actif

    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 85
    Points : 218
    Points
    218
    Par défaut [tframe] passage d'un cadre a l'autre
    merci de lire mon message
    voila mon probleme
    j'ai une form qui contien deux cadre (Tframe )
    je cherche de passe de l'un a lautre(cacher l'un et montrer le suivant) en cliquant sur le boutton suivant
    il est possible de réalisé ca en changant la proporité VISIBLE de chaque Frame mais quand ont sera en face de plusieurs cadres ???

    j'ai trouver dans le livre de OLIVIER dahan "Delphi7 Studio"
    ce petit code mais il marche pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    procedure TForm1.Button2Click(Sender: TObject);
    var 
    F:tframe;
    begin
    case (Fetape) of
    0:F:=Tframe1.create(self);
    1:F:=Tframe2.create(self);
    end;
    F.parent:= self;
    //étape suivante
    inc(Fetape); 
    end;
    que ce qu'il manque ?
    que doit je ajouter pour qu'il marche
    es que le probleme est dans la variable Fetape ? si oui ou doit je le déclarer et de quelle type il est ? integer ?
    jai essayé d'utilisé la propreité TAG
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    procedure TForm1.Button2Click(Sender: TObject);
     
    begin
    case (sender as Tframe).Tag of
    0:visible:=true;
    1:visible:=true
    end;
    end;
    la aussi ca ma pas aider
    qui peut m'aider
    merci d'avance

  2. #2
    Membre du Club
    Inscrit en
    Novembre 2004
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 43
    Points : 52
    Points
    52
    Par défaut
    Oulala,

    alors dans ton troisième source ca ne peut pas fonctionner car à mon avis le Sender est le bouton sur lequel tu cliques. Donc transtyper un TBouton en TFrame, ca ne va pas le faire.

    A mon avis le premier exemple est pas mal. Mais le meiux est surement de créer tous tes Frames d'entrée et de gérer leur visiblité ensuite. Car tu peux avoir un bouton suivant mais aussi précédent.

    Allez un p'tit exemple qui va bien et qui ne mange pas de pain :
    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
    type
      TIndexFrame = 1..5;
    type
      TForm1 = class(TForm)
        Precedent: TButton;
        Suivant: TButton;
        procedure PrecedentClick(Sender: TObject);
        procedure SuivantClick(Sender: TObject);
        procedure FormCreate(Sender: TObject);
      private
        { Déclarations privées }
        TableaudeFrame : Array[TIndexFrame] of TFrame;
        IndexFrame : TIndexFrame;
        procedure Init;
      public
        { Déclarations publiques }
      end;
     
    var
      Form1: TForm1;
     
    implementation
     
    {$R *.dfm}
     
    procedure TForm1.FormCreate(Sender: TObject);
    begin
      Init;
    end;
     
    procedure TForm1.Init;
    var i : integer;
    begin
      for i := low(TableaudeFrame) to High(TableaudeFrame) do
      begin
        TableaudeFrame[i] := TFrame.Create(Self);
        TableaudeFrame[i].Visible := False;
        TableaudeFrame[i].Parent := Self;
        TableaudeFrame[i].Color := Random(121322122);
      end;
      IndexFrame := low(TIndexFrame);
      TableaudeFrame[IndexFrame].Visible := True;
    end;
     
     
    procedure TForm1.PrecedentClick(Sender: TObject);
    begin
      if IndexFrame > low(TIndexFrame) then
      begin
        TableaudeFrame[IndexFrame].Visible := False;
        Dec(IndexFrame);
        TableaudeFrame[IndexFrame].Visible := True;
      end;
    end;
     
    procedure TForm1.SuivantClick(Sender: TObject);
    begin
      if IndexFrame < High(TIndexFrame) then
      begin
        TableaudeFrame[IndexFrame].Visible := False;
        Inc(IndexFrame);
        TableaudeFrame[IndexFrame].Visible := True;
      end;
    end;
    La procedure Init crée tes Frame.
    Et chaque bouton fait apparaitre la Frame suivante ou précédente.
    Remarque le type de départ : TIndexFrame. Tu modifies juste ce type afin de régler le nombre de Frame que tu gères.
    Je n'ai pas mis la procédure detruisant les Frames créées (ca aurait été plus propre) mais comme la Form est propriétaire des Frames, elle se charge de les détruire.

    J'éspère que ca t'a convaincu.

    Bye.

  3. #3
    Membre actif

    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 85
    Points : 218
    Points
    218
    Par défaut
    merci
    je vait le tester et voir ce que ca donne :
    merci pour d'autres réponces

  4. #4
    Membre actif

    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 85
    Points : 218
    Points
    218
    Par défaut
    désolé mais ta methode n'as pas marcher
    :
    j'ai essayé d'ajoutter ca au code


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    procedure TForm1.FormCreate(Sender: TObject);
    begin
     
     TableaudeFrame[1]:=frame21;
     TableaudeFrame[2]:=frame31;
     tableaudeframe[3]:=frame41;
     
    end;
    ca a marcher pour le boutton suivant mais pour precedent
    ca marche pas
    peut tu voir ca ?

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 15
    Points : 11
    Points
    11
    Par défaut
    Bonsoir,

    Tu peux associer tes 'Frame' à un 'TreeView'.

    Lorsqu'un 'Item' de 'TreeView' est sélectionné (détient le focus), il créé la 'Frame' correspondante après avoir détruit la 'Frame' précédente active.

    Ceci peut se gérer par exemple avec la propriété 'Tag' de la 'Frame'.

  6. #6
    Rédacteur
    Avatar de Pedro
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    5 411
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 5 411
    Points : 8 078
    Points
    8 078
    Par défaut
    Salut

    Citation Envoyé par jp Louis
    Ceci peut se gérer par exemple avec la propriété 'Tag' de la 'Frame'
    ou encore mieux avec la propriété Data des TTreeNode...

    Mais c'est vrai que la méthode de tout créer et d'afficher/cahcher ensuite est beaucoup plus facile à gérer...
    Pedro
    Aucune réponse aux sollicitations techniques par MP

    Faut pas attendre d'en avoir besoin pour s'en servir... (Lucien Stéphane)

    Les pages Source C'est bon. Mangez-en!
    Le défi Delphi
    Règles du forum - FAQ Delphi - Pensez au chtit
    Aéroclub Bastia Saint-Exupéry

  7. #7
    Membre actif

    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 85
    Points : 218
    Points
    218
    Par défaut
    merci pour vos réponces
    un petit code d'explication me frait un grand plaisir

  8. #8
    Membre actif

    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 85
    Points : 218
    Points
    218
    Par défaut
    pas de nouvelles ideés :

  9. #9
    Expert confirmé
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Points : 4 219
    Points
    4 219
    De retour parmis vous après 10 ans!!

  10. #10
    Membre actif

    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 85
    Points : 218
    Points
    218
    Par défaut
    merci
    bien expliqué

  11. #11
    Expert confirmé
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Points : 4 219
    Points
    4 219
    Par défaut
    Il n'ya pas grand chose à expliquer. Il ya 3 fonctions:
    1) Initialisation / Création des TFrames
    2) Bouton Précédent
    3) Bouton Suivant
    Seule la propriété VISBLE des TFrames est modifiée.
    Un TLabel pour afficher l'index en cours...

    : As-tu des questions précises?

    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
    UNIT Unit1;
    INTERFACE
    USES Windows,Messages,SysUtils,Classes,Graphics,
         Controls,Forms,Dialogs,ExtCtrls,StdCtrls;
     
    TYPE
      TForm1 = CLASS(TForm)
        Precedent: TButton;
        Suivant: TButton;
        Label1: TLabel;
        PROCEDURE FormCreate(Sender: TObject);
        PROCEDURE PrecedentClick(Sender: TObject);
        PROCEDURE SuivantClick(Sender: TObject);
      END;
     
    VAR Form1:TForm1;
     
     
    {----------------------------------------------------------------}
    {                       }IMPLEMENTATION{                         }
    {----------------------------------------------------------------}
    {$R *.DFM}
     
    CONST MyColor:ARRAY[1..5]OF TColor=
          (clBlue,clLime,clRed,clYellow,clGreen);
     
    VAR TabFrame:ARRAY[1..5]OF TFrame;
        IndexFrame:Byte;
     
     
    {----------------------------------------------------------------}
    PROCEDURE TForm1.FormCreate(Sender: TObject);
    VAR i:Integer;
    BEGIN
     FOR i:=Low(TabFrame)TO High(TabFrame)DO BEGIN
      TabFrame[i]:=TFrame.Create(Self);
      TabFrame[i].Left:=130;
      TabFrame[i].Top:=10;
      TabFrame[i].Width:=200;
      TabFrame[i].Height:=150;
      TabFrame[i].Visible:=False;
      TabFrame[i].Parent:=Self;
      TabFrame[i].Color:=MyColor[i];
     END;
     IndexFrame:=Low(TabFrame);
     TabFrame[IndexFrame].Visible:=True;
     Label1.Caption:=IntToStr(IndexFrame);
    END;
     
     
    {----------------------------------------------------------------}
    PROCEDURE TForm1.PrecedentClick(Sender: TObject);
    BEGIN
     IF(IndexFrame>Low(TabFrame))THEN BEGIN
      Suivant.Enabled:=True;
      TabFrame[IndexFrame].Visible:=False;
      IndexFrame:=IndexFrame-1;
      IF(IndexFrame<=Low(TabFrame))THEN Precedent.Enabled:=False;
      TabFrame[IndexFrame].Visible:=True;
      Label1.Caption:=IntToStr(IndexFrame);
     END;
    END;
     
     
    {----------------------------------------------------------------}
    PROCEDURE TForm1.SuivantClick(Sender: TObject);
    BEGIN
     IF(IndexFrame<High(TabFrame))THEN BEGIN
      Precedent.Enabled:=True;
      TabFrame[IndexFrame].Visible:=False;
      IndexFrame:=IndexFrame+1;
      IF(IndexFrame>=High(TabFrame))THEN Suivant.Enabled:=False;
      TabFrame[IndexFrame].Visible:=True;
      Label1.Caption:=IntToStr(IndexFrame);
     END;
    END;
     
     
    {----------------------------------------------------------------}
    END.
    De retour parmis vous après 10 ans!!

  12. #12
    Membre actif

    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 85
    Points : 218
    Points
    218
    Par défaut
    non non pas du tout je me suis male exprimer je voulait dir que ton program est bien lisible
    je l'ai bien compris
    merci encore SUB0
    et merci a vous tous

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [WinDev 10] Passage d'une fenêtre vers une autre
    Par arnaud_verlaine dans le forum WinDev
    Réponses: 8
    Dernier message: 31/10/2006, 10h29
  2. passage automatique d'une page à l'autre
    Par kenny49 dans le forum Langage
    Réponses: 2
    Dernier message: 26/06/2006, 09h06
  3. Réponses: 9
    Dernier message: 21/12/2005, 17h33
  4. Passage d'une page web à une autre TROP long
    Par minusette dans le forum Web
    Réponses: 16
    Dernier message: 27/10/2005, 17h40
  5. passage d'une page a une autre
    Par vedder dans le forum Flash
    Réponses: 3
    Dernier message: 30/12/2003, 16h30

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