Empecher le scroll automatique dans un richedit

Résolu
arnaud_tournier Messages postés 34 Date d'inscription jeudi 16 septembre 2004 Statut Membre Dernière intervention 25 mars 2007 - 15 nov. 2004 à 19:16
japee Messages postés 1727 Date d'inscription vendredi 27 décembre 2002 Statut Modérateur Dernière intervention 6 novembre 2021 - 16 nov. 2004 à 21:35
Hello,

J aurais aimé savoir comment on peut empecher le scrolling automatique qui est provoqué par =>

richEdit.SelText := sTmp;

car lorsque je veux modifer un texte volumineux, le scroll automatique se fait et j aimerais éviter pour que l utilisateur s apercoive de la modification du texte vu que c est une modification de selattribute que je fait en gros la couleur....

Merci d avance.

Arnaud

6 réponses

arnaud_tournier Messages postés 34 Date d'inscription jeudi 16 septembre 2004 Statut Membre Dernière intervention 25 mars 2007
16 nov. 2004 à 19:39
Désolé les gars de vous avoir embeté mais j ai trouvé....

Merci pour tout en fait j ai cherché trop complitqué alors qu il y avait beaucoup plus simple

RichEdit.PlainText := false;
RichEdit.SelText := getRTFHeader + sTotalLineToWrite + '}';
RichEdit.PlainText := true;

et ca marche LOL... c est juste qu il me semnblait que j avais essayé et pfff, j avais du fair une connerie car ca amrchait pas...

En tout cas merci beaucoup......

Arnaud
3
jmp77 Messages postés 1119 Date d'inscription lundi 4 février 2002 Statut Membre Dernière intervention 4 octobre 2006 7
16 nov. 2004 à 09:31
Salut,

Tout ce que je peux te conseillée c'est de bloquer le raffraichissement de l'ecran avec cette commande :

Try
LockWindowUpdate(Form1.Handle); //On bloque l'affichage de l'écran sur la fenetre 1
{Ici tu fais tes modifications}

finally
LockWindowUpdate(0); //On debloque l'affichage de l'écran
end;

Voila dis moi si ca fonctionne avec ça.

Bonne prog,
JMP77.
0
japee Messages postés 1727 Date d'inscription vendredi 27 décembre 2002 Statut Modérateur Dernière intervention 6 novembre 2021 8
16 nov. 2004 à 15:33
Si la solution de jmp77 ne te convient pas (?), j'en ai une autre qui utilise les messages Windows.

Mais je suis étonné que la sélection d'un texte dans un TRichEdit provoque automatiquement le scrolling.

Peut-être si tu balançais ton bout de code, même simplifié ?

Enfin, tiens-nous au courant.

Bonne prog' :-p

japee

N'oubliez pas de valider "Réponse acceptée" si ça vous convient, de toute manière vous ne pouvez pas valider autre chose, mdr ! :big)
0
japee Messages postés 1727 Date d'inscription vendredi 27 décembre 2002 Statut Modérateur Dernière intervention 6 novembre 2021 8
16 nov. 2004 à 15:41
Je voulais évidemment dire que j'étais étonné que le remplacement d'un texte sélectionné dans un TRichEdit, en fonction de la position du curseur, et aussi long que soit le texte de remplacement, provoque automatiquement le scrolling... Je n'ai pas cet effet chez moi...

N'oubliez pas de valider "Réponse acceptée" si ça vous convient, de toute manière vous ne pouvez pas valider autre chose, mdr ! :big)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
arnaud_tournier Messages postés 34 Date d'inscription jeudi 16 septembre 2004 Statut Membre Dernière intervention 25 mars 2007
16 nov. 2004 à 19:24
Merci pour vos réponses mais la solution de jmp77 ne marche pas dans mon cas, mais effectivement japee tu as raison je n ai peut etre pas été assez clair en fait ce n est pas quand je change le seltext mais quand je fais un SetSelRichText comme l'implémentation suit =>

procedure TFrmChild.SetSelRichText(Stream: TStream);
// Loads the (formatted) contents of the stream to the RichEdit.
var
editStream: TEditStream;
numChars: integer;
begin
Stream.Seek(0, soFromBeginning);
editStream.dwCookie := longint(Stream);
editStream.dwError := 0;
editStream.pfnCallback := @EditStreamIn;
numChars := SendMessage(RichEdit.Handle, EM_STREAMIN, SF_RTF or SFF_SELECTION, longint(@editStream));
end;

avec editstream =>

function EditStreamIn(dwCookie: Longint; pbBuff: PByte;cb: Longint; var pcb: Longint): Longint; stdcall;
var
theStream: TStream;
begin
theStream := TStream(dwCookie);
Result := 0;
with theStream do
begin
if (Size - Position) <= cb then
begin
pcb := Size;
Read(pbBuff^, Size - Position);
end
else
begin
pcb := cb;
Read(pbBuff^, cb);
end;
end;
end;

en fait je voudrait insérer dans mon texte du texte au format RTF et j ai trouvé que cette solution mais le problème est que y a le scroll qui se déclanche, snifff....

donc j aimerais soit sonnaitre un autre moyen pour insérer du texte RTF ou empecher le scroll....

merci d avance

Arnaud
0
japee Messages postés 1727 Date d'inscription vendredi 27 décembre 2002 Statut Modérateur Dernière intervention 6 novembre 2021 8
16 nov. 2004 à 21:35
Pas de problème, arnaud_tournier, tu m'as fait mettre un peu d'ordre dans certains bouts de code que j'avais égarés.
Je vais faire un peu de rangement, faut absolument que je m'y mette...

Si tout va bien pour toi, c'est OK ;)

japee

N'oubliez pas de valider "Réponse acceptée" si ça vous convient, de toute manière vous ne pouvez pas valider autre chose ! :big)
0
Rejoignez-nous