<?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[StringGrind Textausrichtung ändern.]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich würde gerne innerhalb einer methode die textausrichtung eines StringGrids ändern. Hier ein paar infos:</p>
<pre><code class="language-cpp">void TFunktion::writeStringGrid(TStringGrid *StringGrid)
{

   for(int i=0; i &lt; N_ELEMENTE; i++)
   {
      /* ... ganz viel code ... */
   }

   StringGrid-&gt;ColCount = PositionZaehler;
   StringGrid-&gt;RowCount = 2;
   StringGrid-&gt;FixedCols = 0;
   StringGrid-&gt;FixedRows = 0;
   StringGrid-&gt;GridLineWidth = 0;
   StringGrid-&gt;DefaultColWidth = StringGrid-&gt;Canvas-&gt;TextWidth(&quot;000&quot;);
   StringGrid-&gt;RowHeights[0] = StringGrid-&gt;Canvas-&gt;TextHeight(&quot;0&quot;);
}
</code></pre>
<p>So, also ich übergebe über die Parameter ein Zeiger auf ein StringGrid.<br />
Das wird jetzt über die Methode formatiert und beschrieben. Jetzt mein Problem.<br />
Das StringGrid soll in der ersten ([0]ten) Reihe die Textausrichtung LINKS haben und in der zweiten ([1]ten) mittig bzw standard. Wenns geht auch noch in der ersten ([0]ten) reihe nach UNTEN ausgerichtiet sein.</p>
<p>Problem ist jetzt, das über den Zeiger zu ändern. Mir fällt da keine lösung ein. In der FAQ habe ich das hier gefunden.</p>
<pre><code class="language-cpp">void __fastcall TForm1::StringGrid1DrawCell(TObject *Sender, int ACol,
      int ARow, TRect &amp;Rect, TGridDrawState State)
{
  // Farben festlegen:
  // Standardfarben für selektierte Zelle(n)
  if (State.Contains(gdSelected))
  {
    StringGrid1-&gt;Canvas-&gt;Brush-&gt;Color = clHighlight;
    StringGrid1-&gt;Canvas-&gt;Font-&gt;Color = clHighlightText;
  }
  // gerade Zeilen Dunkelgrau, aber nicht die feste(n) Zeile(n) oben
  else if (ARow % 2 &amp;&amp; !State.Contains(gdFixed))
  {
    StringGrid1-&gt;Canvas-&gt;Brush-&gt;Color = clGray;
    StringGrid1-&gt;Canvas-&gt;Font-&gt;Color = clWhite;
  }
  // gerade Spalten Hellgrau, aber nicht ... links
  else if (ACol % 2 &amp;&amp; !State.Contains(gdFixed))
  {
    StringGrid1-&gt;Canvas-&gt;Brush-&gt;Color = clSilver;
    StringGrid1-&gt;Canvas-&gt;Font-&gt;Color = clWhite;
  }
  // Zelle 2/2 Gelb
  else if (ACol == 2 &amp;&amp; ARow == 2)
  {
    StringGrid1-&gt;Canvas-&gt;Brush-&gt;Color = clYellow;
    StringGrid1-&gt;Canvas-&gt;Font-&gt;Color = clBlack;
  }

  // Zelle endlich zeichnen
  StringGrid1-&gt;Canvas-&gt;FillRect(Rect);

  // noch ein Gimmick für die Textausrichtung
  int hAlign;   // text align, 0/1/2 - Left/Center/Right
  if (ACol % 2)
    hAlign = 1;
  else
    hAlign = 2;

  // und zum Schluss den Text in die Zelle malen
  DrawText(StringGrid1-&gt;Canvas-&gt;Handle, StringGrid1-&gt;Cells[ACol][ARow].c_str(),
    -1, &amp;Rect, DT_SINGLELINE | DT_VCENTER | hAlign);
}
//---------------------------------------------------------------------------
</code></pre>
<p>Allerdings kann ich ja die Methode nicht peer Zeiger an der stelle meines Codes ändern odeR?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/156675/stringgrind-textausrichtung-ändern</link><generator>RSS for Node</generator><lastBuildDate>Mon, 10 Aug 2026 03:32:06 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/156675.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 19 Aug 2006 00:43:43 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to StringGrind Textausrichtung ändern. on Sat, 19 Aug 2006 00:43:43 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich würde gerne innerhalb einer methode die textausrichtung eines StringGrids ändern. Hier ein paar infos:</p>
<pre><code class="language-cpp">void TFunktion::writeStringGrid(TStringGrid *StringGrid)
{

   for(int i=0; i &lt; N_ELEMENTE; i++)
   {
      /* ... ganz viel code ... */
   }

   StringGrid-&gt;ColCount = PositionZaehler;
   StringGrid-&gt;RowCount = 2;
   StringGrid-&gt;FixedCols = 0;
   StringGrid-&gt;FixedRows = 0;
   StringGrid-&gt;GridLineWidth = 0;
   StringGrid-&gt;DefaultColWidth = StringGrid-&gt;Canvas-&gt;TextWidth(&quot;000&quot;);
   StringGrid-&gt;RowHeights[0] = StringGrid-&gt;Canvas-&gt;TextHeight(&quot;0&quot;);
}
</code></pre>
<p>So, also ich übergebe über die Parameter ein Zeiger auf ein StringGrid.<br />
Das wird jetzt über die Methode formatiert und beschrieben. Jetzt mein Problem.<br />
Das StringGrid soll in der ersten ([0]ten) Reihe die Textausrichtung LINKS haben und in der zweiten ([1]ten) mittig bzw standard. Wenns geht auch noch in der ersten ([0]ten) reihe nach UNTEN ausgerichtiet sein.</p>
<p>Problem ist jetzt, das über den Zeiger zu ändern. Mir fällt da keine lösung ein. In der FAQ habe ich das hier gefunden.</p>
<pre><code class="language-cpp">void __fastcall TForm1::StringGrid1DrawCell(TObject *Sender, int ACol,
      int ARow, TRect &amp;Rect, TGridDrawState State)
{
  // Farben festlegen:
  // Standardfarben für selektierte Zelle(n)
  if (State.Contains(gdSelected))
  {
    StringGrid1-&gt;Canvas-&gt;Brush-&gt;Color = clHighlight;
    StringGrid1-&gt;Canvas-&gt;Font-&gt;Color = clHighlightText;
  }
  // gerade Zeilen Dunkelgrau, aber nicht die feste(n) Zeile(n) oben
  else if (ARow % 2 &amp;&amp; !State.Contains(gdFixed))
  {
    StringGrid1-&gt;Canvas-&gt;Brush-&gt;Color = clGray;
    StringGrid1-&gt;Canvas-&gt;Font-&gt;Color = clWhite;
  }
  // gerade Spalten Hellgrau, aber nicht ... links
  else if (ACol % 2 &amp;&amp; !State.Contains(gdFixed))
  {
    StringGrid1-&gt;Canvas-&gt;Brush-&gt;Color = clSilver;
    StringGrid1-&gt;Canvas-&gt;Font-&gt;Color = clWhite;
  }
  // Zelle 2/2 Gelb
  else if (ACol == 2 &amp;&amp; ARow == 2)
  {
    StringGrid1-&gt;Canvas-&gt;Brush-&gt;Color = clYellow;
    StringGrid1-&gt;Canvas-&gt;Font-&gt;Color = clBlack;
  }

  // Zelle endlich zeichnen
  StringGrid1-&gt;Canvas-&gt;FillRect(Rect);

  // noch ein Gimmick für die Textausrichtung
  int hAlign;   // text align, 0/1/2 - Left/Center/Right
  if (ACol % 2)
    hAlign = 1;
  else
    hAlign = 2;

  // und zum Schluss den Text in die Zelle malen
  DrawText(StringGrid1-&gt;Canvas-&gt;Handle, StringGrid1-&gt;Cells[ACol][ARow].c_str(),
    -1, &amp;Rect, DT_SINGLELINE | DT_VCENTER | hAlign);
}
//---------------------------------------------------------------------------
</code></pre>
<p>Allerdings kann ich ja die Methode nicht peer Zeiger an der stelle meines Codes ändern odeR?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1120072</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1120072</guid><dc:creator><![CDATA[d0x]]></dc:creator><pubDate>Sat, 19 Aug 2006 00:43:43 GMT</pubDate></item><item><title><![CDATA[Reply to StringGrind Textausrichtung ändern. on Sat, 19 Aug 2006 06:31:35 GMT]]></title><description><![CDATA[<p>die Textausrichtung eines StringGrid kann nur beim Zeichnen (OnDrawCell) geändert werden, also setze bei dem StringGrid diese Methode einfach ein, entweder zur Entwurfszeit über den Objektinspektor oder zur Laufzeit dynamisch (<a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-39206.html" rel="nofollow">Beispiel</a>)</p>
<p>um innerhalb der Methode auf das referenzierende Objekt zuzugreifen, in deinem Fall also das StringGrid kannst du</p>
<pre><code class="language-cpp">TStringGrid *Beliebiger_VariablenName = dynamic_cast&lt;TStringGrid*&gt;(Sender);
</code></pre>
<p>verwenden, wobei du dann nur Beliebiger_VariablenName als Bezeichnung für das StringGrid innerhalb der Methode verwenden solltest</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1120100</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1120100</guid><dc:creator><![CDATA[Linnea]]></dc:creator><pubDate>Sat, 19 Aug 2006 06:31:35 GMT</pubDate></item><item><title><![CDATA[Reply to StringGrind Textausrichtung ändern. on Sat, 19 Aug 2006 16:55:18 GMT]]></title><description><![CDATA[<p>Wie kann ich denn bei dieser funktion auf StringGrid1 zugreifen, wenn ich den<br />
zeiger darauf gar nicht habe. (Die Funktion liegt jat nich in der Form<br />
wo das StringGrid letztendlich ist.)</p>
<p>Bekommt man den Zeiger irgendwie aus *Sender?</p>
<pre><code class="language-cpp">void __fastcall TForm1::StringGrid1DrawCell(TObject *Sender, int ACol,
      int ARow, TRect &amp;Rect, TGridDrawState State)
{
  // Farben festlegen:
  // Standardfarben für selektierte Zelle(n)
  if (State.Contains(gdSelected))
  {
    StringGrid1-&gt;Canvas-&gt;Brush-&gt;Color = clHighlight;
    StringGrid1-&gt;Canvas-&gt;Font-&gt;Color = clHighlightText;
  }
  // gerade Zeilen Dunkelgrau, aber nicht die feste(n) Zeile(n) oben
  else if (ARow % 2 &amp;&amp; !State.Contains(gdFixed))
  {
    StringGrid1-&gt;Canvas-&gt;Brush-&gt;Color = clGray;
    StringGrid1-&gt;Canvas-&gt;Font-&gt;Color = clWhite;
  }
  // gerade Spalten Hellgrau, aber nicht ... links
  else if (ACol % 2 &amp;&amp; !State.Contains(gdFixed))
  {
    StringGrid1-&gt;Canvas-&gt;Brush-&gt;Color = clSilver;
    StringGrid1-&gt;Canvas-&gt;Font-&gt;Color = clWhite;
  }
  // Zelle 2/2 Gelb
  else if (ACol == 2 &amp;&amp; ARow == 2)
  {
    StringGrid1-&gt;Canvas-&gt;Brush-&gt;Color = clYellow;
    StringGrid1-&gt;Canvas-&gt;Font-&gt;Color = clBlack;
  }

  // Zelle endlich zeichnen
  StringGrid1-&gt;Canvas-&gt;FillRect(Rect);

  // noch ein Gimmick für die Textausrichtung
  int hAlign;   // text align, 0/1/2 - Left/Center/Right
  if (ACol % 2)
    hAlign = 1;
  else
    hAlign = 2;

  // und zum Schluss den Text in die Zelle malen
  DrawText(StringGrid1-&gt;Canvas-&gt;Handle, StringGrid1-&gt;Cells[ACol][ARow].c_str(),
    -1, &amp;Rect, DT_SINGLELINE | DT_VCENTER | hAlign);
}
//---------------------------------------------------------------------------
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1120404</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1120404</guid><dc:creator><![CDATA[d0x]]></dc:creator><pubDate>Sat, 19 Aug 2006 16:55:18 GMT</pubDate></item><item><title><![CDATA[Reply to StringGrind Textausrichtung ändern. on Sat, 19 Aug 2006 18:11:00 GMT]]></title><description><![CDATA[<p>hier nochmal</p>
<p>Linnea schrieb:</p>
<blockquote>
<p>um innerhalb der Methode auf das referenzierende Objekt zuzugreifen, in deinem Fall also das StringGrid kannst du</p>
<pre><code>TStringGrid *Beliebiger_VariablenName = dynamic_cast&lt;TStringGrid*&gt;(Sender);
</code></pre>
<p>verwenden, wobei du dann nur Beliebiger_VariablenName als Bezeichnung für das StringGrid innerhalb der Methode verwenden solltest</p>
</blockquote>
<p>und hier noch eine Hilfe -&gt; <a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-39210.html" rel="nofollow">FAQ</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1120481</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1120481</guid><dc:creator><![CDATA[Linnea]]></dc:creator><pubDate>Sat, 19 Aug 2006 18:11:00 GMT</pubDate></item><item><title><![CDATA[Reply to StringGrind Textausrichtung ändern. on Sat, 19 Aug 2006 20:10:21 GMT]]></title><description><![CDATA[<p>Sorry, hatte da was falsch verstanden ;).</p>
<p>Ok, das ansprechen läuft jetzt. Aber hier das will net so</p>
<p>C++ Fehler Funktion.cpp(299): E2034 Konvertierung von 'void (_fastcall *)(TObject *,int,int,TRect &amp;,TGridDrawState)' nach 'void (_fastcall * (_closure )(TObject *,int,int,const TRect &amp;,TGridDrawState))(TObject *,int,int,const TRect &amp;,TGridDrawState)' nicht möglich</p>
<p>Die Fehlermeldung kommt an der Zeile wo das kommentar<br />
&quot;Und hier kommt der Fehler&quot; steht.</p>
<p>Ich habe das jetzt so gemacht:</p>
<pre><code class="language-cpp">void __fastcall StringGridDrawCell(TObject *Sender, int ACol,
      int ARow, TRect &amp;Rect, TGridDrawState State);

class TFunktion
{

   private:

      /* ... */

   public:

      TFunktion();
      /* ... */

      void writeStringGrid(TStringGrid *StringGrid, bool setSize, bool setFormat);

};

void TFunktion::writeStringGrid(TStringGrid *StringGrid, bool setSize, bool setFormat)
{

   TStringGrid *newGrid = new TStringGrid( StringGrid-&gt;Owner );

   /* Vom übergebenen StringGrid daten in das neue übenehmen */
   AnsiString GridName;

   newGrid-&gt;Color   = StringGrid-&gt;Color;
   newGrid-&gt;Font    = StringGrid-&gt;Font;
   /* ... */
   newGrid-&gt;Parent  = StringGrid-&gt;Parent;
   newGrid-&gt;TabOrder = newGrid-&gt;TabOrder;

   newGrid-&gt;Ctl3D   = StringGrid-&gt;Ctl3D;
   newGrid-&gt;BorderStyle = StringGrid-&gt;BorderStyle;

   // altes löschen
   delete StringGrid;

   newGrid-&gt;Name = GridName;

   /* newGrid füllen */

   /* ... */

   newGrid-&gt;ColCount        = PositionZaehler;
   newGrid-&gt;RowCount        = 2;
   newGrid-&gt;FixedCols       = 0;
   newGrid-&gt;FixedRows       = 0;

   // Wenn das Grid neu formatiert werden soll, tu dies ;)
   if( setFormat )
   {
      newGrid-&gt;GridLineWidth   = 0;
      newGrid-&gt;DefaultColWidth = newGrid-&gt;Canvas-&gt;TextWidth(&quot;000&quot;);
      newGrid-&gt;RowHeights[0]   = newGrid-&gt;Canvas-&gt;TextHeight(&quot;0&quot;);
      newGrid-&gt;Enabled         = false;
      newGrid-&gt;Ctl3D           = false;
      newGrid-&gt;BorderStyle     = bsNone;

      /* Und hier kommt der Fehler: */
      newGrid-&gt;OnDrawCell      = StringGridDrawCell;
    }

   // Wenn das Grid neu dimensioniert werden soll, tu dies ;)
   if( setSize )
   {
      newGrid-&gt;Height = newGrid-&gt;RowHeights[0] + newGrid-&gt;RowHeights[1];

      int newWidth = 1;
      for(int i=0; i &lt; newGrid-&gt;ColCount; i++)
      {
         newWidth += newGrid-&gt;ColWidths[i];
      }

      newGrid-&gt;Width = newWidth;

      newGrid-&gt;ScrollBars = ssNone;
   }
}

void __fastcall StringGridDrawCell(TObject *Sender, int ACol,
      int ARow, TRect &amp;Rect, TGridDrawState State)
{

   TStringGrid *StringGrid = dynamic_cast&lt;TStringGrid*&gt;(Sender);

   /* ... */

  // und zum Schluss den Text in die Zelle schreiben
  DrawText(StringGrid-&gt;Canvas-&gt;Handle, StringGrid-&gt;Cells[ACol][ARow].c_str(),
    -1, &amp;Rect, DT_SINGLELINE | DT_VCENTER | hAlign);
}
</code></pre>
<p>Jemand ne idee/erlärung?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1120586</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1120586</guid><dc:creator><![CDATA[d0x]]></dc:creator><pubDate>Sat, 19 Aug 2006 20:10:21 GMT</pubDate></item><item><title><![CDATA[Reply to StringGrind Textausrichtung ändern. on Sat, 19 Aug 2006 20:20:41 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>das ist ein bekannter Fehler. Obwohl der OI den Event mit <em>TRect&amp;</em> erstellt, muß aber beim manuellen Zuweisen <em>const Rect&amp;</em> angegeben, wie es auch in der BCB-Hilfe steht.</p>
<pre><code class="language-cpp">void __fastcall StringGridDrawCell(TObject *Sender, int ACol,
      int ARow, const TRect &amp;Rect, TGridDrawState State)
</code></pre>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1120602</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1120602</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Sat, 19 Aug 2006 20:20:41 GMT</pubDate></item><item><title><![CDATA[Reply to StringGrind Textausrichtung ändern. on Sat, 19 Aug 2006 21:31:12 GMT]]></title><description><![CDATA[<p>hm, ich hab jetzt die deklarationszeile so abgeändert und bekomme diesen fehler:</p>
<p>[C++ Fehler] Funktion.cpp(299): E2034 Konvertierung von 'void (_fastcall *)(TObject *,int,int,const TRect &amp;,TGridDrawState)' nach 'void (_fastcall * (_closure )(TObject *,int,int,const TRect &amp;,TGridDrawState))(TObject *,int,int,const TRect &amp;,TGridDrawState)' nicht möglich<br />
[C++ Fehler] Funktion.cpp(529): E2034 Konvertierung von 'const TRect *' nach 'tagRECT *' nicht möglich<br />
[C++ Fehler] Funktion.cpp(529): E2342 Keine Übereinstimmung des Typs beim Parameter 'lpRect' ('tagRECT *' erwartet, 'const TRect *' erhalten)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1120634</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1120634</guid><dc:creator><![CDATA[d0x]]></dc:creator><pubDate>Sat, 19 Aug 2006 21:31:12 GMT</pubDate></item></channel></rss>