Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi RichEdit Zeilen löschen (https://www.delphipraxis.net/4954-richedit-zeilen-loeschen.html)

Pseudemys Nelsoni 18. Mai 2003 12:07


RichEdit Zeilen löschen
 
hoi,

da der tittel zu lang ist und nicht passt hab ich ihn verkürzt

also meine frage...

sagen wir mal ich habe ein RichEdit .. nun möchte ich, das wenn 200 Zeilen eingefügt sind....die oberste (die erste) Zeile gelöscht wird, und immerso weiter, weiss wer wie das geht?

danke :)

gruss silent

Stanlay Hanks 18. Mai 2003 12:14

Das geht so:

Delphi-Quellcode:
RichEdit1.Lines.Delete(0);
Für 0 halt einfach die Zeilenzahl nullbasiert angeben.

Man liest sich, Stanlay 8)

Pseudemys Nelsoni 18. Mai 2003 12:28

thx

ich hab das so vor(im onchange des richedits):

wenn zeilen > 200 dann lösch zeile 0

wie prüf ich obs es 200 oder mehr zeilen sind?

Daniel B 18. Mai 2003 12:39

Hallo,

mit Lines.Count.

Grüsse, Daniel :hi:

Stanlay Hanks 18. Mai 2003 12:59

Delphi-Quellcode:
IF RichEdit1.items.count > 200
 THEN
  RichEdit1.Lines.Delete(0);

Man liest sich, Stanlay 8)

Christian Seehase 18. Mai 2003 13:02

Moin Silent,

statt Delete ginge es auch so:

Delphi-Quellcode:
  if RichEdit1.Lines.Count <= 200 then exit;
  RichEdit1.Lines.BeginUpdate;
  try
    RichEdit1.SelStart := SendMessage(RichEdit1.Handle,EM_LINEINDEX,0,0);
    RichEdit1.SelLength := SendMessage(RichEdit1.Handle,EM_LINEINDEX,199,0) + length(RichEdit1.Lines[199])+2;
    RichEdit1.ClearSelection;
  finally
    RichEdit1.Lines.EndUpdate;
  end;
EM_LINEINDEX gibt die Position des ersten Zeichens der angegebenen Zeile (Parameter nach der Message, nullbasiert) zurück, deshalb wird auch für SelLength auch noch die Länge der Zeile zzgl. 2 für den Zeilenvorschub genommen.

Stanlay Hanks 18. Mai 2003 13:14

@Christian. Warum einfach, wenns auch kompliziert geht :wink:
Aber ich find das ganz interessant. Wüsstest du da vielleicht auch was, wo man mit einem ähnlichen Befehl das letzte Zeichen einer Zeile rausfindet, in der gerade der Cursor is?

Christian Seehase 18. Mai 2003 13:21

Moin Stanlay,

ja:

Delphi-Quellcode:
SendMessage(RichEdit1.Handle,EM_LINEINDEX,-1,0) + length(RichEdit1.Lines[RichEdit1.CaretPos.y]);
statt der -1 kannst Du auch CaretPos.y benutzen, da bei dieser Message -1 "die Zeile in der sich das Caret befindet" meint.

Stanlay Hanks 18. Mai 2003 13:30

Danke! *danktgottfürsosupermoderatoren* :D :D :D

Man liest sich, Stanlay 8)

Pseudemys Nelsoni 18. Mai 2003 14:12

danke leute :)


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:08 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz