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 Memo zeilen Löschen (https://www.delphipraxis.net/57864-memo-zeilen-loeschen.html)

Bernd29bln 27. Nov 2005 23:20


Memo zeilen Löschen
 
Hallo

Ich möchte das immer die ersten 4 Zeilen in meinem Memo Gelöscht werden .
Wie bekomme ich das hin?

Gruss Bernd

turboPASCAL 27. Nov 2005 23:46

Re: Memo zeilen Löschen
 
Delphi-Quellcode:
Memo1.Lines.Delete( Index );
Also für die ersten 4 Zeilen:
Delphi-Quellcode:
Memo1.Lines.Delete(0);
...
Memo1.Lines.Delete(3);

Bernd29bln 27. Nov 2005 23:59

Re: Memo zeilen Löschen
 
Hallo,

sind 9 zeilen Sorry, klappt so net.
es Bleiben noch einige zeilen stehen.

Gruss Bernd

Hansa 28. Nov 2005 00:12

Re: Memo zeilen Löschen
 
Zeilen 5..9 bleiben natürlich stehen. Also besser : for-Schleife.

Bernd29bln 28. Nov 2005 00:16

Re: Memo zeilen Löschen
 
Hallo,

Danke für den Tip Klappt soweit.
Wie bekomme ich den Text im Memo nach oben in die erste zeile ?

Gruss Bernd

Martin K 28. Nov 2005 00:22

Re: Memo zeilen Löschen
 
Was hältst du davon:
Delphi-Quellcode:
var i,j: Integer; //j: die ersten j Zeilen löschen
begin
  For i:=1 to j do
  Memo1.Lines.Delete(0);
end;
Was meinst du denn mit Text ?
Text bedeutet normal der ganze Inhalt des Memos (also mit #13#10 als Zeilenumbruch).
Du meinst wahrscheinlich, du willst eine bestimmte Zeile als die erste Zeile verwenden, oder wie ist deine Frage zu verstehen?

Bernd29bln 28. Nov 2005 00:30

Re: Memo zeilen Löschen
 
Hallo Martin K,

Ja genauso meinte ich das.


Gruss bernd

Hansa 28. Nov 2005 00:30

Re: Memo zeilen Löschen
 
Das da wird ja wohl noch hinzukriegen sein. 8) Die Form hat ein Memo und einen Button. Das Memo wird im OI vorbesetzt, siehe DFM. Bei jedem Drücken des Buttons verschwinden die ersten beiden Zeilen aus dem Memo und der Rest rutscht nach oben.

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Memo1: TMemo;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
  Memo1.Lines.Delete(0);
  Memo1.Lines.Delete(1);
end;

end.
Delphi-Quellcode:
object Form1: TForm1   // Form als Text
  Left = 232
  Top = 103
  Width = 696
  Height = 480
  Caption = 'Form1'
  Color = clBtnFace
  Font.Charset = DEFAULT_CHARSET
  Font.Color = clWindowText
  Font.Height = -11
  Font.Name = 'MS Sans Serif'
  Font.Style = []
  OldCreateOrder = False
  PixelsPerInch = 96
  TextHeight = 13
  object Memo1: TMemo
    Left = 200
    Top = 128
    Width = 185
    Height = 89
    Lines.Strings = (
      'Memo1'
      '2'
      '3'
      '4'
      '5'
      '6'
      '7'
      '8')
    ScrollBars = ssVertical
    TabOrder = 0
  end
  object Button1: TButton
    Left = 112
    Top = 328
    Width = 75
    Height = 25
    Caption = 'Button1'
    TabOrder = 1
    OnClick = Button1Click
  end
end

Martin K 28. Nov 2005 00:47

Re: Memo zeilen Löschen
 
Also, falls es das ist, was du suchst:

Eine bestimmte Zeile x aus Memo1 von der alten Stelle entfernen, und als erste Zeile verwenden (die erste Zeile wird dann natürlich zur zweiten):

Delphi-Quellcode:
//x: Zeile x löschen und als erste Zeile einfügen (Achtung: erste Zeile: x=0, zweite Zeile: x=1, usw.)
var x: Integer; s: String;
begin
  s:=Memo1.Lines[x];
  Memo1.Lines.Delete(x);
  Memo1.Lines.Insert(0,s);
end;
So müsste es gehen ...

Sharky 28. Nov 2005 06:24

Re: Memo zeilen Löschen
 
Zitat:

Zitat von Hansa
Das da wird ja wohl noch hinzukriegen sein.

Jo, denke ich auch. Zumal der Code von Martin richtig ist.

Zitat:

Zitat von Hansa
.. Bei jedem Drücken des Buttons verschwinden die ersten beiden Zeilen aus dem Memo ..

Ähmm.. eigentlich nicht. Bei deinem Code wird die erste und dritte Zeile im Memo gelöscht.
Nach dem aufruf von .Delete(0) wird die erste Zeile gelöscht und alle anderen rücken eins nach oben. Dann wird durch .Delete(1) die zweite Zeile gelöscht welche zuvor ja die dritte war.

Code:
_        .Lines.Delete(0)           .Lindes.Delete(1)
eins                        zwei                        zwei
zwei                        drei                        vier
drei                        vier                        fünf
vier                        fünf
fünf
EDIT nach Hinweiss von MaBuSE

MaBuSE 28. Nov 2005 06:38

Re: Memo zeilen Löschen
 
Zitat:

Zitat von turboPASCAL
Delphi-Quellcode:
Memo1.Lines.Delete( Index );
Also für die ersten 4 Zeilen:
Delphi-Quellcode:
Memo1.Lines.Delete(0);
...
Memo1.Lines.Delete(3);

bzw
Zitat:

Zitat von Hansa
Delphi-Quellcode:
...
procedure TForm1.Button1Click(Sender: TObject);
begin
  Memo1.Lines.Delete(0);
  Memo1.Lines.Delete(1);
end;
...

Ich finde es "lustig", dass immer wieder dieser "Anfängerfehler" gemacht wird.

Wenn die 1. Zeile gelöscht wird, dann "rückt" der andere Text nach.
In der 1. Zeile steht nun die 2. Zeile (Die 1. ist ja gelöscht worden)
Wenn man nun die 2. Zeile löscht, wird ja die 3. Zeile entfernt (Die nun an 2. Stelle steht).
Es muss also noch mal die 1. Zeile gelöscht werden.

Martin hat es richtig gemacht:
Zitat:

Zitat von Martin K
Was hältst du davon:
Delphi-Quellcode:
var i,j: Integer; //j: die ersten j Zeilen löschen
begin
  For i:=1 to j do
  Memo1.Lines.Delete(0);
end;

Wenn Memo1.Lines.Delete(0); 4 mal aufgerufen wird, sind die ersten 4 Zeilen gelöscht.

Alternativ könnte man auch von hinten nach vorne löschen, dann kann man durchaus auf die Einzelnen Zeilen zugreifen, da dann das "nachrücken" ohne Belang ist.

Delphi-Quellcode:
...
Memo1.Lines.Delete(3);
Memo1.Lines.Delete(2);
Memo1.Lines.Delete(1);
Memo1.Lines.Delete(0);
...
oder
Delphi-Quellcode:
...
for i downto 3 to 0 do
  Memo1.Lines.Delete(i);
...
Ich bevorzuge aber den Lösungsansatz von Martin.

MaBuSE 28. Nov 2005 06:42

Re: Memo zeilen Löschen
 
Zitat:

Zitat von Sharky
Bei deinem Code wird die erste und dritte Zeile im Memo gelöscht.
Nach dem aufruf von .Delete(0) wird die erste Zeile gelöscht und alle anderen rücken eins nach oben. Dann wird durch .Delete(1) die zweite Zeile gelöscht welche zuvor ja die dritte war.
Code:
_        .Lines.Delete(0)           .Lindes.Delete(1)
eins                        zwei                        drei
zwei                        drei                        vier
drei                        vier                        fünf
vier                        fünf
fünf

Hallo Sharky,
Ich habe gar nicht gesehen, das Du auch das angesprochen hast :-)
Aber Du wolltest wohl das schreiben:
Code:
_        .Lines.Delete(0)           .Lines.Delete(1)
eins                        zwei                        [b]zwei[/b]
zwei                        drei                        vier
drei                        vier                        fünf
vier                        fünf
fünf

Sharky 28. Nov 2005 06:45

Re: Memo zeilen Löschen
 
Zitat:

Zitat von MaBuSE
... Aber Du wolltest wohl das schreiben:

:oops: Naja, es ist früh und ich habe erst einee halbe Tasse Kaffee in mir. (Danke für den Hinweiss)

Hansa 28. Nov 2005 13:51

Re: Memo zeilen Löschen
 
Zitat:

Zitat von MaBuSE
Ich finde es "lustig", dass immer wieder dieser "Anfängerfehler" gemacht wird.

Lustig ? Entetzlich. :mrgreen: Mein Memo hat jedenfalls immer 2 Zeilen am Anfang weniger angezeigt. Welche war mir dabei egal. 8) Aber Mabuse hat natürlich vollkommen Recht. Werde mir das merken, denn wer weiß, ob man nicht mal selber konkret "Memo zeilen Löschen" muß. 8)

Bernd29bln 28. Nov 2005 17:13

Re: Memo zeilen Löschen
 
Hallo @All,

Danke für eure vielen Antworten .

Gruss Bernd

Martin K 28. Nov 2005 17:28

Re: Memo zeilen Löschen
 
Zitat:

Zitat von MaBuSE
Ich bevorzuge aber den Lösungsansatz von Martin.

Das ist ja auch der beste :wink: !

@Bernd29bln:
Ich hoffe, deine Fragen sind jetzt auch beantwortet.
Kommst du mit den Codes klar?

Bernd29bln 28. Nov 2005 20:45

Re: Memo zeilen Löschen
 
Hallo Martin K,

Ja Klar, habs hinbekommen und vielen Dank an Euch alle :thumb:

Gruss Bernd


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:12 Uhr.

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