Einzelnen Beitrag anzeigen

Benutzerbild von runningsoft
runningsoft

Registriert seit: 8. Okt 2004
Ort: Bernau
108 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: RichEdit - Schreibschutz für einzelne Zeilen

  Alt 18. Jan 2013, 17:05
Ich hab das jetzt so gelöst, dass ich die gesamte Länge des Textes ermittele und davon die Anzahl der Zeilenumbrüche abziehe. Diese Anzahl ermittle ich in einer Funktion, die das Vorkommen von #13 im gesamten Text zählt.

Wen der Code interessiert:

Delphi-Quellcode:
function TForm11.CountChar(const RichEdit: TRXRichEdit; s: string): integer;
//diese Funktion sucht in dem übergebenen RichEdit nach der Anzahl des gesuchten
//Zeichens
var I, x: integer;
    MyText : string;
begin
x := 0;
MyText := RichEdit.Text;
for I := 0 to Length(MyText) do
   begin
   if MyText[i] = s then
      Inc(x);
   end;
Result := x;
end;

procedure TForm11.Button2Click(Sender: TObject);
var i, TxtLength : integer;
begin
//Testtext erzeugen
for I := 0 to 9 do
   begin
   RxRichEdit1.Lines.Add('Zeile ' + IntToStr(i));
   end;
//bisher eingegebenen Text markieren
//über function CountChar werden alle Zeichen des Textes abzgl. des Zeichens für carriage-return (#13)
//ermittelt und das als Textlänge für SelLength übergeben
RxRichEdit1.SelStart := 0;
RxRichEdit1.SelLength := Length(RxRichEdit1.Text) - CountChar(RxRichEdit1,#13);
with RXRichEdit1.SelAttributes do Protected := true; //der bisher eingegebene Text ist jetzt schreibgeschützt
//Cursor in die nächste Zeile setzen
RxRichEdit1.SelStart := RxRichEdit1.SelLength + 1;
RxRichEdit1.SetFocus;
end;
  Mit Zitat antworten Zitat