Différence de résultat avec richedit sous W95 et W2000
cs_philpas
Messages postés77Date d'inscriptionlundi 17 octobre 2005StatutMembreDernière intervention 4 septembre 2008
-
15 févr. 2006 à 12:12
cs_Delphiprog
Messages postés4297Date d'inscriptionsamedi 19 janvier 2002StatutMembreDernière intervention 9 janvier 2013
-
16 févr. 2006 à 12:30
Bonjour,
J'ai un petit problème. Dans un richedit j'affiche la réception des données du port série. Les lignes défilent une à une. J'utilise ça. SendMessage(RichEdit2_Reception.Handle, WM_VScroll, SB_LINEDOWN, 0); pour faire monter l'affichage d'une ligne. Sous W2000, tout fonctionne bien. Richedit m'affiche jusqu'à la dernière ligne (le curseur de scrollbar est tout en bas). Mais lorsque j'utilise mon programme sous W95 ou sous W98, je n'ai pas le même résultat. On dirait que l'affichage est en retard et lorsque la réception est fini, j'ai une page blanche lorsque la scrollbar est en bas (si je remonte la scrollbar d'une ligne vers le haut, je vois la dernière ligne reçu) et si je règle ce problème sous W95 ou W98, c'est sur W2000 que j'ai ce phénomène.
Donc 2 questions:
Comment dois faire pour que richedit fonctionne de la même manière quelque soit le système d'exploitation? si c'est possible. sinon
si je dois connaitre le système d'exploitation pour rajouter des instructions if .Comment je trouve l'info pour connaitre le système d'exploitation utilisé?
@+
A voir également:
Différence de résultat avec richedit sous W95 et W2000
cs_philpas
Messages postés77Date d'inscriptionlundi 17 octobre 2005StatutMembreDernière intervention 4 septembre 2008 15 févr. 2006 à 13:03
qu'est ce qui n'est pas possible? le problème de richedit?
si c'est cela que tu veux dire, fait le test suivant avec un bouton et un richedit qui t'affiche 13 lignes
procedure TFiche_Parametrage.Button1Click(Sender: TObject);
var Ligne_Emission:TStringList;
i:integer;
begin
Ligne_Emission:=TStringList.Create;
ligne_Emission.LoadFromFile('m.txt'); // mettre le nom d'un fichier texte assez long
i:=-1;
repeat
i:=i+1;
RichEdit2_Reception.Lines.Add(ligne_Emission[i]);
SendMessage(RichEdit2_Reception.Handle, WM_VScroll, SB_LINEDOWN, 0);
until i=ligne_Emission.Count-1;
Ligne_Emission.Free;
end;
sous W2000 ça marche et sous W9* ça affiche une page en retard et si je met la scrollbar tout en bas j'ai une page blanche de 13 lignes
sinon merci pour m'avoir dit comment trouver le n° du système d'exploitation
@+
cs_philpas
Messages postés77Date d'inscriptionlundi 17 octobre 2005StatutMembreDernière intervention 4 septembre 2008 15 févr. 2006 à 13:54
j'ai fait d'autre test et je constate que sous W9* la scrollbar de richedit permet de faire monter le texte de la dernière ligne jusqu'à que cette ligne disparaissent de l'écran. Donc c'est pas le problème et la solution que je pensais au départ
@+
cs_philpas
Messages postés77Date d'inscriptionlundi 17 octobre 2005StatutMembreDernière intervention 4 septembre 2008 15 févr. 2006 à 15:24
non je ne crois pas richEdit.lines.count donne le nb de ligne contenu dans richedit et non le nb de ligne que (comment dirais je ?) richedit affiche à l'écran.
J'explique richedit sur ta form à une hauteur (X pixels), la police de caratère utilisé à une hauteur de Y pixel. Le nb de ligne que richedit peut afficher à l'écran est X pixel/Y pixel. C'est cela que je voudrais savoir, une fonction de genre count mais qui donne la valeur X/Y pixel en quelque sorte (Le nb de ligne que richedit peut afficher dans sa surface)
cs_Delphiprog
Messages postés4297Date d'inscriptionsamedi 19 janvier 2002StatutMembreDernière intervention 9 janvier 201332 15 févr. 2006 à 20:56
As-tu vérifié les versions des bibliothèques riched.dll dans le répertoire windows ?
Selon le niveau de version, les résultats sont différents, notamment en nombre de lignes acceptées.
flor003 : merci pour le lien
<HR color=#008000>
Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.