JuniorFr
Messages postés9Date d'inscriptionjeudi 15 août 2002StatutMembreDernière intervention25 août 2002
-
23 août 2002 à 19:51
JuniorFr
Messages postés9Date d'inscriptionjeudi 15 août 2002StatutMembreDernière intervention25 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..
cs_ManChesTer
Messages postés374Date d'inscriptionvendredi 20 octobre 2000StatutModérateurDernière intervention15 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;
JuniorFr
Messages postés9Date d'inscriptionjeudi 15 août 2002StatutMembreDernière intervention25 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
cs_Nono40
Messages postés962Date d'inscriptionmercredi 3 avril 2002StatutMembreDernière intervention12 septembre 20062 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;