<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Drag and Drop - Listbox zu RichEdit]]></title><description><![CDATA[<p>Hallo,</p>
<p>bin gerade dabei ein Drag&amp;Drop von einer TListBox zu einem TRichEdit zu realisieren.</p>
<p>TListBox dient dabei als Quelle und das TRichEdit als Ziel.</p>
<p>Es funktioniert auch, nur mit einem kleinen Schönheitsmarkel, der das gesamte Projekt durcheinanderbringt.</p>
<p>Die aktuelle Zeile meines TRichEdit sieht so aus:</p>
<blockquote>
<p>&gt; |</p>
</blockquote>
<p>Jetzt soll er den Text nach der CursorPosition einfügen ohne dabei die &quot;&gt;&gt; &quot; zu löschen.<br />
Habe es anfänglich so versucht, funktioniert auf den ersten Blick auch, aber er fügt am Ende des Textes eine &quot;leere Zeile&quot; ein. Das darf nicht sein.</p>
<pre><code class="language-cpp">//---------------------------------------------------------------------------
void __fastcall TfrmMain::RichEdit1DragOver(TObject *Sender,
      TObject *Source, int X, int Y, TDragState State, bool &amp;Accept)
{
  Accept = Source-&gt;ClassNameIs(&quot;TListBox&quot;);
}

//---------------------------------------------------------------------------

void __fastcall TfrmMain::RichEdit1DragDrop(TObject *Sender,
      TObject *Source, int X, int Y)
{ 
  RichEdit1-&gt;Lines-&gt;Delete(RichEdit1-&gt;Lines-&gt;Count-1);
  RichEdit1-&gt;Lines-&gt;Insert(RichEdit1-&gt;Lines-&gt;Count,&quot;&gt;&gt; &quot;+lboxSource-&gt;Items-&gt;
  Strings[lboxSource-&gt;ItemIndex]);
  RichEdit1-&gt;SelStart=RichEdit1-&gt;Text.Length()-1;
  RichEdit1-&gt;SetFocus();
}
</code></pre>
<p>Wie gesagt, diese Lösung würde mir schon ausreichen (obwohl sie noch nicht perfekt ist), wenn ich nur verhindern könnte, dass automatisch eine leere Zeile unterhalb des Ganzen eingefügt wird.</p>
<p>Das gleich Problem hatte ich schon mal bei Betätigung der &quot;Enter&quot; Taste im OnKeyPress Event des TRichEdit's.</p>
<p>Wurde damals gelöst, indem man Key auf 0 setzte.</p>
<p>Gibt es hierfür vielleich auch eine derartige Lösung?</p>
<p>Vielen Dank</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/184564/drag-and-drop-listbox-zu-richedit</link><generator>RSS for Node</generator><lastBuildDate>Sun, 16 Aug 2026 05:43:53 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/184564.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 16 Jun 2007 16:00:42 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Drag and Drop - Listbox zu RichEdit on Sat, 16 Jun 2007 16:00:42 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>bin gerade dabei ein Drag&amp;Drop von einer TListBox zu einem TRichEdit zu realisieren.</p>
<p>TListBox dient dabei als Quelle und das TRichEdit als Ziel.</p>
<p>Es funktioniert auch, nur mit einem kleinen Schönheitsmarkel, der das gesamte Projekt durcheinanderbringt.</p>
<p>Die aktuelle Zeile meines TRichEdit sieht so aus:</p>
<blockquote>
<p>&gt; |</p>
</blockquote>
<p>Jetzt soll er den Text nach der CursorPosition einfügen ohne dabei die &quot;&gt;&gt; &quot; zu löschen.<br />
Habe es anfänglich so versucht, funktioniert auf den ersten Blick auch, aber er fügt am Ende des Textes eine &quot;leere Zeile&quot; ein. Das darf nicht sein.</p>
<pre><code class="language-cpp">//---------------------------------------------------------------------------
void __fastcall TfrmMain::RichEdit1DragOver(TObject *Sender,
      TObject *Source, int X, int Y, TDragState State, bool &amp;Accept)
{
  Accept = Source-&gt;ClassNameIs(&quot;TListBox&quot;);
}

//---------------------------------------------------------------------------

void __fastcall TfrmMain::RichEdit1DragDrop(TObject *Sender,
      TObject *Source, int X, int Y)
{ 
  RichEdit1-&gt;Lines-&gt;Delete(RichEdit1-&gt;Lines-&gt;Count-1);
  RichEdit1-&gt;Lines-&gt;Insert(RichEdit1-&gt;Lines-&gt;Count,&quot;&gt;&gt; &quot;+lboxSource-&gt;Items-&gt;
  Strings[lboxSource-&gt;ItemIndex]);
  RichEdit1-&gt;SelStart=RichEdit1-&gt;Text.Length()-1;
  RichEdit1-&gt;SetFocus();
}
</code></pre>
<p>Wie gesagt, diese Lösung würde mir schon ausreichen (obwohl sie noch nicht perfekt ist), wenn ich nur verhindern könnte, dass automatisch eine leere Zeile unterhalb des Ganzen eingefügt wird.</p>
<p>Das gleich Problem hatte ich schon mal bei Betätigung der &quot;Enter&quot; Taste im OnKeyPress Event des TRichEdit's.</p>
<p>Wurde damals gelöst, indem man Key auf 0 setzte.</p>
<p>Gibt es hierfür vielleich auch eine derartige Lösung?</p>
<p>Vielen Dank</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1307323</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1307323</guid><dc:creator><![CDATA[Todd]]></dc:creator><pubDate>Sat, 16 Jun 2007 16:00:42 GMT</pubDate></item><item><title><![CDATA[Reply to Drag and Drop - Listbox zu RichEdit on Sat, 16 Jun 2007 16:20:00 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>hab mir kurz einen anderen Beitrag angeguckt und gemerkt, dass es für mein Problem ausreicht. War wohl kurz auf dem Holzweg unterwegs. *Sorry* <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
<p>So funktioniert es:</p>
<pre><code class="language-cpp">void __fastcall TForm1::cwDragDrop(TObject *Sender, TObject *Source, int X,
      int Y)
{
 int aktzeile = cw-&gt;CaretPos.y;
 int aktpos   = cw-&gt;CaretPos.x;
 AnsiString st=ListBox1-&gt;Items-&gt;Strings[ListBox1-&gt;ItemIndex]);
 cw-&gt;Lines-&gt;Strings[aktzeile] = cw-&gt;Lines-&gt;Strings[aktzeile].Insert(st, aktpos);
 cw-&gt;SelStart=cw-&gt;Text.Length()-1;
 cw-&gt;SetFocus();

}
//---------------------------------------------------------------------------

void __fastcall TForm1::cwDragOver(TObject *Sender, TObject *Source, int X,
      int Y, TDragState State, bool &amp;Accept)
{
 Accept = Source-&gt;ClassNameIs(&quot;TListBox&quot;);
}
//---------------------------------------------------------------------------
</code></pre>
<p>Thema damit erledigt...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1307337</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1307337</guid><dc:creator><![CDATA[Todd]]></dc:creator><pubDate>Sat, 16 Jun 2007 16:20:00 GMT</pubDate></item></channel></rss>