<?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[Form aufrollen]]></title><description><![CDATA[<p>Hi,</p>
<p>das Öffnen und Schliessen eines Fensters will ich als Aufrollen bzw. Zurollen darstellen. Meine bisherig Umsetzung funktioniert wunderbar, allerdings war da das Fenster noch &quot;leer&quot; (ohne Elemente). Dann habe ich ein <em>TDBGrid</em> eingefügt und es an allen Seiten mit der Form verankert. Jetzt funktioniert nur noch das Aufrollen, danach friert allerdings das Programm ein.<br />
Hat sich jemand damit schon mal befasst?</p>
<p>Thx, Maffe.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/113157/form-aufrollen</link><generator>RSS for Node</generator><lastBuildDate>Wed, 22 Jul 2026 03:26:02 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/113157.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 20 Jun 2005 10:16:40 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Form aufrollen on Mon, 20 Jun 2005 10:16:40 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>das Öffnen und Schliessen eines Fensters will ich als Aufrollen bzw. Zurollen darstellen. Meine bisherig Umsetzung funktioniert wunderbar, allerdings war da das Fenster noch &quot;leer&quot; (ohne Elemente). Dann habe ich ein <em>TDBGrid</em> eingefügt und es an allen Seiten mit der Form verankert. Jetzt funktioniert nur noch das Aufrollen, danach friert allerdings das Programm ein.<br />
Hat sich jemand damit schon mal befasst?</p>
<p>Thx, Maffe.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/813072</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/813072</guid><dc:creator><![CDATA[Maffe001]]></dc:creator><pubDate>Mon, 20 Jun 2005 10:16:40 GMT</pubDate></item><item><title><![CDATA[Reply to Form aufrollen on Mon, 20 Jun 2005 10:28:51 GMT]]></title><description><![CDATA[<p>Es währe evtl ganz gut zu wissen, wie du das auf- und abrollen realisiert hast; ansonsten kann der Fehler überall liegen!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/813079</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/813079</guid><dc:creator><![CDATA[Reyx]]></dc:creator><pubDate>Mon, 20 Jun 2005 10:28:51 GMT</pubDate></item><item><title><![CDATA[Reply to Form aufrollen on Mon, 20 Jun 2005 10:38:53 GMT]]></title><description><![CDATA[<p>Es liegt nicht am Auf- und Zurollen, da es ja funktioniert hat, als die Form leer war. Aber gut:</p>
<pre><code class="language-cpp">//Aufrollen
((TDockWnd*)ThrParam)-&gt;Top = ((TDockWnd*)ThrParam)-&gt;Base_Rect.Top;
((TDockWnd*)ThrParam)-&gt;Left = ((TDockWnd*)ThrParam)-&gt;Base_Rect.Left;
((TDockWnd*)ThrParam)-&gt;Height = ((TDockWnd*)ThrParam)-&gt;Base_Rect.Height;
for (Count = SCROLL_START; Count &lt; ((TDockWnd*)ThrParam)-&gt;Base_Rect.Width;
    Count += SCROLL_STEP)
{
    (TDockWnd*)ThrParam)-&gt;Width = Count;
    Diff = ((TDockWnd*)ThrParam)-&gt;Base_Rect.Width - Count;
    if (Diff &lt; SCROLL_STEP)
        ((TDockWnd*)ThrParam)-&gt;Width += Diff;

    if (((TDockWnd*)ThrParam)-&gt;Visible == false)
        ((TDockWnd*)ThrParam)-&gt;Show();

    ((TDockWnd*)ThrParam)-&gt;Refresh();
}
//-----------------------------------------------------------------------------
//Zurollen
for (Count = ((TDockWnd*)ThrParam)-&gt;Base_Rect.Width; Count &gt; SCROLL_START; 
    Count -= SCROLL_STEP)
{
    ((TDockWnd*)ThrParam)-&gt;Width = Count;
    Diff = Count - SCROLL_START;
    if (Diff &lt; SCROLL_STEP)
        ((TDockWnd*)ThrParam)-&gt;Width -= Diff;

    ((TDockWnd*)ThrParam)-&gt;Refresh();
}
((TDockWnd*)ThrParam)-&gt;Hide();
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/813086</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/813086</guid><dc:creator><![CDATA[Maffe001]]></dc:creator><pubDate>Mon, 20 Jun 2005 10:38:53 GMT</pubDate></item><item><title><![CDATA[Reply to Form aufrollen on Tue, 21 Jun 2005 06:58:37 GMT]]></title><description><![CDATA[<p>Versuch's damit:</p>
<pre><code class="language-cpp">// Funktion verbessert und getestet!
void __fastcall Rollen(int e)
{
    int p=(Top&lt;e)*2-1;
    while((p&gt;0 &amp;&amp; Top&lt;e) || (p&lt;0 &amp;&amp; Top&gt;e))
    {
        Top+=p;
        Application-&gt;ProcessMesages();
        Sleep(1);
    }
}
void __fastcall TForm1::ButtonAufrollenClick(TObject *Sender)
{
    Rollen(100);
}
void __fastcall TForm1::ButtonZurollenClick(TObject *Sender)
{
    Rollen(Screen-&gt;Height);
}
</code></pre>
<p>EDIT: Die Funktion Rollen muss in der Klasse &quot;TForm1&quot; deklariert sein... udn die Funktionen sind ungetestet, da ich hier keinen BCB zur Hand habe, bin nicht zuhause ^^</p>
<p>EDIT #2: Funktion getestet und verbessert!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/813275</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/813275</guid><dc:creator><![CDATA[Windoof]]></dc:creator><pubDate>Tue, 21 Jun 2005 06:58:37 GMT</pubDate></item><item><title><![CDATA[Reply to Form aufrollen on Tue, 21 Jun 2005 09:24:34 GMT]]></title><description><![CDATA[<p>Ich verstehe ehrlich gesagt nicht, wie dieser Code meine Form aufrollt. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /><br />
Ausserdem hab ich doch gesagt, dass das Rollen wunderbar funktioniert. Doch wenn ich in der Form ein <em>TDBGrid</em> einfüge und es mit allen vier Anker fixiere, funktioniert nur noch das Aufrollen und danach friert das Programm ein.<br />
Ich hab mir jetzt überlegt, dass ich das <em>TDBGrid</em> erst anzeige, wenn das Aufrollen beendet ist bzw. es verschwinden lasse, bevor zugerollt wird. Vielleicht funktioniert das ja.<br />
Wenn jemand noch ne andere Idee hat. Wäre ich dankbar, weil ich eigentlich die Elemente in dem Fenster beim Rollen mitanzeigen wollte. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/813850</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/813850</guid><dc:creator><![CDATA[Maffe001]]></dc:creator><pubDate>Tue, 21 Jun 2005 09:24:34 GMT</pubDate></item><item><title><![CDATA[Reply to Form aufrollen on Tue, 21 Jun 2005 09:36:24 GMT]]></title><description><![CDATA[<p>nur mal so:</p>
<p>vermeide es dutzende male <em><em>((TDockWnd</em>)ThrParam)</em>* zu casten (kosten haufenweise zeit). mache das lieber nur einmal.</p>
<p>meine persönliche meinung zum aufrollen: lass solche gimicks lieber, würde mich als endanwender eher stören als erfreuen. (wie gesagt: meine meinung)</p>
<p>funktioniert das mit dem dbgrid wenn du die ecken <strong>nicht</strong> verankerst?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/813860</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/813860</guid><dc:creator><![CDATA[Sunday]]></dc:creator><pubDate>Tue, 21 Jun 2005 09:36:24 GMT</pubDate></item><item><title><![CDATA[Reply to Form aufrollen on Tue, 21 Jun 2005 10:32:33 GMT]]></title><description><![CDATA[<p><strong><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/588">@Sunday</a>:</strong><br />
Du meinst ich soll die C-Cast mit einem Dynamic-Cast ersetzen, oder wie? Ich hätte nicht gedacht, dass das soviel Zeit in Anspruch nimmt.</p>
<p>Zu deiner Meinung mit dem Rollen:<br />
Ich werde dem Nutzer die Möglichkeit geben, das Rollen abzuschalten. Weil ich das persönlich auch besser finde. Aber da das &quot;offiziell&quot; ist und &quot;DAU&quot;s visuelle Menschen sind, will ich es mit einbauen. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
<p>Wenn ich die Ecken nicht verankere, dann gibt er mir eine Speicherzugriffsvetzung aus.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/813916</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/813916</guid><dc:creator><![CDATA[Maffe001]]></dc:creator><pubDate>Tue, 21 Jun 2005 10:32:33 GMT</pubDate></item><item><title><![CDATA[Reply to Form aufrollen on Tue, 21 Jun 2005 10:35:03 GMT]]></title><description><![CDATA[<p>Zum einen solltest Du einen dynmamic cast verwenden, zum anderen solltest Du ihn nur ein einziges Mal durchführen. Das macht den Code schneller und viel übersichtliicher.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/813918</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/813918</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Tue, 21 Jun 2005 10:35:03 GMT</pubDate></item><item><title><![CDATA[Reply to Form aufrollen on Tue, 21 Jun 2005 10:36:19 GMT]]></title><description><![CDATA[<p>Maffe001 schrieb:</p>
<blockquote>
<p>Wenn ich die Ecken nicht verankere, dann gibt er mir eine Speicherzugriffsvetzung aus.</p>
</blockquote>
<p>In welcher Codezeile?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/813919</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/813919</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Tue, 21 Jun 2005 10:36:19 GMT</pubDate></item><item><title><![CDATA[Reply to Form aufrollen on Tue, 21 Jun 2005 10:51:26 GMT]]></title><description><![CDATA[<p>Maffe001 schrieb:</p>
<blockquote>
<p>Ich verstehe ehrlich gesagt nicht, wie dieser Code meine Form aufrollt. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
</blockquote>
<p>Mit welchem Compiler arbeitest du? - Hast du die Funktion denn mal getestet?</p>
<p>EDIT: Also ich habe sie getestet, und auf die Form ein DBGrid gesetzt undalle 4 Ecken verankert... und folgendes funktioniert (Delphi 6):</p>
<pre><code>procedure TForm1.FormClick(Sender: TObject);
begin
    Rollen(0);
    Rollen(Screen.Height-Height);
end;

procedure TForm1.Rollen(e:Integer);
var p:Integer;
begin
    p:=Integer(Top&lt;e)*2-1;
    while ((p&gt;0) and (Top&lt;e)) or ((p&lt;0) and (Top&gt;e)) do
    begin
        Top:=Top+p;
        Application.ProcessMessages;
        Sleep(1);
    end;
end;
</code></pre>
<p>Und das habe ich in C++ umgewandelt, ist ja nicht sonderlich schwer <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /> und das rollt meine Form auf Position X,0 und danach auf X,Y (Y ist Höhe des Bildschirms minus Höhe der Form)... und das ohne sich aufzuhängen ^^</p>
]]></description><link>https://www.c-plusplus.net/forum/post/813926</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/813926</guid><dc:creator><![CDATA[Windoof]]></dc:creator><pubDate>Tue, 21 Jun 2005 10:51:26 GMT</pubDate></item><item><title><![CDATA[Reply to Form aufrollen on Tue, 21 Jun 2005 11:02:02 GMT]]></title><description><![CDATA[<p>Ich arbeite mit dem Standard-Compiler des BCB6 Enterprise.</p>
<p>Die Speicherverletzung ist weg, warum weiss ich allerdings noch nicht genau. Aber das Programm friert wieder ein.</p>
<p><strong><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/3286">@Windoof</a>:</strong><br />
Deine Funktion hab ich noch nicht getestet, weil mir erstmal das Verständnis gefehlt hat. Aber ich werde es noch tun. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/813937</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/813937</guid><dc:creator><![CDATA[Maffe001]]></dc:creator><pubDate>Tue, 21 Jun 2005 11:02:02 GMT</pubDate></item><item><title><![CDATA[Reply to Form aufrollen on Tue, 21 Jun 2005 11:15:10 GMT]]></title><description><![CDATA[<p>Pro bier das mal... aber mal etwasanderes: Wenn die Formaufgerollt ist, was genau wird dann gemacht? - Wird evtl. eine Funktion aufgerufen, die länger braucht und evtl. Schleifen aufgerufen? - Evtl. Endlosschleifen, ungewollt? Wenn eine Schleife durchläuft und nicht zwischendurch Application-&gt;ProcessMEssages(); aufgerufen wird, &quot;friert&quot; das PRogramm ein, das liegt dann nicht an deiner Roll-Funktion...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/813950</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/813950</guid><dc:creator><![CDATA[Windoof]]></dc:creator><pubDate>Tue, 21 Jun 2005 11:15:10 GMT</pubDate></item><item><title><![CDATA[Reply to Form aufrollen on Tue, 21 Jun 2005 11:24:11 GMT]]></title><description><![CDATA[<p>Eigentlich mach ich erstmal nichts. Ich hab das Rollen in einem Thread umgesetzt, der sich nach Beendigung des Rollen wieder schlafen legt, damit das Rollen die Anwendung nicht blockiert. Tja und danach ist die Anwendung im Leerlauf. Also ich weiss nicht, was das Einfrieren hervorruft. Das Kuriose ist, dass er nicht immer einfriert, sondern manchmal erst nach ein paar Mal Auf- und Zuklappen. Naja, ich muss das wohl mal Auseinanderpflücken.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/813958</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/813958</guid><dc:creator><![CDATA[Maffe001]]></dc:creator><pubDate>Tue, 21 Jun 2005 11:24:11 GMT</pubDate></item><item><title><![CDATA[Reply to Form aufrollen on Tue, 21 Jun 2005 11:31:07 GMT]]></title><description><![CDATA[<p>Welche Sicherheit hast Du Du bezüglich der Thread-Synchronisierung verwendet? Synchronise oder CriticalSection?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/813964</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/813964</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Tue, 21 Jun 2005 11:31:07 GMT</pubDate></item><item><title><![CDATA[Reply to Form aufrollen on Tue, 21 Jun 2005 11:35:25 GMT]]></title><description><![CDATA[<p>Die Daten für das Rollen hole ich mir aus ner Klasse, die das Ganze verwaltet. Die Lese- und Schreiboperationen sind mit einem Mutex verriegelt. Das sollte also nicht der Fehler sein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/813968</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/813968</guid><dc:creator><![CDATA[Maffe001]]></dc:creator><pubDate>Tue, 21 Jun 2005 11:35:25 GMT</pubDate></item></channel></rss>