Announcement

Collapse
No announcement yet.

DBGrid-Zelle manuell füllen

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

  • DBGrid-Zelle manuell füllen

    Hallo Leute,<br><br>
    ich habe eine DBGrid, da sind mehrere Spalten (Columns) angelegt. Die DBGrind ist mit einer DataSource verbunden. Die Spalten sind mit den entsprechenden Feldern verknüpft (Columns[X].Fieldname). Die erste Spalte ist nicht mit einem DB-Feld verknüpft. Ich würde da gerne ein nicht DB-Feld anzeigen. Bis jetzt versuche ich die Sach wie folgt zu lösen, bekomme aber immer eine Schutzverletztung:<br><br>

    procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
    DataCol: Integer; Column: TColumn; State: TGridDrawState);<br>
    begin<br>
    if DataCol = 0 then<br>
    Column.Grid.Fields[DataCol].Text := '12345';<br>
    end; <br><br>

    Wie kann ich die einzelne Zellen füllen?<br><br>
    Danke Frank

  • #2
    Hallo Frank,

    womit ist die DataSource verbunden? Kannst Du dort ein 'berechnetes Feld' einfügen? Wenn Du ein z.B. TQuery hast, kannst Du dann in dem Ereignis OnCalcFields der Query den Wert für des berechneten Feldes schreiben. Das Feld existiert dann nur in der Query, nicht in der Tabelle.

    Grüße Joche

    Comment


    • #3
      Die DataSource ist mit einem TSimpelDataSet verbunden ;-) Das Dingen hat zwar das Ereignis OnCalcFields, aber irgendwie wird das Ereigniss nie ausgelößt.<br><br>
      Aber es muß doch auf so ein DBGrid ähnlich wie auf ein Array zugreifen können. Quasi "Schreibe in ZeileX, SpalteY den Wert 5&quot

      Comment


      • #4
        Ich denke, das die Schutzverletzung daher kommt, das ich ein Feld ändern will, das nicht mit der Datenmenge verknüpft ist. Kann ich nicht ein Feld der DBGrid so definieren, das es frei Werte, ohne jegliche Verknüpfung mit einer Datenmenge, annehmen kann

        Comment


        • #5
          Doch, indem Du im TSimpleDataSet ein berechnetes Feld im Feldeditor einfügst...

          Im Feldeditor rechte Maustaste, Neues Feld und als Feldtyp (nicht Typ) Berechnet auswählen.

          Das Ereignis OnCalcFields wird für jeden im Grid dargestellten Datensatz einmal aufgerufen.

          Grüße Joche

          Comment


          • #6
            .... es klappt. <br><br>
            DANKE Jochen<br><br>
            Gruß Fran

            Comment

            Working...
            X