procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState); var CellText: string; begin with StringGrid1.Canvas do begin CellText := TStringGrid(Sender).Cells[Acol, ARow]; if TextIsValid(CellText) then // ton test de validité du contenu de la cellule Font.Style := [fsStrikeOut] else Font.Style := []; TextOut(Rect.Left + 2, Rect.Top + 2, CellText); end; end;
StringGrid1.Repaint;
4 oct. 2019 à 20:53
Merci pour ta réponse, super sympa.
Cordialement
Modifié le 5 oct. 2019 à 10:25
je viens d'essayer, j'aurais pas dû définir de cellule dans ma question.
c'est pas tout à fait ce que je recherche, car chaque cellule est différente. Voici le code d'essais.
Voilà ce que je voudrais, dans mon stringgrid, je voudrais saisir les verbes irréguliers en anglais cellules de la colonne 1 les verbes à l'infinitif, puis, saisir les réponses dans les autre cellules de la même ligne.
colonne(1)= Infinitif colonne(2)= Prétérit colonne(3)=Participe passé colonne(4)=Traduction
donc, saisir les réponses dans les colonnes 2,3, et les barrer en rouge si les réponses sont fausses.
Je pense, qu'il va falloir, valider les réponses avec un bouton et des conditions
if then je ne pense pas pouvoir barrer les cellules dont les réponses seront fausses.
ça le fait pour tout le stringgrid
Merci , de m'avoir aidé, en tout cas, c'est sympa
cordialement
désolé pour ma question mal posée.
5 oct. 2019 à 14:32
J'avais bien compris ta question.
Mais je crois que tu n'as pas compris le code que je te propose.
Dès qu'une réponse est entrée dans la StringGrid, tu appelles l'évènement Repaint qui va redessiner les cellules de ta StringGrid.
Les cellules sont toutes redessinées dans l'évènement DrawCell. La validité du contenu est vérifiée cellule par cellule dans la condition que j'ai appellé "TextIsValid" (c'est à toi de définir ce test) : si le contenu (string) est incorrect, le texte sera barré, si c'est correct, la cellule sera redessinée avec la police standard.