Ich habe gestern noch ein paar Komponenten gefunden die den Inhalt der DB in den Hauptspeicher kopieren. Da ich nicht permanent alle Daten hochaktuell benötige, würde mir eine Lösung über diese MemData Komponenten auch weiter helfen. Ich kann in dem MemDataSet auch eine zusätzliche Spalte (Typ Boolean) erzeugen, die mit keiner DB-Spalte verknüpft ist und nach Ende des Programms verfällt.
So weit so gut!
Mir gelingt es allerdings nicht die CheckEdit Spalte im DBGrid zu verändern (Haken setzen bzw. entfernen).
Hier mein Code mit dem ich versuche! die Checkfelder zu setzen
---------------------------------------------------------------------------------------
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19:
| with DataSource.DataSet do begin DisableControls; DMemDataSet.Edit; for I := 0 to DMemDataSet.RecordCount - 1 do begin if Datasource.DataSet.FieldByName('NAME').AsString <> 'XXX' then begin DMemDataSetCHECKEDIT.Value:=True; end; end; DMemDataSet.Post; EnableControls;
end; DBGridSpamBot.FullRefresh; DBGridSpamBot.Repaint; |
---------------------------------------------------------------------------------------
Die beiden letzten Zeilen sollten das DBGrid neu zeichnen, allerdings lässt sich aus dem DBGrid auslesen das die einzelnen Felder immer noch NULL beinhalten. Das setzen des Wertes (DMemDataSetCHECKEDIT.Value:=True) wird aber ausgeführt. Außerdem dauert das "setzen" des Häkchens ca 3 Sekunden pro Vorgang, was ich als zeitlich zu lang einschätze.
Also liegt der Fehler entweder in meinem Codeschnipsel oder im aktualisieren der DBGrid-Ansicht vermute ich.
Moderiert von
jasocul: Delphi-Tags hinzugefügt