TStringGrid neuzeichnen verhindern



  • Hallo,

    ich schreibe Daten aus einer SQLite-Datenbank in ein TStringGrid. Leider zeichnet die VCL das Grid bei jedem Zugriff neu.

    short i, Row;
    
    CppSQLiteQuery q = db.execQuery("select * from files;");
    Grid->ColCount = q.numFields();
    Grid->RowCount = 2;
    
    for(i=0; i<q.numFields(); i++)
      Grid->Cells[i][0] = q.fieldName(i);
    
    Row = 1;
    while(!q.eof())
    {
      for(i=0; i<q.numFields(); i++)
        Grid->Cells[i][Row] = q.fieldValue(i);
    
      q.nextRow();
      Row++;
      Grid->RowCount = Row;
    }
    

    Gibt es eine Möglichkeit das Neuzeichnen auszuschalten während ich das Grid mit Daten fülle ?



  • z.B.: TStringGrid::Rows::BeginUpdate() + ::EndUpdate()

    Allerdings wäre ein TDBGrid wohl besser geeignet.



  • Hallo Joe,

    danke für den Tip.
    Aber leider verstehe ich nicht wie/wann ich die Funktionen aufrufen muss.

    Grid->Rows[0]->BeginUpdate();
    Grid->Rows[0]->EndUpdate();
    

    Muss ich die beiden Funktionen für jede Zeile aufrufen ?
    Und wann ?

    Allerdings wäre ein TDBGrid wohl besser geeignet.

    Warum ?
    Ich dachte das TDBGrid ist für Datenbanken, welche von BCB unterstützt werden.

    Ich habe noch eine kleine Frage: Kann ich einstellen, dass der Inhalt während dem scrollen des TStringGrid angezeigt wird ?



  • Ich würde ausprobieren, was passiert, wenn ich erst für alle Rows BeginUpdate() aufrufe, dann die Änderungen an den Rows durchführe und dann für alle Rows EndUpdate() aufrufe.

    TDBGrid ist für alle Datenbanken. Wie greifst Du denn auf deine DB zu? Hast Du keine DataSource, das Du dem Grid zuweisen kannst?

    Leider kann ich zu dem Scrollen nichts sagen. Ich hab noch kein TStringGrid eingesetzt...



  • fiffi schrieb:

    Kann ich einstellen, dass der Inhalt während dem scrollen des TStringGrid angezeigt wird ?

    Objektinspektor: TStringGrid - Options - goThumbTracking



  • @Sunday:

    funktioniert !

    @Joe:

    ich werde es mal versuchen...

    Vielen Dank für die Hilfe !!!



  • Siehe auch hier fuer ein Beispiel von BeginUpdate und EndUpdate.


Anmelden zum Antworten