StringGrid : beug au niveau du Refresh

Utilisateur anonyme - 27 juil. 2007 à 01:27
 Utilisateur anonyme - 7 août 2007 à 11:17
Salut à tous,

Je viens de faire une découverte pas très rigolote .

Imaginez que vous avez un TStringGrid contenant 10 lignes dont 3 sont visibles à l'écran et les autres uniquement en utilisant les scrollbar.

Imaginez maintenant que vous incorporez via l'évenement  OnDrawCell, 4 images sur les 4 premières lignes.

Pas de problème pour les 3 premières images. Par contre quand vous faites défiler les lignes via les scrollbars, on constate que la 4ieme ligne a bien l'image voulue mais toutes les lignes qui restent (soit 6) ont aussi cette image.

Evidemment la méthode refresh ne change rien.

Si quelqu'un à l'explication et une solution je suis prenneur .

Bon j'en profite pour vous dire à bientôt je pars en vacances demain soir . Portez vous bien .

4 réponses

Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 50
27 juil. 2007 à 11:39
Salut,

après un rapide teste ... je n'arrive pas à obtenir le même résultat que toi

Chez moi tout fonctionne parfaitement !!!!

procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
begin
  If (aRow in [1..4]) and (aCol > 0) Then
  With TStringGrid(Sender).Canvas do  Begin
    Draw(Rect.Left, Rect.Top, Application.Icon);
  End;
end;

 
@+
Cirec

<hr size="2" />
0
cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
27 juil. 2007 à 22:46
Cher Francky,

Pourrais-tu avoir la gentillesse de nous fournir ton code contenu dans OnDrawCell ?


PS : bonnes vacances et laisse tomber le PC quelques temps

May Delphi be with you !


<hr color="#008000" />
Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.
http://www.afipa.net/
0
dominique.stock Messages postés 436 Date d'inscription vendredi 7 novembre 2003 Statut Membre Dernière intervention 8 octobre 2008 7
30 juil. 2007 à 18:19
Bonjour,
Cela ne se joue-t'il pas au niveau des options :goThumbTracking  ?

Dom
0
Utilisateur anonyme
7 août 2007 à 11:17
Biensur Delphiprog,

procedure TSound_Form.Bands_StringGridDrawCell(Sender: TObject; ACol,
  ARow: Integer; Rect: TRect; State: TGridDrawState);
begin
  If InDrawing=False then Exit;
  If (ARow in [1..IndexBand+1]) and  (aCol =2) Then
  With TStringGrid(Sender).Canvas do
    Begin
      Rect.Left:=Rect.Left+5;
      Rect.Top:=Rect.Top+5;
      Rect.Right:=Rect.Right-5;
      Rect.Bottom:=Rect.Bottom-5;
      StretchDraw(Rect, ImageBands[ARow-1].Picture.Graphic);
      Bands_StringGrid.Refresh;
    End;
end;

Désolé mais j'étais en vacances

Merci

@+
0
Rejoignez-nous