cs_darkthief
Messages postés23Date d'inscriptionjeudi 17 juin 2004StatutMembreDernière intervention 6 décembre 2007
-
12 juil. 2007 à 17:12
cs_darkthief
Messages postés23Date d'inscriptionjeudi 17 juin 2004StatutMembreDernière intervention 6 décembre 2007
-
14 juil. 2007 à 23:19
Bonjour à tous,
j'ai un petit soucis que je n'arrive pas à résoudre.
Voila, j'utilise un StringGrid et je voudrais afficher un objet de type TShape dans une des cellules.
Mais la je bloque je n'y arrive pas.
Quelqu'un aurait-il une solution ou un début de solution? :p
afficher une image, c'est pas dur alors je pense que c'est pas plus compliqué pour un TShape mais bon..
WhiteHippo
Messages postés1154Date d'inscriptionsamedi 14 août 2004StatutMembreDernière intervention 5 avril 20122 14 juil. 2007 à 10:43
Tout simplement :
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
begin
with TStringGrid(Sender).Canvas do
begin
// Action sur la colonne n°3
if ( Acol=3) then
begin
// Dessin d'une ellipse sur la zone
Brush.color := clWhite;
Ellipse(Rect);
// Dessin d'un cercle en haut à droite de la zone
Brush.color := clRed;
Ellipse(Rect.Left,Rect.Top,Rect.Left+20,Rect.Top+20);
end ;
end;
end;
Cordialement. <hr />"L'imagination est plus importante que le savoir." Albert Einstein
WhiteHippo
Messages postés1154Date d'inscriptionsamedi 14 août 2004StatutMembreDernière intervention 5 avril 20122 12 juil. 2007 à 22:00
Bonsoir,
Bien que je doute grandement de l'interêt d'une telle démarche (Il serait BEAUCOUP plus logique de dessiner directement dans la cellule), mais en réponse à ta question, tu peux le faire de cette façon :
// Je suppose que tu as une forme Shape1 et un StringGrid1 sur ta fiche Form1
// Tout se passe dans l'évenement OnDrawCell
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
begin
if ( Acol=2) and (Arow=2) then // Choix d'une ligne et d'une colonne
begin
// On indique que le parent est le stringgrid1, cela aurait pu etre fait
// une seule fois dans le create de la fiche
Shape1.Parent:=StringGrid1;
// On redimensionne le TShape à la taille de la cellule
with Rect do
Shape1.SetBounds(Left,Top,Right-Left,Bottom-Top);
end;
end;
N.B. L'inconvénient d'une telle démarche est qu'il faudra autant de TShape que de cellules
Cordialement.
<hr />"L'imagination est plus importante que le savoir." Albert Einstein
cs_darkthief
Messages postés23Date d'inscriptionjeudi 17 juin 2004StatutMembreDernière intervention 6 décembre 2007 14 juil. 2007 à 01:12
Bonsoir,
j'ai essayé ta technique, et visiblement j'ai un soucis vu que je n'y arrive pas
Par contre le fait de dessiner directement dans la cellule peut peut être être effectivement mieux.
si on peut dessiner un cercle d'une certaine couleur, je suis preneur..
si tu peux me mettre sur la voie, je te remercie