Comment limités 2 caractères dans un stringgrid lors d'une saisie ???
dans un keypress
Merci de votre aide ...
Comment limités 2 caractères dans un stringgrid lors d'une saisie ???
dans un keypress
Merci de votre aide ...
Tu testes la longueur de la Cells en cours (Row, Col) avec Length ?
Après tu peux gérer si Key contient un BackSpace ou Escape ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 if Length(Cells[Col, Row)) >= 2 then // Vérifie l'ordre de Col\Row Key := #0;
Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !![]()
Attention Troll Méchant !
"Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
L'ignorance n'excuse pas la médiocrité !
L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
Il faut avoir le courage de se tromper et d'apprendre de ses erreurs
salut
lors de la saisie c'est sur le TInplaceEdit qu'il faut travailler
ensuite c'est identique au composant d'édition
@+ Phil
Le Sujet de Cre3000 est dans la Section Débutant, Anapurna détaille un peu plus l'utilisation du InplaceEditor qui doit se faire par héritage puisque la propriété est protégée ... (ou avec un Hack du Protected mais ce n'est pas très élégant ...)
Cre3000, tu peux aussi utiliser OnSetEditText pour tronquer systématiquement la valuer ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 procedure TForm1.StringGrid1SetEditEvent(Sender: TObject; ACol, ARow: Longint; var Value: string); begin Value := Copy(Value, 1, 2); end;
Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !![]()
Attention Troll Méchant !
"Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
L'ignorance n'excuse pas la médiocrité !
L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
Il faut avoir le courage de se tromper et d'apprendre de ses erreurs
salut
@+ Phil
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 interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, Grids; type TMyInplaceEdit = class (TInplaceEdit) protected procedure KeyPress(var Key: Char); override; end; TStringGrid = class(Grid.TStringGrid) protected function CreateEditor: TInplaceEdit; override; end; MaForm = Class(TForm) ... end; implementation function TStringGrid.CreateEditor: TInplaceEdit; begin Result := TMyInplaceEdit.Create(Self); end; procedure TMyInplaceEdit.KeyPress(var Key: Char); begin if length(TEXT) > 2 Then begin beep; Key := #0 end else inherited; end; ... end.
Le code suivant semble bien fonctionner , sauf quand je fait tab pour
changer de case il y a toujours un beep que se fait (ca tombe sur les nerfs) , de qu'elle facon peut t'on remédié le problème?
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 procedure TFormTableur649.StringGrid4KeyPress(Sender: TObject; var Key: Char); var col,row:INTEGER; begin if not(Key in['0'..'9',',','.',#8,#13]) then Key:=#15; row:=StringGrid4.selection.left; col:=StringGrid4.selection.top; if Length(stringgrid4.Cells[row,col]) >= 2 then // Vérifie l'ordre de Col\Row Key := #0; end;
Partager