<?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[dbgrid spaltenbreite anhand des inhaltes setzen]]></title><description><![CDATA[<p>hallo,</p>
<p>ich habe ein dbgrid, indem ich einige zellen anzeigen werde, leider werden zellen mit sql funktionen, welche mir z.b. zwei spalten als eine spalte ausgeben immer extrem breit angezeigt.</p>
<p>ich wollte jetzt eine funktion schreiben, welche alle daten jeder spalte durchgeht, und sich die breiteste breite der spalte mittels:</p>
<pre><code class="language-cpp">DBGrid1-&gt;Canvas-&gt;TextWidth(DBGrid1-&gt;Fields[i]-&gt;AsString)
</code></pre>
<p>errechnet, und anschließend übernimmt, jedoch funzt hier irgendetwas nicht:</p>
<p>hier mein snippet:</p>
<pre><code class="language-cpp">void ChangeColumnWidths(TDBGrid *db,bool aChangeAll)
{
    int DEFBORDER=10;
    int spalte=0,i=0,groesse=0;

    for(i=0;i&lt;db-&gt;Columns-&gt;Count-1;i++)
    {
        spalte=0;
        while(!db-&gt;DataSource-&gt;DataSet-&gt;Eof)
        {
            groesse=db-&gt;Canvas-&gt;TextWidth(db-&gt;Fields[i]-&gt;AsString);
            if(groesse &gt; spalte)
            {
                spalte=groesse;
            }
            db-&gt;DataSource-&gt;DataSet-&gt;Next();
        }
        db-&gt;Columns-&gt;Items[i]-&gt;Width = spalte;
    }
}
</code></pre>
<p>Funktionsaufruf aus dem resize_ereignis der form: TfrmMain ist meine TForm</p>
<pre><code class="language-cpp">void __fastcall TfrmMain::FormResize(TObject *Sender)
{
    ChangeColumnWidths(DBGrid1,true);//zweite parameter wird derzeit ignoriert!
}
</code></pre>
<p>die spalten sind hinterher auf 0, aber warum?</p>
<p>beim debugger zeigt er an, das die &quot;spalte&quot; werte hat, welche nicht 0 gleichen, z.b. 53, aber er setzt die spalten alle auf 0px.</p>
<p>gruß gerd</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/101399/dbgrid-spaltenbreite-anhand-des-inhaltes-setzen</link><generator>RSS for Node</generator><lastBuildDate>Mon, 13 Jul 2026 14:45:56 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/101399.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 15 Feb 2005 20:35:27 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to dbgrid spaltenbreite anhand des inhaltes setzen on Tue, 15 Feb 2005 20:39:01 GMT]]></title><description><![CDATA[<p>hallo,</p>
<p>ich habe ein dbgrid, indem ich einige zellen anzeigen werde, leider werden zellen mit sql funktionen, welche mir z.b. zwei spalten als eine spalte ausgeben immer extrem breit angezeigt.</p>
<p>ich wollte jetzt eine funktion schreiben, welche alle daten jeder spalte durchgeht, und sich die breiteste breite der spalte mittels:</p>
<pre><code class="language-cpp">DBGrid1-&gt;Canvas-&gt;TextWidth(DBGrid1-&gt;Fields[i]-&gt;AsString)
</code></pre>
<p>errechnet, und anschließend übernimmt, jedoch funzt hier irgendetwas nicht:</p>
<p>hier mein snippet:</p>
<pre><code class="language-cpp">void ChangeColumnWidths(TDBGrid *db,bool aChangeAll)
{
    int DEFBORDER=10;
    int spalte=0,i=0,groesse=0;

    for(i=0;i&lt;db-&gt;Columns-&gt;Count-1;i++)
    {
        spalte=0;
        while(!db-&gt;DataSource-&gt;DataSet-&gt;Eof)
        {
            groesse=db-&gt;Canvas-&gt;TextWidth(db-&gt;Fields[i]-&gt;AsString);
            if(groesse &gt; spalte)
            {
                spalte=groesse;
            }
            db-&gt;DataSource-&gt;DataSet-&gt;Next();
        }
        db-&gt;Columns-&gt;Items[i]-&gt;Width = spalte;
    }
}
</code></pre>
<p>Funktionsaufruf aus dem resize_ereignis der form: TfrmMain ist meine TForm</p>
<pre><code class="language-cpp">void __fastcall TfrmMain::FormResize(TObject *Sender)
{
    ChangeColumnWidths(DBGrid1,true);//zweite parameter wird derzeit ignoriert!
}
</code></pre>
<p>die spalten sind hinterher auf 0, aber warum?</p>
<p>beim debugger zeigt er an, das die &quot;spalte&quot; werte hat, welche nicht 0 gleichen, z.b. 53, aber er setzt die spalten alle auf 0px.</p>
<p>gruß gerd</p>
]]></description><link>https://www.c-plusplus.net/forum/post/724357</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/724357</guid><dc:creator><![CDATA[gerd01]]></dc:creator><pubDate>Tue, 15 Feb 2005 20:39:01 GMT</pubDate></item><item><title><![CDATA[Reply to dbgrid spaltenbreite anhand des inhaltes setzen on Tue, 15 Feb 2005 20:42:05 GMT]]></title><description><![CDATA[<p>oh mist, ich sehe gerade, dass ich in spalte eins den kompletten datenkram durchgehe, danach ist ja Eof erreicht, ich denke mal das ist mein fehler!</p>
<p>sorry, kann gelöscht werden!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/724368</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/724368</guid><dc:creator><![CDATA[gerd01]]></dc:creator><pubDate>Tue, 15 Feb 2005 20:42:05 GMT</pubDate></item></channel></rss>