Détecter affichage scrollbar dans mémo [Résolu]

Messages postés
152
Date d'inscription
jeudi 22 novembre 2007
Dernière intervention
21 mars 2016
- 29 janv. 2010 à 16:48 - Dernière réponse :
Messages postés
152
Date d'inscription
jeudi 22 novembre 2007
Dernière intervention
21 mars 2016
- 29 janv. 2010 à 17:52
Bonjour à tous,

J'utilise sous Delphi 7 un TMemo, dont on veut que le texte saisi soit entièrement visible, sans barre de défilement.

Que ce soit pour diminuer la police, ou interdire la saisie de caractères supplémentaires, je dois détecter le moment où la scroll-bar deviendrait visible.

En cherchant, j'ai trouvé sur le message sujet-ASCENSEUR-SUR-RICHEDIT_707845 ce qui m'a permis d'écrire la méthode suivante:
procedure TForm1.Memo1Change(Sender: TObject);
begin
  if GetScrollPos(Memo1.Handle, SB_VERT) > 0 then
    ShowMessage('dépassement');
end;

Mais dans mon cas, je dois fixer:
Memo1.ScrollBars := ssNone;

pour qu'elle ne soit pas affichée. La position retournée par GetScrollPos n'est donc jamais supérieure à zéro.

Une fois de plus, je m'en remets à votre aide.
Bon week-end.
Afficher la suite 

Votre réponse

2 réponses

Meilleure réponse
Messages postés
152
Date d'inscription
jeudi 22 novembre 2007
Dernière intervention
21 mars 2016
29 janv. 2010 à 17:52
3
Merci
Je crois avoir trouvé une solution.

En utilisant la fonction CountVisibleLines, décrite sur la page sujet-ASCENSEUR-SUR-RICHEDIT_707845, j'ai pu bricoler la procédure suivante:

procedure TForm1.Memo1Change(Sender: TObject);
begin
  { s'il y a trop de lignes }
  if Memo1.Lines.Count > CountVisibleLines(Memo1) then
    { on restitue l'ancien texte sauvegardé dans la propriété Hint }
    Memo1.Text := Memo1.Hint
  { si la saisie est autorisée }
  else
    { on sauvegarde le nouveau texte dans la propriété Hint }
    Memo1.Hint := Memo1.Text;
end;


Il ne me reste plus qu'à reproduire proprement ce principe dans un composant indépendant, pour libérer la propriété Hint et l'évènement OnChange.

Qu'en pensez-vous ?

Merci zwyx 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 91 internautes ce mois-ci

Commenter la réponse de zwyx
Messages postés
152
Date d'inscription
jeudi 22 novembre 2007
Dernière intervention
21 mars 2016
29 janv. 2010 à 17:32
0
Merci
Cette première idée de récupérer la position de la scroll-bar pour savoir si une partie du message est masquée est complètement mauvaise.

Pour recentrer ma question, je cherche juste à interdire la saisie dans un TMemo, si cela entraine qu'une partie du texte ne soit pas visible, sans aucun défilement.
Commenter la réponse de zwyx

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.