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
Antwort Antwort
Seite 4 von 4   « Erste     234   
taaktaak

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

Re: StringGrid Zeile per Mausclick auslesen

  Alt 10. Okt 2008, 08: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
klausmaus

Registriert seit: 18. Sep 2008
17 Beiträge
 
#32

Re: StringGrid Zeile per Mausclick auslesen

  Alt 10. Okt 2008, 14:52
Hallo Ralph,

zu deiner Frage. Ich schrieb am Anfang, dass ich ein Newbie bin. Und zwar absolut. Da ich mit dem Rechner einigermaßen umgehen und ihn auch mal reparieren kann (selbst angeeignet) hab ich beschlossen, berufsbegleitend Informatik zu studieren. Im 2.Semester war Delphi das Thema (1.Semester LOGO). Vorlesung und Seminar im Wechsel. Hauptinhalt: Algorithmierung. Umsetzung in Quelltext sollte in Hausarbeit erfolgen. Hinweis der Seminarleiter: Wenn sie was nicht wissen, nutzen sie die Hilfe (Delphi 2005). Daher rühren auch meine zum Teil naiven Fragen, da diese "Hilfe" nur wenig hilft.

Als Beleg sollte über die Semesterpause ein Programm zu einem selbstgewählten Thema/Inhalt angefertigt werden. Vorgabe: Einbinden von Dateiarbeit (wurde im letzten Seminar kurz angeschnitten).

Meine Kommilitonen haben größtenteils mathemat. Hintergrund. Ergo: Mathematische Berechnungen. Da ich aus der Chemie komme, hab ich mich für eine Chemikalienbestandsverwaltung entschieden. Normalerweise sollte das eine Datenbank sein. Da wir so was noch nie gemacht haben (und freies Delphi keine DB-Komponente enhält) blieb nur ein StringGrid.

Ich habe es auf 200 Datensätze ausgelegt. Also recht klein.
Verwenden werde ich das Programm nicht - es gibt recht gute und viel komfortablere Lösungen (auch kostenfrei) am Markt.

Ich habe es als Übung angesehen, um sich mit Delphi als Programmierwerkzeug vertraut zu machen. Ich hätte allerdings nicht gedacht, dass es so viel Zeit kostet (arbeite seit Ende Sommersemester dran). Lag vermutlich an meinerseits nicht vorhandener Projektplanung. Im Laufe der Entwicklung wurde es auch immer umfangreicher.

Wenn ich das Ganze nicht nächste Woche abgeben müsste, würde ich glatt nochmal von vorn anfangen und vieles anders machen. Stattdessen hab ich mit Hilfe deiner Tipps etwas Struktur in den Quelltext gebracht.

Werde mich am WE mal mit dem Abfangen von Fehleingaben weiter beschäftigen. (Ist auch eine Forderung für den Beleg).

Wie du siehst: Noch reichlich Arbeit. Bin aber froh, dass es im Großen und Ganzen funktioniert.

Wünsche ein angenehmes WE
Michael
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 4 von 4   « Erste     234   


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 14:43 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz