Announcement

Collapse
No announcement yet.

StringGrid Spalten ausblenden und sperren

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • StringGrid Spalten ausblenden und sperren

    Hallo,<p>
    gibt es eine Möglichkeit in StringGrids einzelne Spalten auszublenden <br>
    oder die Eingabe zu sperren? <p>
    Danke im Voraus, <pr>
    Thomas

  • #2
    Hallo Thomas,

    das Edititeren einer Zelle kannst Du in dem Ereignis OnSelectCell verhindern, indem Du in Options entweder das Flag goEditing setzt oder löscht.
    Zum Ausblenden der Spalten kenne ich leider auch keine Lösung, es würde mich aber auch interessieren falls es da eine Möglichkeit ohne Neuaufbau der Tabelle gibt.

    Gruß Thorste

    Comment


    • #3
      Hallo ,

      der elegantere Weg die Eingabe zu verhindern ist das Ereignis zu verwenden und dabei CanSelect auf false zu setzen. Man muß die Option nicht rückgängig machen.
      Die Spalten auszublenden gibt es 2 Möglichkeiten :
      1. ColWidths[ACol] = 0 ist nicht ganz elegant, aber einfach.
      2. Eigenes Komponent entwickeln, benutzt dabei die protected Methode DeleteColumn(ACol)

      EUCH viel Spaß

      Comment


      • #4
        Nachtrag : Diese Methode ist von der Klasse TCustomGri

        Comment


        • #5
          Hallo, <br>
          erstmal Danke für eure Hilfe, <br>
          ein Problem wäre da noch, wie ist es möglich den Eingabefokus <br>
          bei einer bestimmten Zelle zu plazieren. <br>
          Damit ich die ausgeblendeten Spalten überspringen kann. <br>
          Thoma

          Comment


          • #6
            In dem Ereignis OnKeyDown kannst Du die Pfeiltasten abfragen(VK_RIGHT, VK_LEFT). Das Ergebnis dann speichern und in dem Ereignis OnSelect dann als z.B. switch benutzen. <br>
            Beispiel zum Überspringen der Spalte 3:

            <pre>
            void __fastcall TForm1::StringGrid1SelectCell(TObject *Sender, int ACol,
            int ARow, bool &CanSelect)
            {
            if(ACol ==3) CanSelect = false;
            else CanSelect=true;

            switch(MyKey)
            {
            case VK_RIGHT :
            if(ACol == 3) StringGrid1->Col = 4;
            break;
            case VK_LEFT :
            if(ACol == 3) StringGrid1->Col = 2;
            break;
            }
            }
            </pre>

            Gruß Thorste

            Comment


            • #7
              Hi Thomas,

              Eingabefokus wird mit Hilfe der Eigenschaft Selection gesetzt:

              <code>
              <font color=#000000><b>void</b></font>&nbsp;SelectCell(<font color=#000000><b>int</b></font>&nbsp;iRow,&nbsp;<font color=#000000><b>int</b></font>&nbsp;iCol)<br>
              {<br>
              &nbsp;&nbsp;TGridRect&nbsp;rSelRect;<br>
              &nbsp;&nbsp;rSelRect.Left&nbsp;=&nbsp;iCol;<br>
              &nbsp;&nbsp;rSelRect.Right&nbsp;=&nbsp;iCol;<br >
              &nbsp;&nbsp;rSelRect.Bottom&nbsp;=&nbsp;iRow;<b r>
              &nbsp;&nbsp;rSelRect.Top&nbsp;=&nbsp;iRow;<br>
              &nbsp;&nbsp;StringGrid1&nbsp;->&nbsp;Selection&nbsp;=&nbsp;rSelRect;<br>
              }<br>
              </code>

              regards
              serg

              Comment

              Working...
              X