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.
Maintenant dans mon unit 1 apprès les uses d'usage et la déclaration d'un
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.
Myviewer:Taffichage;
Je fais ceci
L'objet est bien créé dynamiquement et je peux meme remplir la stringrid.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 (...) pos.x:=100; pos.y:=100; Myviewer:=Taffichage(pos);
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.![]()
Partager