Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi » Letzte Zeile eines Memofeldes löschen (https://www.delphipraxis.net/2982-%BB-letzte-zeile-eines-memofeldes-loeschen.html)

Pseudemys Nelsoni 17. Feb 2003 09:46

bei mir fügt das 1 neue zeile in die memobox und bei form1 caption wird immer um 1 erhöht hehe

ist der code ganz kopiert oder fehlt da ein teil?

btw hat "<-" einen "#..." wert? bzw welchen?

gruss und danke früs testen =)

sakura 17. Feb 2003 09:48

Zitat:

Zitat von janjan
hm, scheinbar erkennt Delphi die letzte leere Zeile nicht als vollwertige Zeile an.

Das liegt nicht an Delphi ;) Das Memo basiert auf einer Standard-Windows-Komponente. An die letzte Zeile wird immer automatisch ein Zeilenumbruch gesetzt, von daher besteht wohl die einzige Möglichkeit, nach dem setzen des Textes, darin, diesen manuell (via VK_BACK Nachricht) wieder zu löschen. Code dazu wurde ja bereits gepostet.

...:cat:...

janjan 17. Feb 2003 09:49

Mit '<-' meinte ich die Taste auf der Tastatur die diesen Pfeil nach links hat ;)

Pseudemys Nelsoni 17. Feb 2003 10:21

jo aber man muss die taste jairgendwie benutzen können, also ohne tastatur^^

btw:

hatte das nun so

Delphi-Quellcode:
procedure TForm1.IdIRC1Message(Sender: TObject; AUser: TIdIRCUser;
  AChannel: TIdIRCChannel; Content: String);
begin
memo1.Lines.Add('[' + auser.Nick + '] ' + content);
PostMessage(Memo1.Handle, WM_KEYDOWN, VK_BACK, 0 );
end;
aber die zeile ist nachwievor da :(

janjan 17. Feb 2003 10:25

Zitat:

Zitat von janjan
Meine Lösung (recht provisorisch, es sollte besseres geben):

1: Füge eine Zeile zu einem leeren Memo Feld hinzu

2: Einmal das hier ausführen:
Delphi-Quellcode:
PostMessage(Memo1.Handle, WM_KEYDOWN, VK_BACK, 0 );
3: Jetzt sollte jedes weitere Memo1.Lines.Add() normal verlaufen

Mach es mal genauso wie es oben steht, nimm ein leeres Memo, füge etwas per Memo1.Lines.Add() hinzu und führe einmal PostMessage(Memo1.Handle, WM_KEYDOWN, VK_BACK, 0 ); aus.

Wenn du danach Zeilen per Memo1.Lines.Add() hinzufügst sollte die leere Zeile nicht mehr auftreten.

Bei mir klappt das so, ich hab hier Delphi 7 auf Win XP laufen.

janjan 17. Feb 2003 10:27

Und jetzt noch als Programm:

nimm einen Button und ein Memo Feld


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 FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
memo1.Text:='';
memo1.Lines.Add('Hallo');
PostMessage(Memo1.Handle, WM_KEYDOWN, VK_BACK, 0 );
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
memo1.Lines.Add('test')
end;

end.

Pseudemys Nelsoni 17. Feb 2003 11:05

stimmt, wenn ich ein neues project mache mit den 2 komponenten gehts....bei meinen prog funzt das nicht, kannst daran liegen das

BorderStyle BsNone ist??

janjan 17. Feb 2003 12:19

So, ich glaub ich habs:

Delphi-Quellcode:
memo1.SelStart:=length(memo1.Text);
PostMessage(Memo1.Handle, WM_KEYDOWN, VK_BACK, 0 );
Für das einmal irgendwann aus, das sollte reichen.

Pseudemys Nelsoni 17. Feb 2003 12:33

jo klappt, danke :)

Pseudemys Nelsoni 17. Feb 2003 18:04

komisch in meinem projext funzte es nict, nichtmal wenn ich neues memo einfüg und damit teste, was ist das bloss :\
sieht doof aus wenn beim chat eine zeile leer ist


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:50 Uhr.
Seite 2 von 3     12 3      

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