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 :

peut-on utiliser les composants de la page où on utilise un record ?


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Femme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Avril 2014
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Avril 2014
    Messages : 102
    Par défaut peut-on utiliser les composants de la page où on utilise un record ?
    Bonjour, Pour faciliter l'usage de la présentation 3D j'ai regroupé ce qui concerne une pièce dans un record (WPiece3D dans FormxDetailPiece).
    J'aurais voulu mettre aussi dans ce record la procedure PRedimPce qui modifie les dimensions de la piece.
    J'ai du mettre cette procedure dans les déclarations publiques de ma page (PRedimPce) car dans le record la procedure n'arrive pas à remonter à la page.
    par exemple label1 ou dummy1 ne sont pas reconnus
    Du coup ma question est : peut-on utiliser les composants de la page où on utilise un record ? et comment
    Fichiers attachés Fichiers attachés

  2. #2
    Expert éminent
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Par défaut
    ben il suffit de lui donner en paramètre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    type
      TFrmxDetailPiece = class; // forward
     
      RPiece3D = record
        Dim : TPoint3D;
        Pos : TPoint3D;  //centre de la pièce
        Rot : TPoint3D;
        Faces : Array[0..5] of TPlane;
        Procedure ReDimPce(Detail: TFrmxDetailPiece); // Pb depuis le container, le record n'a pas accès à FrmxDetailPiece
      end;
     
      TFrmxDetailPiece = class(TForm)
      ...
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  3. #3
    Membre confirmé
    Femme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Avril 2014
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Avril 2014
    Messages : 102
    Par défaut
    j'ai essayé
    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
    type
      TFrmxDetailPiece = class(TForm)
        Viewport3D1: TViewport3D;
        Dummy1: TDummy;
        Dummy2: TDummy;
        Camera1: TCamera;
        Light1: TLight;
        Light2: TLight;
        Light3: TLight;
        Text1: TText;
        Text2: TText;
        HelpMove: TDummy;
        LightMaterialSource8: TLightMaterialSource;
        LightMaterialSourcePce: TLightMaterialSource;
        LightMaterialSourceSelect: TLightMaterialSource;
        LightMaterialSourceTra: TLightMaterialSource;
        StrokeCube1: TStrokeCube;
        Button1: TButton;
        Rectangle: TRectangle;
        Layout1: TLayout;
        Label1: TLabel;
      type
      RPiece3D = record
        Dim : TPoint3D;
        Pos : TPoint3D;  //centre de la pièce
        Rot : TPoint3D;
        Faces : Array[0..5] of TPlane;
        Procedure ReDimPce; // Pb depuis le container, le record n'a pas accès à FrmxDetailPiece
      end;
     
    et aussi comme proposé :
    type
      TFrmxDetailPiece = class ;
      RPiece3D = record
        Dim : TPoint3D;
        Pos : TPoint3D;  //centre de la pièce
        Rot : TPoint3D;
        Faces : Array[0..5] of TPlane;
        Procedure ReDimPce; // Pb depuis le container, le record n'a pas accès à FrmxDetailPiece
      end;
     
      TFrmxDetailPiece = class(TForm)
        Viewport3D1: TViewport3D;
        Dummy1: TDummy;
        Dummy2: TDummy;
        Camera1: TCamera;
        Light1: TLight;
    dans le premier cas j'obtiens procedure TFrmxDetailPiece.RPiece3D.ReDimPce; donc effectivement attaché à la fiche VCL FrmxDetailPiece
    dans le second cas procedure RPiece3D.ReDimPce;

    mais dans les deux cas le label1 n'est pas reconnu ...

  4. #4
    Expert éminent
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Par défaut
    non tu as raté la modification de la déclaration : ReDimPce(Detail: TFrmxDetailPiece)

    on passe en paramètre l'instance de la fiche
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  5. #5
    Membre confirmé
    Femme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Avril 2014
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Avril 2014
    Messages : 102
    Par défaut
    merci je n'avais pas vu en effet ...
    du coup quand j'appelle la procedure je mets la fiche en paramètre ? (FMC.FireMonkeyForm as TFrmxDetailPiece).WPiece3D.ReDimPce(FrmxDetailPiece);
    mais j'obtiens une erreur dans la procédure RPiece3D.ReDimPce(Detail: TFrmxDetailPiece) avec : Detail.Label1.Text := 'text';

  6. #6
    Expert éminent
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Par défaut
    Citation Envoyé par GrPtj Voir le message
    merci je n'avais pas vu en effet ...
    du coup quand j'appelle la procedure je mets la fiche en paramètre ? (FMC.FireMonkeyForm as TFrmxDetailPiece).WPiece3D.ReDimPce(FrmxDetailPiece);
    mais j'obtiens une erreur dans la procédure RPiece3D.ReDimPce(Detail: TFrmxDetailPiece) avec : Detail.Label1.Text := 'text';
    tu ne maitrises pas les bases....

    FrmxDetailPiece est une variable globale que tu n'initialises pas dans ton application, elle est donc invalide

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     (FMC.FireMonkeyForm as TFrmxDetailPiece).WPiece3D.ReDimPce((FMC.FireMonkeyForm as TFrmxDetailPiece));
    mais tu pourrais faire ceci
    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
     
    procedure TForm2.FMCCreateFMXForm(var Form: TCommonCustomForm);
    begin
      if not Assigned(Form) then 
      begin
        FrmxDetailPiece := TFrmxDetailPiece.Create(nil);
        Form := FrmxDetailPiece;
      end;
    end;
     
    procedure TForm2.Button1Click(Sender: TObject);
    begin
      FrmxDetailPiece.WPiece3D.Dim := TPoint3D.Create(StrToFloat(Edit1.Text), Strtofloat(Edit2.Text), strtofloat(Edit3.Text))/100;
      FrmxDetailPiece.WPiece3D.Pos := TPoint3D.Create(0, 0, 0) ;
      FrmxDetailPiece.WPiece3D.Rot := TPoint3D.Create(-80, 5, -20) ;
      FrmxDetailPiece.WPiece3D.ReDimPce(FrmxDetailPiece);
    end;
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  7. #7
    Membre Expert
    Avatar de ALWEBER
    Homme Profil pro
    Expert Delphi
    Inscrit en
    Mars 2006
    Messages
    1 539
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Expert Delphi

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 539
    Billets dans le blog
    10
    Par défaut Redimension
    Pour modifier l'objet 3D je passe par l'envoi de message entre les deux univers (FMX et VCL). Si besoin je te prépare un exemple

  8. #8
    Membre confirmé
    Femme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Avril 2014
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Avril 2014
    Messages : 102
    Par défaut
    merci, je veux bien un exemple, bien que cela fonctionne avec un record mais c'est peut être mieux avec un message ?

Discussions similaires

  1. [Débutant] Selenium : peut-on identifier les objets de la page avec la souris ?
    Par crazyfroggy dans le forum Développement Web avec .NET
    Réponses: 2
    Dernier message: 04/04/2019, 00h14
  2. boucle sur tout les composant de la page html
    Par patricktoulon dans le forum VBScript
    Réponses: 0
    Dernier message: 13/07/2013, 16h54
  3. vider les composants d'une page
    Par israe2010 dans le forum Silverlight
    Réponses: 2
    Dernier message: 21/07/2011, 15h36
  4. une Dll peut elle utiliser les fonctions d'une autre dll?
    Par kantelise dans le forum Windows
    Réponses: 7
    Dernier message: 18/05/2006, 03h45
  5. Peut-on utiliser les SGBDs libres pour construire un DWH ?
    Par daabos dans le forum Alimentation
    Réponses: 6
    Dernier message: 01/10/2004, 10h35

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