Delphi-PRAXiS
Seite 2 von 2     12   

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 Im Memo Text an Cursor Position einfügen (https://www.delphipraxis.net/25888-im-memo-text-cursor-position-einfuegen.html)

teebee 15. Jul 2004 21:58

Re: Im Memo Text an Cursor Position einfügen
 
Tja, anscheinend hast Du es nicht ausprobiert...
(Das Memo merkt sich die Selection, auch wenn es den Fokus verliert.)

Gruß, teebee

Rackergen2 16. Jul 2004 02:19

Re: Im Memo Text an Cursor Position einfügen
 
[OT] Dann spinnt die OH...[/OT]

manstore 29. Mai 2011 20:56

AW: Re: Im Memo Text an Cursor Position einfügen
 
Zitat:

Zitat von Rackergen2 (Beitrag 179646)
Delphi-Quellcode:
const
  InsertText = 'test'; //Der String zum Einfügen
var
  MemoText: string; //Eine variable für Memo1.Text
  Select: Integer; //Position des Selektionsbegins
begin
  MemoText:=Memo1.Text;
  Select:=Memo1.SelStart; //Selektionsbeginn zwischenspeichern

  if Memo1.SelLength>0 then
  begin
    Delete(MemoText, Select+1, Memo1.SelLength); //Selektiertes löschen
  end;

  Insert(InsertText, MemoText, Select+1); //neuen Text einfügen
  Memo1.Text:=MemoText; //Text zurück zu Memo1

  Memo1.SelStart:=Select; //Selektionsbeginn wiederherstellen
  Memo1.SelLength:=length(InsertText); //neuen Text markieren (nicht sichtbar, da Memo nicht Fokussiert ist)
end;
Ich hoffe, das hilft... Bei mir hat es geklappt...

Die Markierung soll hinter das letze Zeichen? Kein Problem!
Delphi-Quellcode:
const
  InsertText = 'test'; //Der String zum Einfügen
var
  MemoText: string; //Eine variable für Memo1.Text
  Select: Integer; //Position des Selektionsbegins
begin
  MemoText:=Memo1.Text;
  Select:=Memo1.SelStart; //Selektionsbeginn zwischenspeichern

  if Memo1.SelLength>0 then
  begin
    Delete(MemoText, Select+1, Memo1.SelLength); //Selektiertes löschen
  end;

  Insert(InsertText, MemoText, Select); //neuen Text einfügen
  Memo1.Text:=MemoText; //Text zurück zu Memo1

  Memo1.SelStart:=Select+length(InsertText); //Selektionsbeginn hinter neuem Text wiederherstellen
  Memo1.SelLength:=0; //Selektion auf 0 beschränken
end;

Hallo Rackergen2, es muss heissen:

"Insert(InsertText, MemoText, Select +1); //neuen Text einfügen"
ansonsten setzt er den Text immer an die vorletzte Stelle.

Gruß

himitsu 30. Mai 2011 07:48

AW: Re: Im Memo Text an Cursor Position einfügen
 
SelText wurde schonmal genannt ... dieses Ersetzt die Selction durch den angegebenen Text, bzw. liest diese aus.
Zitat:

Zitat von Rackergen2 (Beitrag 179646)
Delphi-Quellcode:
const
  InsertText = 'test'; //Der String zum Einfügen
var
  MemoText: string; //Eine variable für Memo1.Text
  Select: Integer; //Position des Selektionsbegins
begin
  MemoText:=Memo1.Text;
  Select:=Memo1.SelStart; //Selektionsbeginn zwischenspeichern

  if Memo1.SelLength>0 then
  begin
    Delete(MemoText, Select+1, Memo1.SelLength); //Selektiertes löschen
  end;

  Insert(InsertText, MemoText, Select+1); //neuen Text einfügen
  Memo1.Text:=MemoText; //Text zurück zu Memo1

  Memo1.SelStart:=Select; //Selektionsbeginn wiederherstellen
  Memo1.SelLength:=length(InsertText); //neuen Text markieren (nicht sichtbar, da Memo nicht Fokussiert ist)
end;

ergibt also
Delphi-Quellcode:
begin
  Memo1.SelText := InsertText;
  Memo1.SelStart := Memo1.SelStart + Memo1.SelLength;
  //Memo1.SelLength := 0; // wird schon durch SelStart auf 0 gesetzt
end;
und um den Cursor hinter den eingefügten Text zu setzen
Delphi-Quellcode:
begin
  Memo1.SelText := InsertText;
  Memo1.SelStart := Memo1.SelStart + Memo1.SelLength;
  //Memo1.SelLength := 0; // wird schon durch SelStart auf 0 gesetzt
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:19 Uhr.
Seite 2 von 2     12   

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