<?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[Tasten abfangen unter BCB6]]></title><description><![CDATA[<p>Hallo Forum,</p>
<p>also zu erst mal ein riesen Lob! Ist wirklich ein super Treffpunkt hier für's Codieren in allen Richtigen. Hat mir schon Oft geholfen mal hier reinzuschauen. Aber nun muß ich doch selber mal Fragen.</p>
<p>Aber bitte nicht schlagen, ich habe mir schon alles mögliche zum Thema Tasten und BCB durchgelesen, aber ich bekomme es einfach nicht hin....</p>
<p>Folgendes möchte ich machen: Mehrere Edit-Felder auf einer Form, das wechseln soll per TAB (später auch Return) möglich sein, die Reihenfolge lege ich im Programm fest (ohne TabOrder)</p>
<p>Also fluks einen MESSAGE_HANDLER reingefummelt, der WANTTABS setzt in den Edit-Feldern. TAB kommt nun auch schön in der KeyDown-Routine an, aber....nachdem &quot;mein&quot; Code abgearbeitet wurde, führt Windows (oder das Edit-Control?) die TAB-Taste nochmal aus, mit dem Ergebnis, das ein Tabstop im Edit-Feld landet.</p>
<p>Alle Versuche meinerseits, das zu Verhindern, sprich das weitere abarbeiten der TAB-Taste zu unterdrücken, sind bislang Fehlgeschlagen.</p>
<p>Kann mir vieleicht jemand einen Tipp geben, wo ich falsch liege?</p>
<p>Für alle Infos Dankbar!</p>
<p>Frank</p>
<p>Zur Veranschaulichung mal meine Code-Schnipsel:</p>
<p>Message-Map in der Komponente</p>
<pre><code class="language-cpp">BEGIN_MESSAGE_MAP
        MESSAGE_HANDLER(WM_GETDLGCODE, TMessage, WMGetDlgCode);
    END_MESSAGE_MAP(inherited)
</code></pre>
<p>WMGetDlgCode-Funktion</p>
<pre><code class="language-cpp">void __fastcall TMyEdit::WMGetDlgCode(TMessage &amp; Message)
{
        if(m_WantTab)
            Message.Result |= DLGC_WANTTAB;

    Message.Result |= DLGC_WANTARROWS;
}
</code></pre>
<p>KeyDown-Funktion</p>
<pre><code class="language-cpp">void __fastcall TfrmMyWindow::FormKeyDown(TObject *Sender, WORD &amp;Key,
      TShiftState Shift)
{
    switch(Key)
    {
        case    VK_TAB      :   TfrmMyWindow::FunctionKey(Sender,Key,Shift);
                                break;
    }

    // keine weitere behandlung der gedrückten Taste zulassen
    Key = 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/146611/tasten-abfangen-unter-bcb6</link><generator>RSS for Node</generator><lastBuildDate>Wed, 05 Aug 2026 21:12:39 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/146611.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 09 May 2006 12:10:28 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Tasten abfangen unter BCB6 on Tue, 09 May 2006 12:10:28 GMT]]></title><description><![CDATA[<p>Hallo Forum,</p>
<p>also zu erst mal ein riesen Lob! Ist wirklich ein super Treffpunkt hier für's Codieren in allen Richtigen. Hat mir schon Oft geholfen mal hier reinzuschauen. Aber nun muß ich doch selber mal Fragen.</p>
<p>Aber bitte nicht schlagen, ich habe mir schon alles mögliche zum Thema Tasten und BCB durchgelesen, aber ich bekomme es einfach nicht hin....</p>
<p>Folgendes möchte ich machen: Mehrere Edit-Felder auf einer Form, das wechseln soll per TAB (später auch Return) möglich sein, die Reihenfolge lege ich im Programm fest (ohne TabOrder)</p>
<p>Also fluks einen MESSAGE_HANDLER reingefummelt, der WANTTABS setzt in den Edit-Feldern. TAB kommt nun auch schön in der KeyDown-Routine an, aber....nachdem &quot;mein&quot; Code abgearbeitet wurde, führt Windows (oder das Edit-Control?) die TAB-Taste nochmal aus, mit dem Ergebnis, das ein Tabstop im Edit-Feld landet.</p>
<p>Alle Versuche meinerseits, das zu Verhindern, sprich das weitere abarbeiten der TAB-Taste zu unterdrücken, sind bislang Fehlgeschlagen.</p>
<p>Kann mir vieleicht jemand einen Tipp geben, wo ich falsch liege?</p>
<p>Für alle Infos Dankbar!</p>
<p>Frank</p>
<p>Zur Veranschaulichung mal meine Code-Schnipsel:</p>
<p>Message-Map in der Komponente</p>
<pre><code class="language-cpp">BEGIN_MESSAGE_MAP
        MESSAGE_HANDLER(WM_GETDLGCODE, TMessage, WMGetDlgCode);
    END_MESSAGE_MAP(inherited)
</code></pre>
<p>WMGetDlgCode-Funktion</p>
<pre><code class="language-cpp">void __fastcall TMyEdit::WMGetDlgCode(TMessage &amp; Message)
{
        if(m_WantTab)
            Message.Result |= DLGC_WANTTAB;

    Message.Result |= DLGC_WANTARROWS;
}
</code></pre>
<p>KeyDown-Funktion</p>
<pre><code class="language-cpp">void __fastcall TfrmMyWindow::FormKeyDown(TObject *Sender, WORD &amp;Key,
      TShiftState Shift)
{
    switch(Key)
    {
        case    VK_TAB      :   TfrmMyWindow::FunctionKey(Sender,Key,Shift);
                                break;
    }

    // keine weitere behandlung der gedrückten Taste zulassen
    Key = 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1054075</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1054075</guid><dc:creator><![CDATA[FrankBach]]></dc:creator><pubDate>Tue, 09 May 2006 12:10:28 GMT</pubDate></item><item><title><![CDATA[Reply to Tasten abfangen unter BCB6 on Tue, 09 May 2006 12:16:51 GMT]]></title><description><![CDATA[<p>kann eventuell daran liegen, dass im Ereignis OnKeyUp der Tab noch ausgeführt wird, versuch einfach mal die Taste dort auch abzufangen</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1054081</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1054081</guid><dc:creator><![CDATA[Linnea]]></dc:creator><pubDate>Tue, 09 May 2006 12:16:51 GMT</pubDate></item><item><title><![CDATA[Reply to Tasten abfangen unter BCB6 on Tue, 09 May 2006 16:06:34 GMT]]></title><description><![CDATA[<p>onKeypressed</p>
<p>if (Key == Keycode)<br />
{<br />
}<br />
else<br />
{<br />
Key=0;<br />
}</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1054271</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1054271</guid><dc:creator><![CDATA[Yash]]></dc:creator><pubDate>Tue, 09 May 2006 16:06:34 GMT</pubDate></item></channel></rss>