Retour Chariot et carrés blancs

JuniorFr Messages postés 9 Date d'inscription jeudi 15 août 2002 Statut Membre Dernière intervention 25 août 2002 - 23 août 2002 à 19:51
JuniorFr Messages postés 9 Date d'inscription jeudi 15 août 2002 Statut Membre Dernière intervention 25 août 2002 - 25 août 2002 à 18:56
Voila j'ai un problème avec les retours chariot (#13#10) lorsque je les appels plusieurs fois.
Voici une portion de code pour comprendre mon problème:

const
RetLgn = #13#10;

...

ButtonClick(Sender:TObject)
begin
Memo.SelText := 'Texte1'+RetLgn+Memo.SelText+RetLgn+'Text2'+RetLgn;
end;

Et bien dans ce cas lorsque j'appel une fois la procedure vie buttonClick, ca va. Mais quand je la'ppel une deuxième fois sans bouger la position du curseur, et bien j'ai pleins de petits carrés blancs qui s'affichent.. Je vois pas ce qui peut faire ca. D'autant que j'ai essayer en mettant ou non la convetion OLE..

Merci de bien m'aider a ce petit problème.

JuniorFr

4 réponses

cs_ManChesTer Messages postés 374 Date d'inscription vendredi 20 octobre 2000 Statut Modérateur Dernière intervention 15 janvier 2021
24 août 2002 à 04:50
-------------------------------
Réponse au message :
-------------------------------

Voila j'ai un problème avec les retours chariot (#13#10) lorsque je les appels plusieurs fois.
Voici une portion de code pour comprendre mon problème:

const
RetLgn = #13#10;

...

ButtonClick(Sender:TObject)
begin
Memo.SelText := 'Texte1'+RetLgn+Memo.SelText+RetLgn+'Text2'+RetLgn;
end;

Et bien dans ce cas lorsque j'appel une fois la procedure vie buttonClick, ca va. Mais quand je la'ppel une deuxième fois sans bouger la position du curseur, et bien j'ai pleins de petits carrés blancs qui s'affichent.. Je vois pas ce qui peut faire ca. D'autant que j'ai essayer en mettant ou non la convetion OLE..

Merci de bien m'aider a ce petit problème.

JuniorFr

ButtonClick(Sender:TObject)
begin
Memo.SelText := ''; Memo.SelText := 'Texte1'+RetLgn+Memo.SelText+RetLgn+'Text2'+RetLgn;
end;

Ca devrais régler ton problème.

Bon Coding...

ManChesTer
0
JuniorFr Messages postés 9 Date d'inscription jeudi 15 août 2002 Statut Membre Dernière intervention 25 août 2002
24 août 2002 à 16:25
Merci ManChesTer mais ca ne marche pas. J'avais oublier de préciser que je modifiais la position du curseur.
bon je vous met la portion plus complète de mon code:

const
RetLgn = #13#10;

type
TForm1 = class(TForm)
procedure Button1Click(Sender:TObject);
private
procedure SelectionText(Deb, Fin : string; Nb : integer);


procedure SelectionText(Deb, Fin : string; Nb : integer);
var
tmp : string;
begin
If Memo1.SelText = '' then
begin
Memo1.SelText := Deb + Memo1.SelText + Fin;
Memo1.SelStart := Memo1.SelStart - Nb;
end
Else
begin
tmp := Memo1.SelText;
Memo1.SelText := Deb + Memo1.SelText + Fin;
end;
end;

procedure Button1Click(Sender:TObject);
begin
SelectionText('Texte1'+RetLgn,RetLgn+'Texte2'+RetLgn,9);
end;

Le procedure SelectionText permet de positionner le curseur entre les deux chaines de caractères si il n'y a pas de sélection (sinon la sélection est remplacée).
Voila, toujours le même problème : quand je clique deux fois de suite sur le button1 sans sélection et sans bouger le curseur, j'ai de joli carrés blancs.
Merci

JuniorFr
0
cs_Nono40 Messages postés 962 Date d'inscription mercredi 3 avril 2002 Statut Membre Dernière intervention 12 septembre 2006 2
25 août 2002 à 04:39
Le problème vient du fait qu'après la première insertion, la position du curseur est placée entre le #13 et le #10. ( ce qui ne ce voit pas ). Il faut donc tester si le début de la sélection est un #10 pour déplacer le SelStart d'un caractère. Tu évites ainsi les rectangles noirs :

Begin
Tmp:=Memo1.Text;
If ((Memo1.SelStart+1)<=Length(Tmp))And (Tmp[Memo1.SelStart+1]=#10) Then Memo1.SelStart:=Memo1.SelStart+1;
If Memo1.SelText = '' then
begin
Memo1.SelText := Deb + Memo1.SelText + Fin;
Memo1.SelStart := Memo1.SelStart - Nb;
end
Else begin
Memo1.SelText := Deb + Memo1.SelText + Fin;
end;
End;

--- :sleepy) Nono du Moulin :sleepy) ---
0
JuniorFr Messages postés 9 Date d'inscription jeudi 15 août 2002 Statut Membre Dernière intervention 25 août 2002
25 août 2002 à 18:56
Merci bien Nono, ca marche impec. Maintenant je connais l'astuce.
@++

JuniorFr
0
Rejoignez-nous