Delphi-PRAXiS
Seite 1 von 2  1 2      

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)

DataCool 14. Jul 2004 12:33


Im Memo Text an Cursor Position einfügen
 
Hi Leute,

eigentlich sollte es ja ganz einfach sein in einem TMemo, ein Text an der aktuellen Cursor Position einzufügen.
Allerdings habe ich keine Methode insert oder ähnliches gefunden. :?:
Jetzt habe ich mir gedacht :
Code:
Var sCode : String;
    sTmp : String;
begin
    sCode := 'blabla';
    if mem_Msg.SelLength = 0 then begin
      sTmp := mem_Msg.lines.Text;
      Insert(sCode,sTmp,mem_Msg.SelStart);
      mem_Msg.Lines.Text := sTmp;
      // Focus auf Eingabe-Feld
      mem_Msg.SetFocus;
      // markierung löschen und Cursor hinter das letzte Zeichen
      mem_Msg.SelStart := mem_Msg.SelStart + Length(sCode);
      // 
    end
    else begin

    end;
Leider funktioniert das ganze nicht sehr gut, weil mem_Msg.lines.Text ja auch noch Steuerzeichen für Zeilenumbüche und ähnliches enthält.

Schön wäre es auch wenn jemand auch eine passende Lösung hat, wenn den SelLength des Memos > 0 ist, dann soll natürlich der markierte Text ersetzt werden.

Danke,

teebee 14. Jul 2004 13:20

Re: Im Memo Text an Cursor Position einfügen
 
Spontan fiele mir noch ein, über die Zwischenablage zu gehen und den Text in das Memo zu pasten.

[edit]Im PSDK habe ich noch EM_REPLACESEL gefunden, damit geht es auch ohne Zwischenablage[/edit]
[edit2] Das entspricht übrigens der Methode SetSelTextBuf von TMemo[/edit2]

Gruß, teebee

Rackergen2 14. Jul 2004 13:23

Re: Im Memo Text an Cursor Position einfügen
 
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;

DataCool 14. Jul 2004 13:53

Re: Im Memo Text an Cursor Position einfügen
 
hi,

genau das wars danke, das was Du jetzt gerade noch eingefügt hattest, habe ich auch gerade selbst rausgefunden :zwinker:

Nochmal danke

Rackergen2 14. Jul 2004 13:54

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

Zitat von DataCool
das was Du jetzt gerade noch eingefügt hattest, habe ich auch gerade selbst rausgefunden :zwinker:

Naja, wollte es wenigstens vollständig haben :zwinker:

teebee 15. Jul 2004 08:38

Re: Im Memo Text an Cursor Position einfügen
 
Warum so kompliziert? Mit SetSelTextBuf oder desm Setzen von SelText geht das viel einfacher...

Gruß, teebee

Rackergen2 15. Jul 2004 12:33

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

Zitat von teebee
Warum so kompliziert? Mit SetSelTextBuf oder desm Setzen von SelText geht das viel einfacher...

Gruß, teebee

Laber nicht, schreib uns hier ein Beispiel! ;)

teebee 15. Jul 2004 16:40

Re: Im Memo Text an Cursor Position einfügen
 
Naja, der Eigenschaft SelText einen Wert zuzuweisen, sollte doch nicht so schwierig sein...
Delphi-Quellcode:
Memo1.SelText := 'Das hier wird eingefügt!';
BTW:
Zitat:

Zitat von OH
Die Eigenschaft SelText gibt den markierten Textbereich des Eingabefeldes an.

property SelText: string;

Beschreibung

Durch Lesen von SelText läßt sich der Wert des markierten Textes ermitteln. Setzen Sie SelText, wenn der markierte Text durch einen neuen String ersetzt werden soll. Wenn keine Markierung vorhanden ist, das Eingabefeld aber den Fokus besitzt, setzen Sie SelText, um einen neuen String an der Cursorposition in den Text einzufügen.

Gruß, teebee

DataCool 15. Jul 2004 17:05

Re: Im Memo Text an Cursor Position einfügen
 
Hi,

danke da kann man wieder nur sagen :

RTFM (Für alle die es nicht wissen: Read the fucking manuel)

Wer lesen kann ist klar im Vorteil :oops:

Rackergen2 15. Jul 2004 20:47

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

Zitat von teebee
[...]
Zitat:

Zitat von OH
[...] das Eingabefeld aber den Fokus besitzt [...]

[...]

Ja, WENN! Wenn ich aber auf einen Button klicke, hat das Eingabefeld den Fokus nicht...


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:04 Uhr.
Seite 1 von 2  1 2      

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