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 :

[D7][Creation dynamique StrinGrid][Affichage]


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    160
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 160
    Par défaut [D7][Creation dynamique StrinGrid][Affichage]
    Bonjour,
    j'essaye de faire une creation dynamique de stringgrid a partir d'une classe que je suis en train de creer.

    Voici la code de la classe, on ne peut plus simple pour l'instant.

    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
     
    unit Affichage;
     
    interface                                                     
     
    uses
      Classes,  ExtCtrls, MMSystem, Windows,
      SysUtils, forms, StdCtrls, Graphics,grids,comctrls;
     
    //Les constantes pour régler la taille de l'affichage
    Const
    nb_col=64; //nombre de colones
    nb_line=64; //nombre de lignes
    largeur_cellule=80; //largeur de la cellule en pixels
    hauteur_cellule=80;//hauteuur de la cellule en pixels
     
     
     
      type TAffichage = class(Tobject)
      private
     
      public
     
      Afficheur:TStringGrid; //On affiche dans un TStringGrid;
     
      Constructor Create(pos:Tpoint); //Le constructeur (Pos=position dans la fiche)
      published
     
     
     
      end;
      Type PAffichage = ^TAffichage;
     
    var
      Stop : boolean;
      Erreur: byte;
     
    implementation
     
    uses test;
     
    Constructor TAffichage.Create(pos:Tpoint);
    begin
    //--------------------------------------------------------
    //Phase 1: On creer la stringgris avec les bons parametres
    //--------------------------------------------------------
    Afficheur:=TstringGrid.Create(Self);//creation
    Afficheur.ColCount:=nb_col;//assignation du nombre de colones
    Afficheur.RowCount:=nb_line;//assignation du nombre de lignes
    Afficheur.ScrollBars:=ssNone;//pas d'ascenseur
    Afficheur.FixedCols:=0;//pas de colone grisée
    Afficheur.FixedRows:=0;//pas de ligne grisée
    Afficheur.DefaultColWidth:=largeur_cellule;//largeur de cellule
    Afficheur.DefaultRowHeight:=hauteur_cellule;//hauteur de cellule
    Afficheur.Left:=pos.X;//positionnement de ma grille;
    Afficheur.Top:=pos.Y;
    Afficheur.Width:=nb_col*largeur_cellule;//taille de la grille en pixels
    Afficheur.Height:=nb_line*hauteur_cellule;
    Afficheur.Visible:=true;//paf on affiche
    end;
     
    end.
    Maintenant dans mon unit 1 apprès les uses d'usage et la déclaration d'un
    Myviewer:Taffichage;

    Je fais ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    (...)
    pos.x:=100;
    pos.y:=100;
    Myviewer:=Taffichage(pos);
    L'objet est bien créé dynamiquement et je peux meme remplir la stringrid.

    Par contre elle n'apparait pas à l'ecran.
    C'est à dire que tout fonctionne en memoire, mais la stringrid créée n'apparait pas au moment de la creation...

    Suis-je clair?

    Et bien sur j'ai besoin de le voir, car si je voulais travailler seulement en memoire, je n'utilisairais pas un Stringgrid mais un tableau à deux dimensions.

    Voilà...

    Je suis sur que c'est une question de noob et que la solution est simple mais... Elle m'echappe.

  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
    Par défaut
    Salut,

    Il te manque une ligne dans ton constructeur:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Afficheur.Parent:=MonConteneur
    Voilà, ça devrait être niquel après

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    160
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 160
    Par défaut
    Merci man...
    Effectivement, ca marche et il ne manquait pas grand chose.

    Merci encore

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 06/02/2014, 15h44
  2. [en C]creation dynamique d'interface
    Par ronan99999 dans le forum Windows
    Réponses: 3
    Dernier message: 19/08/2004, 12h53
  3. [VB.NET] Erreur sur la creation dynamique d'une texbox
    Par headcooper dans le forum ASP.NET
    Réponses: 4
    Dernier message: 01/07/2004, 19h34
  4. Réponses: 8
    Dernier message: 04/09/2003, 16h07
  5. Creation dynamique d'un objet
    Par Tom_sawyer13 dans le forum Composants VCL
    Réponses: 4
    Dernier message: 06/08/2003, 18h31

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