Bonjour à tous,
Ma question est simple : comment savoir si le texte saisi dans un TEdit est apparent à l’écran ? De cette manière je peux gérer la taille de la fonte et la taille du TEdit.
Bonjour à tous,
Ma question est simple : comment savoir si le texte saisi dans un TEdit est apparent à l’écran ? De cette manière je peux gérer la taille de la fonte et la taille du TEdit.
Bonjour,
est ce que tu peux préciser ta question ? quand on tape du texte dans un TEdit "standard", il est visible à l'écran sauf si PasswordChar n'a pas la valeur caractère nulle (#0)
A+
Charly
Je pense que la question est de savoir si le texte saisi dépasse ou non en fonction de la largeur du TEdit.
On doit pouvoir faire ça en utilisant un canvas :
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 myCanvas : TControlCanvas; begin myCanvas := TControlCanvas.Create; try myCanvas.Control := Edit1; myCanvas.Font.Assign(Edit1.Font); // bien penser à utiliser la font du TEdit if myCanvas.TextWidth(Edit1.Text) > Edit1.Width then ShowMessage('Trop long'); finally FreeAndNil(myCanvas); end;
Et comme le fait Hermite, pour bloquer la saisie en longueur tu peux mettre ce code dans le OnKeyPress :
Sinon au lieu de Key := 0 tu peux agrandir le TEdit
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 procedure TForm1.Edit2KeyPress(Sender: TObject; var Key: Char); Var myCanvas : TControlCanvas; begin if (Key = Chr(vk_Back)) then Exit ; // pour pouvoir faire marche arrière ! myCanvas := TControlCanvas.Create; try myCanvas.Control := Edit2; myCanvas.Font.Assign(Edit2.Font); if myCanvas.TextWidth(Edit2.Text) > (Edit2.ClientWidth - myCanvas.TextWidth('a')) then // pour garder un peu de marge Key := #0 ; finally FreeAndNil(myCanvas); end; end;
Il existe aussi la propriété MaxLength que l'on utilise souvent pour limiter la saisie en nombre de caractères ...
A+
Charly
Bonjour,
Je vous remercie beaucoup pour vos réponses. Cependant j'ai oublié de préciser que je voudrais contrôler l'affichage dans un "Tdbedit", si les données ne sont pas complètement affichées je réduit la font mais le problème que Tdbedit ne contient pas les evenements "Onkeypress, onkeychange".![]()
Bonjour,
sous D7, mon TDBEdit comporte un OnKeyPress et un OnChange ??
A+
Charly
Partager