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

zwyx 152 Messages postés jeudi 22 novembre 2007Date d'inscription 21 mars 2016 Dernière intervention - 29 janv. 2010 à 16:48 - Dernière réponse : zwyx 152 Messages postés jeudi 22 novembre 2007Date d'inscription 21 mars 2016 Dernière intervention
- 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
zwyx 152 Messages postés jeudi 22 novembre 2007Date d'inscription 21 mars 2016 Dernière intervention - 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

codes-sources a aidé 82 internautes ce mois-ci

Commenter la réponse de zwyx
zwyx 152 Messages postés jeudi 22 novembre 2007Date d'inscription 21 mars 2016 Dernière intervention - 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.