<?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[Berechtigungsformular mit TreeView, ListView und CheckBox oder ganz anders?]]></title><description><![CDATA[<p>Hallo Community,</p>
<p>habe mal wieder ein Problem und bräuchte einen Lösungsansatz.</p>
<p>Ich möchte eine Tabelle erzeugen, die ungefähr so aussieht:</p>
<p>--------------------------------------------------------------------------<br />
| Aufgabe____________|__Level0___|___Level1__|___Level2__| bis Level9<br />
-------------------------------------------------------------------<br />
| Benutzer anlegen___|____0______|____0______|____1______|<br />
| Benutzer ansehen___|____0______|____1______|____1______|<br />
| Benutzer löschen___|____0______|____0______|____1______|<br />
------------------------------------------------------------------<br />
| Dateien anlegen____|____1______|____1______|____1______|<br />
| Dateien ansehen____|____1______|____1______|____1______|<br />
| Dateienlöschen____|____0______|____0______|____1______|<br />
-------------------------------------------------------------------</p>
<p>Anstelle der 0 bzw. 1 in den Levelfeldern sollen dort CheckBoxen drin sein,<br />
die mir die Daten in ein array[6][9] als true oder false Werte sichern soll.</p>
<p>Den Aufruf der Aufgaben habe ich mir vorgestellt wie in einem TreeView:</p>
<p>+ Alle Berechtigungen<br />
|-------Benutzer<br />
|-------Dateien<br />
|-------...</p>
<p>Je nachdem was ich in diesem TreeView auswähle sollen mir die Aufgaben z.B. von Benutzer oder Dateien oder eben Alle Berechtigungen angezeigt werden und ich möchte über Checkboxen den Level setzten / rücksetzen können.</p>
<p>Diesen Level werde ich mir dann aus dem array holen und der jeweilen Button, Formular ... als &quot;Tag&quot; zuweisen.</p>
<p>Die Zuweisung ist kein Problem, aber wie bekomme ich eine Ordentliche Tabelle mit Checkboxen hin.</p>
<p>Ich habe es mit einem ListView versucht. Habe dort auch die Überschriften und Aufgaben drin.</p>
<pre><code class="language-cpp">ListView1-&gt;Items-&gt;Clear();                               // ListView leeren 
ListView1-&gt;Items-&gt;Add();                                 // Item hinzufügen
ListView1-&gt;Items-&gt;Item[0]-&gt;Caption =&quot;Benutzer anlegen&quot;;  // Überschrift
ListView1-&gt;Items-&gt;Item[0]-&gt;SubItems-&gt;Add(&quot;1&quot;);   //&lt;-- Hier Checkbox Problem                                                                                                   
ListView1-&gt;Items-&gt;Item[0]-&gt;SubItems-&gt;Add(&quot;2&quot;);   //&lt;-- Hier Checkbox Problem                                                                                                   

ListView1-&gt;GridLines = true;                             // Gitternetz ein
</code></pre>
<p>Ich habe probiert Checkboxen dynamisch zu erzeugen, die werden aber immer in der linken oberen Ecke der ListView Komponente erstellt und ich kann sie nicht den einzelnen Feldern zuordnen, sondern als Parent nur ListView1 auswählen.</p>
<p>Wenn ich sie fest positioniere (wie mach ich das?) habe ich hinterher das Problem, das sie bei einer Auswahl von &quot;Alle Berechtigungen&quot; alle übereinander habe.</p>
<pre><code class="language-cpp">TCheckBox *NewCheckBox = new TCheckBox(ListView1-&gt;Items-&gt;Item[0]);
NewCheckBox-&gt;Name = &quot;CB10_0&quot;; 
NewCheckBox-&gt;Parent = ListView1;
</code></pre>
<p>Außerdem weiß ich nicht wie es sich verhählt, wenn ich da mehrere 100 Checkboxen dynamisch aufrufe. Die Level gehen von (0 bis 9) und ich habe sehr viele verschiedene Aufgaben die ich einzeln sezten oder sperren möchte.</p>
<p>Vielleicht hat mir auch jemand eine ganz andere Lösung um eine Art Berechtigungsformular zu erstellen. Und ich tue mir nur unnötig schwer mit meinem Ansatz.</p>
<p>Wäre für jeden Tip dankbar.<br />
Viele Grüße.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/197195/berechtigungsformular-mit-treeview-listview-und-checkbox-oder-ganz-anders</link><generator>RSS for Node</generator><lastBuildDate>Tue, 18 Aug 2026 15:51:39 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/197195.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 07 Nov 2007 18:46:40 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Berechtigungsformular mit TreeView, ListView und CheckBox oder ganz anders? on Wed, 07 Nov 2007 19:09:12 GMT]]></title><description><![CDATA[<p>Hallo Community,</p>
<p>habe mal wieder ein Problem und bräuchte einen Lösungsansatz.</p>
<p>Ich möchte eine Tabelle erzeugen, die ungefähr so aussieht:</p>
<p>--------------------------------------------------------------------------<br />
| Aufgabe____________|__Level0___|___Level1__|___Level2__| bis Level9<br />
-------------------------------------------------------------------<br />
| Benutzer anlegen___|____0______|____0______|____1______|<br />
| Benutzer ansehen___|____0______|____1______|____1______|<br />
| Benutzer löschen___|____0______|____0______|____1______|<br />
------------------------------------------------------------------<br />
| Dateien anlegen____|____1______|____1______|____1______|<br />
| Dateien ansehen____|____1______|____1______|____1______|<br />
| Dateienlöschen____|____0______|____0______|____1______|<br />
-------------------------------------------------------------------</p>
<p>Anstelle der 0 bzw. 1 in den Levelfeldern sollen dort CheckBoxen drin sein,<br />
die mir die Daten in ein array[6][9] als true oder false Werte sichern soll.</p>
<p>Den Aufruf der Aufgaben habe ich mir vorgestellt wie in einem TreeView:</p>
<p>+ Alle Berechtigungen<br />
|-------Benutzer<br />
|-------Dateien<br />
|-------...</p>
<p>Je nachdem was ich in diesem TreeView auswähle sollen mir die Aufgaben z.B. von Benutzer oder Dateien oder eben Alle Berechtigungen angezeigt werden und ich möchte über Checkboxen den Level setzten / rücksetzen können.</p>
<p>Diesen Level werde ich mir dann aus dem array holen und der jeweilen Button, Formular ... als &quot;Tag&quot; zuweisen.</p>
<p>Die Zuweisung ist kein Problem, aber wie bekomme ich eine Ordentliche Tabelle mit Checkboxen hin.</p>
<p>Ich habe es mit einem ListView versucht. Habe dort auch die Überschriften und Aufgaben drin.</p>
<pre><code class="language-cpp">ListView1-&gt;Items-&gt;Clear();                               // ListView leeren 
ListView1-&gt;Items-&gt;Add();                                 // Item hinzufügen
ListView1-&gt;Items-&gt;Item[0]-&gt;Caption =&quot;Benutzer anlegen&quot;;  // Überschrift
ListView1-&gt;Items-&gt;Item[0]-&gt;SubItems-&gt;Add(&quot;1&quot;);   //&lt;-- Hier Checkbox Problem                                                                                                   
ListView1-&gt;Items-&gt;Item[0]-&gt;SubItems-&gt;Add(&quot;2&quot;);   //&lt;-- Hier Checkbox Problem                                                                                                   

ListView1-&gt;GridLines = true;                             // Gitternetz ein
</code></pre>
<p>Ich habe probiert Checkboxen dynamisch zu erzeugen, die werden aber immer in der linken oberen Ecke der ListView Komponente erstellt und ich kann sie nicht den einzelnen Feldern zuordnen, sondern als Parent nur ListView1 auswählen.</p>
<p>Wenn ich sie fest positioniere (wie mach ich das?) habe ich hinterher das Problem, das sie bei einer Auswahl von &quot;Alle Berechtigungen&quot; alle übereinander habe.</p>
<pre><code class="language-cpp">TCheckBox *NewCheckBox = new TCheckBox(ListView1-&gt;Items-&gt;Item[0]);
NewCheckBox-&gt;Name = &quot;CB10_0&quot;; 
NewCheckBox-&gt;Parent = ListView1;
</code></pre>
<p>Außerdem weiß ich nicht wie es sich verhählt, wenn ich da mehrere 100 Checkboxen dynamisch aufrufe. Die Level gehen von (0 bis 9) und ich habe sehr viele verschiedene Aufgaben die ich einzeln sezten oder sperren möchte.</p>
<p>Vielleicht hat mir auch jemand eine ganz andere Lösung um eine Art Berechtigungsformular zu erstellen. Und ich tue mir nur unnötig schwer mit meinem Ansatz.</p>
<p>Wäre für jeden Tip dankbar.<br />
Viele Grüße.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1399386</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1399386</guid><dc:creator><![CDATA[egcactus]]></dc:creator><pubDate>Wed, 07 Nov 2007 19:09:12 GMT</pubDate></item><item><title><![CDATA[Reply to Berechtigungsformular mit TreeView, ListView und CheckBox oder ganz anders? on Thu, 08 Nov 2007 09:08:35 GMT]]></title><description><![CDATA[<p>Die ListView-Komponente unterstützt schon Checkboxes von sich aus, du mußt es nur aktivieren (aber nicht zu früh freuen):</p>
<pre><code class="language-cpp">ListView-&gt;Checkboxes = true;
</code></pre>
<p>Nun werden neben jeder ZEILE Checkboxen angezeigt, aber NICHT für jede Spalte.<br />
(mit ViewStyle=vsList oder =vsReport).<br />
Du müßtest dann für jede Spalte eine eigene ListView-Komponente erzeugen. Nachteil wäre v.a. dann, wenn eine Scrollbar angezeigt werden soll...</p>
<p>Eine andere Möglichkeit wäre, du benutzt die Komponente TDrawGrid und zeichnest selber die zwei Zustände der Checkbox (je Grid-Eintrag) mittels Canvas.<br />
Mit den Ereignissen OnMouseDown, OnMouseUp etc. kannst du dann das Anklicken der Checkbox simulieren.</p>
<p>Oder aber du besorgst dir eine externe Komponente mit eingebauten Inplace-Editoren:<br />
unter <a href="http://sunsite.informatik.rwth-aachen.de/delphi/" rel="nofollow">http://sunsite.informatik.rwth-aachen.de/delphi/</a> gibt es eine Menge Komponenten für Delphi und C++ Builder.</p>
<p>Schau mal unter &quot;BC++B X.0 / Grids / XStringgrid&quot; nach - diese scheint für dich am geeignetesten zu sein (X == deine BCB-Version).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1399591</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1399591</guid><dc:creator><![CDATA[Th]]></dc:creator><pubDate>Thu, 08 Nov 2007 09:08:35 GMT</pubDate></item><item><title><![CDATA[Reply to Berechtigungsformular mit TreeView, ListView und CheckBox oder ganz anders? on Thu, 08 Nov 2007 09:08:18 GMT]]></title><description><![CDATA[<p>Das Zauberwort sollte 'Inplace-Editor' lauten.<br />
Schau mal hier: <a href="http://www.bytesandmore.de/rad/cpp/snipp/sc02038.php" rel="nofollow">http://www.bytesandmore.de/rad/cpp/snipp/sc02038.php</a><br />
Es werden zwar andere Komponenten verwendet, aber das Prinzip ist das Gleiche.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1399592</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1399592</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Thu, 08 Nov 2007 09:08:18 GMT</pubDate></item><item><title><![CDATA[Reply to Berechtigungsformular mit TreeView, ListView und CheckBox oder ganz anders? on Thu, 08 Nov 2007 14:38:51 GMT]]></title><description><![CDATA[<p><strong><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/9348">@Th</a>:</strong></p>
<pre><code class="language-cpp">ListView-&gt;Checkboxes =true;
</code></pre>
<p>hatte ich schon entdeckt und ausprobiert, aber das war leider nicht das was ich brauche.</p>
<p>Eine eigene ListView Komponente neben jeder Spalte fällt auch weg, da es so viele Aufgaben werden, dass ich auf jeden Fall einen Scrollbalken brauche.</p>
<p>Komponente TDrawGrid zeichnen und die zwei Zustände der Checkbox (je Grid-Eintrag) mittels Canvas ist echt sehr umständlich, da ich ja die Komponente positionieren muß und ich je nachdem welcher Oberbegriff ausgewählt wird die Auswahl entweder Komplett oder nur zur Aufgabe gehörend anzeigen möchte.</p>
<p>Ich probiere mal ob ich die CheckBoxen reinbekomme.</p>
<p><strong>@Joe_M.</strong><br />
Die Sache mit den Inplace-Editor scheint mir auch nicht schlecht zu sein. Nur funktioniert bei mir der Quelltext von der angegebenen Seite nicht. Um mir das in Natura mal anzusehen.</p>
<p>Ich bekomme immer die Meldung FormMain-&gt;StringGrid1 Besitzt keine entsprechende Komponente. Soll die Deklaration entfernt werden.<br />
Wenn ich auf dem Formular ein StringGrid platziere, dann wird mir aber nichts angezeigt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1399741</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1399741</guid><dc:creator><![CDATA[egcactus]]></dc:creator><pubDate>Thu, 08 Nov 2007 14:38:51 GMT</pubDate></item><item><title><![CDATA[Reply to Berechtigungsformular mit TreeView, ListView und CheckBox oder ganz anders? on Thu, 08 Nov 2007 14:10:10 GMT]]></title><description><![CDATA[<p>Bei einem StringGrid heißen die zwei Eigenschaften zum Setzen der max. Spalten und Zeilen:</p>
<pre><code class="language-cpp">StringGrid-&gt;ColCount = 11;
StringGrid-&gt;RowCount = 42;
</code></pre>
<p>Nun hast du ein Gitter der Größe 42 * 11 und kannst mit StringGrid-&gt;Cells[x][y] auf die einzelnen Inhalte zugreifen (ich habe mir die Komponente XStringGrid nicht genau angeschaut, nehme aber an daß sie von TStringGrid geerbt ist).<br />
Funktioniert denn das Demo-Programm zu der Komponente bei dir? Dann kannst du dort ja in den Sourcen nachschauen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1399778</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1399778</guid><dc:creator><![CDATA[Th]]></dc:creator><pubDate>Thu, 08 Nov 2007 14:10:10 GMT</pubDate></item><item><title><![CDATA[Reply to Berechtigungsformular mit TreeView, ListView und CheckBox oder ganz anders? on Thu, 08 Nov 2007 14:43:10 GMT]]></title><description><![CDATA[<p>Habe mittlerweile, die eigenschaft ColCount gefunden. Danke nochmal, bin irgendwie davon ausgegangen, dass ich damit die Anzahl der Spalten zähle.</p>
<p>Mach mich mal dran die CheckBoxen einzupflegen. Mal schauen wie das hinhaut.</p>
<p>PS: Das Demo hat bei mir irgendwie nicht richtig funktioniert.</p>
<p>Viele Grüße aus dem Schwabenländle.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1399798</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1399798</guid><dc:creator><![CDATA[egcactus]]></dc:creator><pubDate>Thu, 08 Nov 2007 14:43:10 GMT</pubDate></item><item><title><![CDATA[Reply to Berechtigungsformular mit TreeView, ListView und CheckBox oder ganz anders? on Thu, 08 Nov 2007 23:51:04 GMT]]></title><description><![CDATA[<p>Also, ich habe immer noch ein Problem.</p>
<p>Ich habe nun die XStringGrid Komponente drin, aber Checkboxen bekomme ich da keine raus. Habe aber mit ihr einfach meine Checkbox positioniert. Und das ganze mit Inline Funktionen gelöst.</p>
<p><strong>Problem:</strong><br />
Entweder habe ich nur eine Checkbox beim Start des Formulars eingeblendet und zwar in der Zelle, die den Fokus hat oder ich klicke so wie im unterem Beispiel jedes Feld an. Dann wird in jedem Feld eine CheckBox erstellt.</p>
<p>Gibt es aber irgendwie ein Ereignis, dass ich bei TreeView oder StringGrid auswählen kann, dass ich automatisch in jeder Zelle eine Checkbox anzeigen kann?</p>
<p>Habe versucht die XStringGrid1-&gt;Col und XStringGrid1-&gt;Row wie in einem Array durchzuzählen und dort jeweils mit</p>
<pre><code class="language-cpp">PlaceCheckBox(pCheckBox);
</code></pre>
<p>eine CheckBox zu setzen, aber irgendwie funktioniert das nicht.</p>
<p>Hat mir jemand noch mal einen Tip?</p>
<pre><code class="language-cpp">void __fastcall TFormBerechtigungen::PlaceCheckBox(TCheckBox *pCheckBox1)
{
  // Maße eines Gitterfensters bestimmen
  TRect Rect = XStringGrid1-&gt;CellRect(XStringGrid1-&gt;Col,XStringGrid1-&gt;Row);

  // CheckBox den obersten Punkt des XStringGrid zuweisen
  pCheckBox1-&gt;Top =  XStringGrid1-&gt;Top;

  // CheckBox den linken Punkt des XStringGrid zuweisen
  pCheckBox1-&gt;Left =  XStringGrid1-&gt;Left;

  // CheckBox Top Position zuweisen
  pCheckBox1-&gt;Top = pCheckBox1-&gt;Top + Rect.Top + XStringGrid1-&gt;GridLineWidth +1;

  // CheckBox Left Position zuweisen
  pCheckBox1-&gt;Left = pCheckBox1-&gt;Left + Rect.Left + XStringGrid1-&gt;GridLineWidth +14;

  // CheckBox Höhe zuweisen
  pCheckBox1-&gt;Height = (Rect.Bottom - Rect.Top) - 1;

  // CheckBox Breite zuweisen
  pCheckBox1-&gt;Width = (Rect.Right - Rect.Left) - 17;

  // CheckBox sichtbar machen
  pCheckBox1-&gt;Visible = true;

  // CheckBox Focus zuweisen
  pCheckBox1-&gt;SetFocus();
}
</code></pre>
<pre><code class="language-cpp">void __fastcall TFormBerechtigungen::XStringGrid1Click(TObject *Sender)
{
 pCheckBox = new TCheckBox(GroupBox1);
 pCheckBox-&gt;Parent = GroupBox1;
 pCheckBox-&gt;Color = clWindow;
 pCheckBox-&gt;Alignment = taRightJustify;
 pCheckBox-&gt;Visible = false;
 pCheckBox-&gt;OnClick = CheckBoxClick;

 PlaceCheckBox(pCheckBox);
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1400083</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1400083</guid><dc:creator><![CDATA[egcactus]]></dc:creator><pubDate>Thu, 08 Nov 2007 23:51:04 GMT</pubDate></item><item><title><![CDATA[Reply to Berechtigungsformular mit TreeView, ListView und CheckBox oder ganz anders? on Fri, 09 Nov 2007 08:02:29 GMT]]></title><description><![CDATA[<p>Es macht vielleicht Sinn, statt der GroupBox das StringGrid als Parent der CheckBox anzugeben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1400124</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1400124</guid><dc:creator><![CDATA[Jansen]]></dc:creator><pubDate>Fri, 09 Nov 2007 08:02:29 GMT</pubDate></item><item><title><![CDATA[Reply to Berechtigungsformular mit TreeView, ListView und CheckBox oder ganz anders? on Fri, 09 Nov 2007 11:06:26 GMT]]></title><description><![CDATA[<p>Habe ich abgeändert, aber das Problem bleibt das selbe. Bekomme nur in der ersten Zelle den Button automatisch angezeigt und bei den anderen muß ich reinklicken.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1400208</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1400208</guid><dc:creator><![CDATA[egcactus]]></dc:creator><pubDate>Fri, 09 Nov 2007 11:06:26 GMT</pubDate></item><item><title><![CDATA[Reply to Berechtigungsformular mit TreeView, ListView und CheckBox oder ganz anders? on Fri, 09 Nov 2007 13:44:07 GMT]]></title><description><![CDATA[<p>Ich hab jetzt zwar nicht die XStringGrid Komponente aber du kannst das doch auch ganz einfach über ein entsprechendes Array bzw besser noch mit entsprechendem vector von 'TCheckBox' machen.<br />
Du erzeugst dynamisch zur Laufzeit soviel neue Instanzen von TCheckBox wie du in deinem Grid benötigst.<br />
Die positionierst du dann 'über' dem Grid.<br />
Am besten natürlich wenn du da gleich von StringGrid ableitest.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1400315</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1400315</guid><dc:creator><![CDATA[Tcheck]]></dc:creator><pubDate>Fri, 09 Nov 2007 13:44:07 GMT</pubDate></item><item><title><![CDATA[Reply to Berechtigungsformular mit TreeView, ListView und CheckBox oder ganz anders? on Sat, 10 Nov 2007 00:12:29 GMT]]></title><description><![CDATA[<p>Also ich komm hier von einem zum Anderem. Ich habe es nun geschaft, dynamisch so viele CheckBoxen zu erstellen wie ich benötige. Diese habe ich auch der XStringGrid Komponente zugeordnet. Die CheckBoxen sind auch in den entsprechenden Feldern positioniert.</p>
<p>Aber irgendwie mache ich noch etwas falsch beim Zuweisen.</p>
<p>Ich kann jetzt zwar die Buttons betätigen und das OnClick Ereignis wird ausgelöst, aber ich bekomme in der OnClick Funktion keine Informationen mehr darüber in welcher Zeile oder Spalte des StringGrids ich mich befinde.</p>
<p>Aufrufe wie</p>
<pre><code class="language-cpp">XStringGrid-&gt;Col
</code></pre>
<p>liefern immer nur eine Eins zurück.</p>
<p>Das komische ist, ich kann darin noch nicht mal abfragen, ob eine Checkbox <strong>checked</strong> ist. Die Überprüfung wirkt sich in keinster Weise aus.</p>
<p>Ich habe mir die Faq zu dynamisch erzeugte Komponenten durchgelesen...</p>
<p><a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-39206.html" rel="nofollow">http://www.c-plusplus.net/forum/viewtopic-var-t-is-39206.html</a></p>
<p>...da ich vermute, dass mein Fehler in den mit <strong>new</strong> erzeugten CheckBoxen liegt. Das was ich da gefunden habe, kann ich bei mir so nicht anwenden, da ich keine <strong>const int</strong> Variable nehmen kann. Ich weiß ja erst beim Aufruf im TreeView wie viele Checkboxen ich brauche.</p>
<pre><code class="language-cpp">void __fastcall TFormBerechtigungen::PlaceCheckBox(int Row, int Col)
{
 for(int Zeile =1; Zeile&lt;Row; Zeile++)
    {
     for(int Spalte =1; Spalte&lt;Col; Spalte++)
        {
         pCheckBox = new TCheckBox(pXStringGrid);
         pCheckBox-&gt;Parent = pXStringGrid;
         pCheckBox-&gt;Color = clWindow;
         pCheckBox-&gt;Alignment = taRightJustify;

         // Maße eines Gitterfensters bestimmen
         TRect Rect = pXStringGrid-&gt;CellRect(pXStringGrid-&gt;Col,pXStringGrid-&gt;Row);

         // CheckBox den obersten Punkt des XStringGrid zuweisen
         pCheckBox-&gt;Top =  pXStringGrid-&gt;Top;

         // CheckBox den linken Ounkt des XStringGrid zuweisen
         pCheckBox-&gt;Left =  pXStringGrid-&gt;Left;

         // CheckBox obere Position zuordnen
         pCheckBox-&gt;Top = pCheckBox-&gt;Top                        // pXStringGrid-&gt;Top beibehalten
                          + (Rect.Top * Zeile)                  // Position von Erster Zelle * Anzahl Zeilen
                          + pXStringGrid-&gt;GridLineWidth +1      // Gitter Linie addieren
                          - pXStringGrid-&gt;Top;                  // Positionsverschiebung pXStringGrid-&gt;Top abziehen

         // Position der Zellen ermitteln
         TRect Rect1 = pXStringGrid-&gt;CellRect(Spalte-1,Zeile-1);

         // CheckBox linke Position zuordnen
         pCheckBox-&gt;Left = pCheckBox-&gt;Left                      // pXStringGrid-&gt;Left beibehalten
                           + Rect1.Right                        // Position Rechts Zelle
                           + pXStringGrid-&gt;GridLineWidth +1     // Gitter Linie addieren
                           - pXStringGrid-&gt;Left                 // Positionsverschiebung pXStringGrid-&gt;Left abziehen
                           + 12;                                // Positionierung in der Mitte

         // CheckBox Höhe zuweisen
         pCheckBox-&gt;Height = (Rect.Bottom - Rect.Top) - 2;

         // CheckBox Breite zuweisen
         pCheckBox-&gt;Width = (Rect.Right - Rect.Left) - 17;

         // CheckBox anzeigen
         pCheckBox-&gt;Visible = true;

         // CheckBox Funktion  zuweisen
         pCheckBox-&gt;OnClick = CheckBoxClick;

        }
    }
}
</code></pre>
<p>Also, wenn mir nun einfach jemand sagen kann. Schau mal was du da machst, so ruft das doch kein Mensch auf, dann wäre das echt super.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1400665</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1400665</guid><dc:creator><![CDATA[egcactus]]></dc:creator><pubDate>Sat, 10 Nov 2007 00:12:29 GMT</pubDate></item><item><title><![CDATA[Reply to Berechtigungsformular mit TreeView, ListView und CheckBox oder ganz anders? on Sat, 10 Nov 2007 01:52:39 GMT]]></title><description><![CDATA[<blockquote>
<p>Schau mal was du da machst, so ruft das doch kein Mensch auf...</p>
</blockquote>
<p><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="😉"
    /></p>
<p>Ja, so ist das auch nichts. Du erzeugst dynamisch jede Menge neue CheckBoxen.<br />
Nur musst du ja irgendwie auch darauf zugreifen können.<br />
Dann machst du dir ein Array oder besser noch einen vector ungefähr so:</p>
<pre><code class="language-cpp">TCheckBox *checkboxen[9][6];
</code></pre>
<p>Dann erzeugst du deine Checkboxen</p>
<pre><code class="language-cpp">for (int y=0;y&lt;6;y++)
{
   for(int x=0;x&lt;9;x++)  
   {
      checkboxen[x][y]=new TCheckBox(Form1);
      checkboxen[x][y]-&gt;Parent ...
      ...
   }
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1400687</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1400687</guid><dc:creator><![CDATA[ungefährso]]></dc:creator><pubDate>Sat, 10 Nov 2007 01:52:39 GMT</pubDate></item><item><title><![CDATA[Reply to Berechtigungsformular mit TreeView, ListView und CheckBox oder ganz anders? on Sat, 10 Nov 2007 09:51:12 GMT]]></title><description><![CDATA[<p>Ok, meinen Fehler verstehe ich nun. Nur weiß ich immer noch nicht wie ich ihn genau behebe.</p>
<pre><code class="language-cpp">TCheckBox *checkboxen[9][6];
</code></pre>
<p>Das hier geht bei mir nicht, da auch hier die Angabe des Arrays fest definiert sein muß. Wenn ich hier sowas versuche</p>
<pre><code class="language-cpp">TCheckBox *checkboxen[Row][Col];
</code></pre>
<p>bekomme ich eine Fehlermeldung, dass die Ausdrücke Konstant sein müssen.</p>
<p>Mit einem vector habe ich bis jetzt noch nicht gearbeitet. Habe mich aber ein wenig eingelesen. Dabei würde so etwas gehen.</p>
<pre><code class="language-cpp">std::vector&lt;TCheckBox*&gt; pCheckBox
</code></pre>
<pre><code class="language-cpp">std::vector&lt;TCheckBox*&gt; pCheckBox[];
</code></pre>
<p>Aber das hier geht nicht.</p>
<pre><code class="language-cpp">std::vector&lt;TCheckBox*&gt; pCheckBox[][];
</code></pre>
<p>So kann ich aber auch meine CheckBoxen nicht mit</p>
<pre><code class="language-cpp">checkboxen[x][y]=new TCheckBox(Form1);
</code></pre>
<p>initialisieren. Es sei denn ich löse es so:</p>
<pre><code class="language-cpp">checkboxen[x]=new TCheckBox(Form1);
</code></pre>
<p>und zähle alle erzeugten vector Komponenten. Aber wird das so gehandhabt?</p>
<p>Wie muß ich eigentlich von einem vector den Speicher wieder freigeben. Habe gelesen, dass er nicht wieder freigegeben wird, wenn das Parent Form gelöscht wird?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1400737</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1400737</guid><dc:creator><![CDATA[egcactus]]></dc:creator><pubDate>Sat, 10 Nov 2007 09:51:12 GMT</pubDate></item><item><title><![CDATA[Reply to Berechtigungsformular mit TreeView, ListView und CheckBox oder ganz anders? on Sat, 10 Nov 2007 10:36:20 GMT]]></title><description><![CDATA[<p>Dir fehlen ja wirklich noch grundlegende C++ Kenntnisse, und dann willst du eine GUI programmieren.</p>
<p>Ein paar Tips gebe ich dir, aber beschäftige dich erstmal mit einem kleineren Projekt, dann ist der Frustfaktor auch nicht so groß!</p>
<p>1. Du solltest dir ersteinmal die Hilfe zu den Komponenten ansehen, um die Eigenschaften, Methoden und Ereignisse zu verstehen (die BCB6-Hilfe ist dafür besser geeignet als die beim TurboExplorer).<br />
Für ein StringGrid gibt es das Ereignis OnSelectCell (statt das allgemeingültige OnClick)</p>
<p>2. Ein std::vector&lt;&gt; kapselt ein dynamisches Array, d.h. du brauchst keine Größe (wie bei den Arrays) angeben:</p>
<pre><code class="language-cpp">#include &lt;vector&gt;

std::vector&lt;TCheckBox*&gt; pCheckBoxes; // Deklaration des vectors (als privates Form-Member)

TCheckBox *pCheckBox = new TCheckBox(0);
pCheckBox-&gt;Parent = this;
... // weitere Eigenschaften

pCheckBoxes-&gt;push_back(pCheckBox); // neues Element hinzufügen
</code></pre>
<p>Wie kommt es, daß du noch nicht die Standard-Datentypen der C++ Library kennst (diese werden in jedem C++ Buch / Tutorial und auch hier im Forum erklärt)?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1400761</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1400761</guid><dc:creator><![CDATA[Th]]></dc:creator><pubDate>Sat, 10 Nov 2007 10:36:20 GMT</pubDate></item><item><title><![CDATA[Reply to Berechtigungsformular mit TreeView, ListView und CheckBox oder ganz anders? on Sat, 10 Nov 2007 11:55:33 GMT]]></title><description><![CDATA[<p>Th schrieb:</p>
<blockquote>
<p>Dir fehlen ja wirklich noch grundlegende C++ Kenntnisse, und dann willst du eine GUI programmieren.</p>
<p>Ein paar Tips gebe ich dir, aber beschäftige dich erstmal mit einem kleineren Projekt, dann ist der Frustfaktor auch nicht so groß!</p>
</blockquote>
<p>Bis jetzt hatte ich nur mit reinem C zu tun. Ich brauche das ganze für das Technikerprojekt. Da komm ich aber mit reinem C nicht so weit, da eine GUI gefordert ist. Der Borland Builder ist die Entwicklungsumgebung, die sie bereits haben und in der das Projekt realisiert werden soll.</p>
<p>Ich habe mir nun ein paar Bücher gekauft von Richard Kaiser und Helmut Erlenkötter und lese mich gerade feste ein. Die Hilfe von Borland Builder nutze ich so gut es geht und ich lese auch viel hier im Forum.</p>
<blockquote>
<p>Für ein StringGrid gibt es das Ereignis OnSelectCell (statt das allgemeingültige OnClick)</p>
</blockquote>
<p>Das Ereignis habe ich gesehen und ausprobiert. Für mich ist aber die ausgewählte Zelle erstmal nicht von Bedeutung. Ich benutze die StringGrid Komponente um einmal die Anzahl der Checkboxen zu ermitteln und um meine Checkboxen in tabellarischer Form zu den Aufgaben und Level zu positionieren.</p>
<p>Ich möchte wissen ob zu einer bestimmten Aufgabe die CheckBox gesetzt oder nicht gesetzt ist. Diesen Zustand speicher ich mir dann in einem zweidimensionalem Array ab.<br />
So kann ich aus dem CheckBox Zustand und der Tag Variable der Aufgabe vergleichen ob diese auf true oder false ist und erlaube oder verbiete dem jeweiligem User die Benutzung der Aufgabe.</p>
<p>So kann ich mir einen Zugriffslevel für jede Aufgabe zusammenbauen.</p>
<p>Ungefähr in dieser Art:</p>
<pre><code class="language-cpp">if(Aufgabe.Tag != CheckBoxZustand[x][y])
   { 
     // Tue irgendwas
   }
else
   {
      // Fehler ausgeben  
      Application-&gt;MessageBoxA(&quot;Keine Berechtigung&quot;,&quot;Achtung&quot;,MB_OK):
   }
</code></pre>
<blockquote>
<p>2. Ein std::vector&lt;&gt; kapselt ein dynamisches Array, d.h. du brauchst keine Größe (wie bei den Arrays) angeben</p>
</blockquote>
<p>Ok, das wußte ich nicht. Dachte ich könnte da auch sowas wie ein zweidimensionales Array anlegen um dann über die Zellen den jeweiligen CheckBox Zustand abfragen. Würde es erleichtern beim Abspeichern.</p>
<p>Stricke mein Programm mal um. Danke für die Hilfe.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1400818</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1400818</guid><dc:creator><![CDATA[egcactus]]></dc:creator><pubDate>Sat, 10 Nov 2007 11:55:33 GMT</pubDate></item><item><title><![CDATA[Reply to Berechtigungsformular mit TreeView, ListView und CheckBox oder ganz anders? on Sat, 10 Nov 2007 23:42:20 GMT]]></title><description><![CDATA[<blockquote>
<p>Ok, das wußte ich nicht. Dachte ich könnte da auch sowas wie ein zweidimensionales Array anlegen ...</p>
</blockquote>
<p>Das kannst du ja auch. Nur mit dem Vorteil das es dynamisch ist.<br />
Und die Abfrage würde dann so aussehen</p>
<pre><code class="language-cpp">if(CheckBoxZustand[x][y]-&gt;Checked)
   { 
     // Tue irgendwas
   }
else
   {
      // Fehler ausgeben  
      Application-&gt;MessageBoxA(&quot;Keine Berechtigung&quot;,&quot;Achtung&quot;,MB_OK):
   }
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1401181</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1401181</guid><dc:creator><![CDATA[checked]]></dc:creator><pubDate>Sat, 10 Nov 2007 23:42:20 GMT</pubDate></item><item><title><![CDATA[Reply to Berechtigungsformular mit TreeView, ListView und CheckBox oder ganz anders? on Sun, 11 Nov 2007 09:53:54 GMT]]></title><description><![CDATA[<p>Habe mir das Tutorial &quot;Aufbau der STL - Container&quot; durchgelesen und das mit dem vector ausprobiert. Bekomme es aber irgendwie nicht hin auf meine CheckBoxen zuzugreifen.<br />
Sie werden zwar erzeugt und in den vector geschoben, aber den Zustand konnte ich nicht abfragen.<br />
Habe das dann mal mit einfachen integer Werten probiert, dann kann ich die auch wieder auslesen.</p>
<p>Habe aber mittlerweile eine andere Lösung für mein Problem.</p>
<pre><code class="language-cpp">DynamicArray&lt;TCheckBox*&gt;CheckBox;  // CheckBox Container anlegen

...

void __fastcall TFormBerechtigungen::PlaceCheckBox(int Row, int Col)
{
 int Anzahl = Row * Col;          // Anzahl benötigter CheckBoxen ermitteln
 CheckBox.Length = Anzahl;        // Array auf diese Länge setzten

 for (int i = 0; i &lt; CheckBox.Length; i++)
        {
         CheckBox[i] = new TCheckBox(pXStringGrid); // Neue CheckBoxen erstellen
        }

 int i=0;    // Bei CheckBox Null beginnen

 for(int Zeile =1; Zeile&lt;Row; Zeile++)
    {
     for(int Spalte =1; Spalte&lt;Col; Spalte++)
        {
         CheckBox[i]-&gt;Parent = pXStringGrid;
         CheckBox[i]-&gt;Color = clWindow;
         CheckBox[i]-&gt;Alignment = taRightJustify;

         ...

         // CheckBox Funktion  zuweisen
         CheckBox[i]-&gt;OnClick = CheckBoxClick;

         i++;       // nächste CheckBox
        }
    }
}
</code></pre>
<p>Das Array ist zwar nicht Zweidimensional und es ist bestimmt nicht die schönste Lösung, aber zumindest funktioniert es.</p>
<p>Falls mir jemand noch zum Verständnis am Beispiel von Th erklären kann wie ich die CheckBox hole und ihren Zustand erfrage wäre das super.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1401234</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1401234</guid><dc:creator><![CDATA[egcactus]]></dc:creator><pubDate>Sun, 11 Nov 2007 09:53:54 GMT</pubDate></item></channel></rss>