![]() |
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:
Leider funktioniert das ganze nicht sehr gut, weil mem_Msg.lines.Text ja auch noch Steuerzeichen für Zeilenumbüche und ähnliches enthält.
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; 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, |
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 |
Re: Im Memo Text an Cursor Position einfügen
Delphi-Quellcode:
Ich hoffe, das hilft... Bei mir hat es geklappt...
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; 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; |
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 |
Re: Im Memo Text an Cursor Position einfügen
Zitat:
|
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 |
Re: Im Memo Text an Cursor Position einfügen
Zitat:
|
Re: Im Memo Text an Cursor Position einfügen
Naja, der Eigenschaft SelText einen Wert zuzuweisen, sollte doch nicht so schwierig sein...
Delphi-Quellcode:
BTW:
Memo1.SelText := 'Das hier wird eingefügt!';
Zitat:
|
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: |
Re: Im Memo Text an Cursor Position einfügen
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:00 Uhr. |
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