AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

StringGrid Zeile per Mausclick auslesen

Ein Thema von klausmaus · begonnen am 27. Sep 2008 · letzter Beitrag vom 10. Okt 2008
 
taaktaak

Registriert seit: 25. Okt 2007
Ort: Radbruch
1.993 Beiträge
 
Delphi 7 Professional
 
#31

Re: StringGrid Zeile per Mausclick auslesen

  Alt 10. Okt 2008, 07:05
Guten Morgen Michael.

Freut mich, dass ich dir schon etwas weiterhelfen konnte. Die Anzeige der überflüssigen Zeile im Grid ist logisch, da ich es im Code leider nicht berücksichtigt habe.

Das Grid verhält sich allerdings anders, als man vielleicht erwartet: Durch Verringerung von RowCount werden die Inhalte der reduzierten Zeilen nicht gelöscht. Vergrößert man RowCount anschließend wieder, werden die vermeintlich entfernten Zeileninhalte wieder angezeigt. Tatsächlich gelöscht werden Einträge mit "StringGrid.Rows[..].Clear".

In deinem konkreten Fall gibt es (wie fast immer) verschiedene Möglichkeiten, das gewünschte zu erreichen. Als "Hau-Ruck-Methode" könnte man vor dem erneuten Füllen des Grids alle vorhandenen Zeilen löschen, die Zeilenanzahl des Grids aber konstant lassen.

Delphi-Quellcode:
procedure RefillGrid;
var i : Integer;
begin
  assignfile(ChemDat,Dateiname);
  reset(ChemDat);

  with StringGrid1 do begin

    for i:=FixedRows to RowCount-1 do Rows[i].Clear; // löscht ALLE Zeilen
    // oder
    // RowCount:=RowCount-1; // alternativ

    for i:=1 to FileSize(ChemDat) do begin
      read(ChemDat,Chem);
      with Chem do begin
        Cells[1,i]:=IntToStr(BNum);
        Cells[2,i]:=Name;
        Cells[3,i]:=IntToStr(Bestand);
        Cells[4,i]:=Datum
        end
    end;
  closefile(ChemDat);
end;
Alternativ könnte die Zeilenanzahl immer exakt der Anzahl der Datensätze+FixedRows entsprechen, d.h. nach einer Löschoperation "RowCount:=RowCount-1". Ich mag es aber z.B. nicht, wenn weniger Gridzeilen gezeichnet werden, als bei der verfügbaren Höhe des Controls darstellbar wären. In diesem Fall füge ich immer eine entsprechende Anzahl von Leerzeilen ein - aber das ist Geschmackssache.

Mich würde mal interessieren, wieviele Datensätze in deinem Grid voraussichtlich gespeichert werden sollen. Spätestens, wenn du einige Tausend Datensätze im Grid sortieren oder filtern möchtest, wirst du die begrenzten Möglichkeiten des StringGrids an spürbar langen Sortierzeiten erkennen. Wenn derartige Größenordnungen bei dir anfallen, dann sollte das ganze entweder mit einer Datenbank gelöst oder die Datenspeicherung in einer Liste erfolgen und das Grid nur noch zur Anzeige der sichtbaren Daten genutzt werden.
Ralph
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:57 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz