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.