Autor Beitrag
Spurius
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 142

Win XP Home
D3 Prof, D7 Prof
BeitragVerfasst: Di 23.12.03 20:15 
Hallo,
wie kann ich etwas in ein Richedit einfügen, aber nicht erst am Ende?
Z.b.Ich hab nen Text drinstehen und will, dass in der Zeile, wo mein Cursor steht, 'hallo' eingefügt wird.
Gruß
Spurius
obbschtkuche
Gast
Erhaltene Danke: 1



BeitragVerfasst: Di 23.12.03 21:02 
So müsste es funktionieren:

ausblenden Delphi-Quelltext
1:
richedit1.Text := copy(richedit1.Text, 0, richedit1.SelStart) + 'deintext' + copy(Richedit1.text, Richedit1.SelStart+1, length(richedit1.text));					
Spurius Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 142

Win XP Home
D3 Prof, D7 Prof
BeitragVerfasst: Di 23.12.03 22:36 
Hallo,
Danke, es geht. Kannst du mir erklären, wie das funkrioniert? Weil ich versteh das nicht.
Gruß
Spurius
obbschtkuche
Gast
Erhaltene Danke: 1



BeitragVerfasst: Di 23.12.03 22:48 
copy Kopiert aus dem String (1.Parameter) einen bestimmten Teilstring. Der 2. Parameter gibt den ersten Buchstaben an, ab dem Kopiert werden soll und der 3. die Anzahl der Zeichen. Hier wird der String an der Cursorposition getrennt und der andere string eingefügt.
Spurius Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 142

Win XP Home
D3 Prof, D7 Prof
BeitragVerfasst: Di 23.12.03 22:50 
Ok, vielen Dank.
SelStart gibt die Cursorpos an, oder?
Gruß
Spurius
Terra23
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 872

Win 8
Delphi 7
BeitragVerfasst: Di 23.12.03 22:50 
Ich kenne zwar den Code nicht, aber wenn ich das richtig deute, bedeutet es folgendes:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
Richedit1.Text :=
Copy(Richedit1.Text {Quelle von der kopiert werden soll},
0 {Textposition ab der kopiert werden soll},
Richedit1.SelStart {Textposition bis wohin kopiert werden soll})
'Dein Text' {Text, der beim Cursor eingegeben werden soll}
+ Copy(Richedit1.Text {Wieder die Quelle},
Richedit1.SelStart+1 {Textposition -> Cursorposition+1, weil erst hinter dem Cursor begonnen werden soll},
Length(Richedit1.text {Textposition bis wohin kopiert werden soll -> bis zum Ende des Inhaltes));

_________________
Hasta La Victoria Siempre
obbschtkuche
Gast
Erhaltene Danke: 1



BeitragVerfasst: Di 23.12.03 22:52 
Ja, allerdings solltest du vorher noch SelStart auf > 0 überprüfen, damit der string nicht einfach am Anfang eingefügt wird.
Alexander F
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 149

Win XP, Win 2000
D6 PE, D7 Prof, D8 Prof
BeitragVerfasst: Di 23.12.03 22:56 
So würde ich das allerdings nicht machen, da die Eigenschaft TEXT erst zusammengestellt wird und dann ncoh überschrieben wird. Das dauert also ziemlich lange.
ICh würde das eher über LINES[index] machen:
ausblenden Delphi-Quelltext
1:
 RichEdit1.Lines[Richedit1.CaretPos.y] := Copy(RichEdit1.Lines[Richedit1.CaretPos.y], 0, Richedit1.CaretPos.X) + 'text' + Copy(RichEdit1.Lines[Richedit1.CaretPos.y], Richedit1.CaretPos.X, Length(RichEdit1.Lines[Richedit1.CaretPos.y]));					

Dürfte wohl schneller sein...
obbschtkuche
Gast
Erhaltene Danke: 1



BeitragVerfasst: Di 23.12.03 22:59 
Was allerdings ziemlich Wurscht ist, wenn es nicht xyzmal in der Sekunde gemacht wird... und wenn es wirklich auf performance ankommt, sollte es so sein:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
var 
 l: string;
begin
 l := RichEdit1.Lines[Richedit1.CaretPos.y];
RichEdit1.Lines[Richedit1.CaretPos.y] := Copy(l, 0, Richedit1.CaretPos.X) + 'text' + Copy(l, Richedit1.CaretPos.X+1, length(l));
end;


Was dir 2x GetValue von TStrings erspart ;)
Alexander F
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 149

Win XP, Win 2000
D6 PE, D7 Prof, D8 Prof
BeitragVerfasst: Mi 24.12.03 09:34 
Jupp, aber warum sollte man es nicht gleich optimieren? Außerdem wenn im Richedit einiges drin steht, dann macht es schon was aus.
Spurius Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 142

Win XP Home
D3 Prof, D7 Prof
BeitragVerfasst: Do 22.01.04 15:38 
So, der Topic ist zwar schon älter, aber ich hab ein Problem mit dem Code:
ausblenden Quelltext
1:
2:
3:
  synmemo1.Text := copy(synmemo1.Text, 0, synmemo1.SelStart) +
  'irgendeintext' + copy(synmemo1.text, synmemo1.SelStart+1,
   length(synmemo1.text));

Und zwar wenn ich text einfügen will, aber erst ein leerzeichen hinter einem wort, nicht direkt im Anschluss, dann wird dass Wort erst in der nächsten Zeile eingefügt.
Also z.B.
test irgendeintext //wird zu

test
irgendeintext

Kann mir jemand sagen, wie ich den Code verändern muss?
Gruß
Spurius
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 22.01.04 16:10 
obbschtkuche hat folgendes geschrieben:

ausblenden Delphi-Quelltext
1:
richedit1.Text := copy(richedit1.Text, 0, richedit1.SelStart) + 'deintext' + copy(Richedit1.text, Richedit1.SelStart+1, length(richedit1.text));					

Das ist ja grausam.

Wenn ich was an der Cursorposition einfügen will, mache ich das so:
ausblenden Delphi-Quelltext
1:
RichEdit1.SelText := 'Hello world.';					
Spurius Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 142

Win XP Home
D3 Prof, D7 Prof
BeitragVerfasst: Do 22.01.04 16:35 
Jo, das wars.
Thx
Spurius