Entwickler-Ecke
Grafische Benutzeroberflächen (VCL & FireMonkey) - Zeile aus RichEdit löschen, wenn ReadOnly = true
mehmeh - Mi 27.07.05 10:02
Titel: Zeile aus RichEdit löschen, wenn ReadOnly = true
Hi,
ich hab ein RichEdit auf ReadOnly gesetzt und schreibe über RichEdit.lines.add() Daten hinein. Nun hab ich aber das Problem, dass ich ganz unten eine Leerzeile habe. Und die muss da weg, weil der Text per Mail verschickt wird und möglicher weiße wieder maschinell eingelesen wird und da deswegen am Ende keine Leerzeile stehen darf.
Wäre ja kein Problem die Leerzeile mit Entf zulöschen, aber in das Feld soll der Benutzer nichts ändern können.
wenn ich RichEdit.Lines.Delete oder Free mache, dann ist alles weg. Das klappt also nicht.
Habt ihr ne Idee?
jasocul - Mi 27.07.05 10:08
Du kannst bei Delete noch einen Index als Parameter übergeben. Der bestimmt dann die Zeile, die gelöscht werden soll.
mehmeh - Mi 27.07.05 10:28
Also ich hab´s
so
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| for i := 1 to 75 do RichEdit1.Lines.Add(IntToStr(i) + '=' + b[i]);
RichEdit1.Lines.Add('J=' + IntToStr(j)); RichEdit1.Lines.Add('S=' + b[s]);
i := RichEdit1.Lines.Count; RichEdit1.Lines.Delete(i); |
und das klappt nicht.
Aus mir momentan unerklärlichen Gründen ist da unten immer noch eine Leerzeile.
wenn
RichEdit1.Lines.Delete(i+1);
dann passiert nichts
aber wenn
RichEdit1.Lines.Delete(i-1);
dann wird die Zeile über der Leerzeile gelöscht
Was hab ich denn nur übersehen
jasocul - Mi 27.07.05 10:41
Das
Delphi-Quelltext
1:
| RichEdit1.Lines.Delete(i-1); |
wäre im Prinzip richtig.
Allerdings scheint ein Richedit die letzte Zeile mit "nichts" nicht mitzuzählen. Ich habs mir anzeigen lassen. Die Zeilenzahl entspricht der Anzahl, ohne diese berüchtigte letzte Zeile.
Lannes - Mi 27.07.05 11:00
Hallo,
richtig.
Die letzte Zeile wird zwar nicht mitgezählt, aber mit SaveToFile wird daraus eine Zeile in der RTF-Datei.
Die "berüchtigte letzte Zeile" und eventuelle Leerzeilen kannst Du mit folgendem Code entfernen:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:
| var s : String; z : Integer; begin for z := RichEdit1.Lines.Count-1 downto 0 do begin if RichEdit1.Lines[RichEdit1.Lines.Count-1] = '' then RichEdit1.Lines.Delete(RichEdit1.Lines.Count-1) else break; end; s := RichEdit1.Text; delete(s,Length(s)-1,2); RichEdit1.Text := s; RichEdit1.Lines.SaveToFile('C:\temp\Eine.rtf'); end; |
mehmeh - Mi 27.07.05 11:30
@ Lannes
das war eine sehr gute Antwort und es hat geklappt!
DANKE!
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!