Einzelnen Beitrag anzeigen

DrUArn

Registriert seit: 20. Mär 2003
130 Beiträge
 
Delphi 10.3 Rio
 
#5

Re: trichedit selstart - in Delphi 2010 anders definiert?

  Alt 9. Feb 2010, 21:54
Stimmt - mein Vorschlag geht nur, wenn der Cursor in der richtigen Zeile steht - reicht für mein Programm - werde das aber noch mal verallgemeinern.

Hier ein allgemeingültiger Vorschlag:

der text eines Richedit könnte so aussehen:

01#13#10 (#13#10 nur zur veranschaulichung mitgeschrieben)
234#13#10
5678


Delphi-Quellcode:

function getcharcount(c:char;s:string):integer;
   //zählt c in s
   var p:pchar;
begin
  result:=0;
  p:=pchar(s);
  while p^<>#0 do begin if p^=c then inc(result);inc(p)end;
end;



function getnewselstart(atext:string;apos:integer):integer;
 var i:integer;

  //atext: der Text von trichedit; apos: die gewünschte Position des Cursors in atext
begin
  setlength(atext,apos); //kappen des textes bis zur gewünschten Position
  result:=apos-getcharcount(#13,atext);//von dieser gewünschten Positon die Anzahl der darin enthaltenen Zeilenvorschübe abziehen
end;


procedure test;
 var p:string;
begin
 p:='7'
 richedit1.SelStart:=getnewselstart(richedit1.Text,pos(p,richedit1.Text));
 richedit1.sellength:=1;//damit mans auch sieht
end;
pos(p,richedit1.Text) ergibt 12;
für selstart ist
- in einem tmemo die Anzahl der Buchstaben (8) + 4 für den Zeilenvorschub macht selstart=12
- im neuen trichedit die Anzahl der Buchstaben (8) + 2 für den Zeilenvorschub macht selstart=10


markiert wird die 8 nunmehr auch im "neuen" trichedit
  Mit Zitat antworten Zitat