TStringGrid - peut-on limiter le nombre caractères saisis dans les cellules ? [Résolu]

Signaler
Messages postés
4
Date d'inscription
mardi 26 octobre 2004
Statut
Membre
Dernière intervention
19 octobre 2005
-
Messages postés
436
Date d'inscription
jeudi 9 janvier 2003
Statut
Membre
Dernière intervention
5 février 2015
-
A l'image d'un TEdit et de MaxLength, est-il possible de limiter le nombre de caractères saisis dans toutes les cellules d'une colonne particulière ?

3 réponses

Messages postés
4
Date d'inscription
mardi 26 octobre 2004
Statut
Membre
Dernière intervention
19 octobre 2005

Merci DrJerome

J'ai modifié légèrement ta réponse pour prendre en compte la touche BackSpace qui doit pouvoir fonctionner même si la longueur est atteinte. De plus la gestion de Stop doit se faire entièrement dans StringGrid1KeyPress pour fonctionner correctement. Ce qui donne :

procedure TForm1.StringGrid1SetEditText(Sender: TObject; ACol, ARow: Integer; const Value: string);
begin
Stop:(ACol 2) and (Length(Value) >= 3)
end;

procedure TForm1.StringGrid1KeyPress(Sender: TObject; var Key: Char);
begin
if Stop and (Ord(Key) <> 8) then Key := chr(0);
end;
Messages postés
436
Date d'inscription
jeudi 9 janvier 2003
Statut
Membre
Dernière intervention
5 février 2015

<HR>


var
Form1: TForm1;
Stop:boolean;

implementation


{$R *.DFM}


procedure TForm1.StringGrid1SetEditText(Sender: TObject; ACol,
ARow: Integer; const Value: String);
begin
if (ACol=2) and (Length(Value)=3) then Stop:=true;
end;


procedure TForm1.StringGrid1KeyPress(Sender: TObject; var Key: Char);
begin
if Stop then Key:=chr(0);
end;


procedure TForm1.StringGrid1Click(Sender: TObject);
begin
Stop:=false;
end;

<HR>

dans cet exemple si la colonne est la n°2 on ne peut rentrer au-delà de 3 caractères

(il y a certainement d'autres solutions)

Transforme le code à ta guise


N'oubliez pas de cliquer sur Réponse acceptée si c'est OK



DrJerome
Messages postés
436
Date d'inscription
jeudi 9 janvier 2003
Statut
Membre
Dernière intervention
5 février 2015

tout à fait, vaut mieux l'avoir cette touche Backspace ;)

DrJerome