Autor Beitrag
snakeweb
Hält's aus hier
Beiträge: 2



BeitragVerfasst: So 10.11.02 14:59 
Hallo,

ich möchte in einem Memo Feld, in dem ein Text steht, einen vorgegebenen Text in der aktuellen Cursor Zeile einfügen.

Ein Memo Feld, einen Button, dem ich den Text
ausblenden Delphi-Quelltext
1:
2:
3:
procedure TForm1.Button1Click(Sender: TObject);
begin
  Memo1.Lines.add ('Neu')

hinterlegt habe, habe ich schon eingefügt.

Nur wie ich jetzt den Text in der Cursor Zeile einfüge, weiß ich nicht. Bei mir wird der Text immer in der letzten Zeile unter dem schon geschriebenen Text eingefügt

Bitte schreibt den Quelltext mit dabei
Danke! :-)

(10.11.02 23:49 Tino) Code-Tags hinzugefügt.

Moderiert von user profile iconraziel: Code- durch Delphi-Tags ersetzt.
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: So 10.11.02 15:27 
Hi!

Ich bin mir nicht ganz sicher, ob es das ist, was Du brauchst, aber folgende beiden Codes fügen an der Cursorposition einen Text ein.

ausblenden Delphi-Quelltext
1:
2:
3:
Memo1.text:=Copy(Memo1.Text,1,Memo1.SelStart)
  +'Hallo'
  +Copy(Memo1.Text,Memo1.SelStart+1,Length(Memo1.Text)-Memo1.SelStart+1);

und (mit VAR temp : STRING):
ausblenden Delphi-Quelltext
1:
2:
3:
temp:=Memo1.text;
Insert('Hallo',temp,Memo1.SelStart+1);
Memo1.text:=temp;


Wenn Du eine ganze Zeile einfügen möchtest, solltest Du Dir mal die Prozedur Memo1.Lines.Insert anschauen. Wie Du herausfindest, in welcher Zeile sich der Cursor befindet, wurde hier im Forum schon mal behandelt (glaube ich zumindest).

MfG,
Peter

Moderiert von user profile iconraziel: Code- durch Delphi-Tags ersetzt.

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
Sonny
Hält's aus hier
Beiträge: 10

WIN XP, SuSE 9.1 Pro, RedHat 9.0 Pro
D7 Pers
BeitragVerfasst: Mo 06.06.05 15:54 
Hallo!

Gibt es auch eine Möglichkeit, wie man mit dieser Methode mehrere Zeilen in das Memofeld ab Cursorposition einfügen kann? Mit einem CHR Wert für Zeilenumbruch in der Stringkette funktioniert es nämlich nicht. Also beispielsweise wenn der Cursor in der Leerzeile zwischen Zeile 3 und 4 steht sollen an dieser Stelle Za, Zb, und Zc eingefügt werden:

Vorher:
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
Zeile 1
Zeile 2
Zeile 3
<<<<<<<<<<HIER STEHT DER CURSOR
Zeile 4
Zeile 5
Zeile 6



Klick auf Button soll dann das bewirken:

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
Zeile 1
Zeile 2
Zeile 3
Za
Zb
Zc
Zeile 4
Zeile 5
Zeile 6




Mit der Methode hier oben kommt auch wenn ich es wie gesagt mit Absatzzeichen versuche immer sowas raus:

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
Zeile 1
Zeile 2
Zeile 3
Za Zb Zc
Zeile 4
Zeile 5
Zeile 6


Bräuchte also eine Zeilenumbruch Methode wie Memo1.Lines.Add allerdings an der Cursorposition.

Danke schonmal ;)

_________________
Unter Linux rennen die Server,
unter Windows die Administratoren.
JayEff
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2971

Windows Vista Ultimate
D7 Enterprise
BeitragVerfasst: Mo 06.06.05 15:58 
versuch mal, an der stelle des zeilenumbruchs ein #10#13 ein zufpgen (nicht im string, sondern etwa so: 'Za'+#10#13+'Zb' )

_________________
>+++[>+++[>++++++++<-]<-]<++++[>++++[>>>+++++++<<<-]<-]<<++
[>++[>++[>>++++<<-]<-]<-]>>>>>++++++++++++++++++.+++++++.>++.-.<<.>>--.<+++++..<+.
Sonny
Hält's aus hier
Beiträge: 10

WIN XP, SuSE 9.1 Pro, RedHat 9.0 Pro
D7 Pers
BeitragVerfasst: Mo 06.06.05 16:05 
Nein das funktioniert leider nicht, das hatte ich auch schon probiert (siehe oben) aber dann sieht der String danach so aus:

ausblenden Quelltext
1:
z1□z2□z3□					



EDIT:

OK ich sollte demnächst mal wieder an mehr schlaf denken :roll: Es gibt ja noch mehr Möglickeiten einen Text einzufügen und dann funktioniert das natürlich auch mit dem CHR Codes. Die Lösung des Problems lautet:

ausblenden Quelltext
1:
  Memo1.SelText := 'Za' + #13#10 + 'Zb' + #13#10 + 'Zc' + #13#10;					



Danke JayEff Du hast mich auf die richtige Spur gebracht.

_________________
Unter Linux rennen die Server,
unter Windows die Administratoren.