AGB  ·  Datenschutz  ·  Impressum  







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

Stringgrid teilweise befüllen?!

Ein Thema von st.w · begonnen am 5. Jan 2016 · letzter Beitrag vom 21. Jan 2016
Antwort Antwort
Seite 1 von 2  1 2      
st.w

Registriert seit: 5. Jan 2016
11 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#1

Stringgrid teilweise befüllen?!

  Alt 5. Jan 2016, 22:00
Hallo,

ich habe ein Programmsystem übernommen, das in D4 programmiert ist, und das ich aufmöblen werde.

Mein Problem ist, dass ich eine Stringgrid von 150000x10 Felder habe und dies (logischerweise) an Grenzen kommt, insbesondere wenn noch sortiert werden soll. (DBGrid kann ich dafür nicht nehmen).

Meine Frage: Ich würde gerne nur ca. 100 der 150000 Zeilen der Stringgrid befüllen und den Rest erst dann, wenn der Benutzer diesen Bereich auch durch Scrollen oder Seitensprung z.B. benötigt.

Gibt es dafür eine Unterstützung ?

Vielleicht hatte ja jemand schon mal damals eine Lösung, die für mich heute auch passen würde.

Da ich mich erstmal in Delphi eindenken muß, habe ich noch nicht die rechte Idee, wie ich so etwas suchen und vorallem finden soll.

Danke für Eure Hilfe (/Erinnerungen)!

Viele Grüße,
Stefan
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Stringgrid teilweise befüllen?!

  Alt 5. Jan 2016, 22:24
Das Problem schreit nach der Verwendung der Komponente mit virtuellem Modus. Z.B. dem Virtual TreeView.
Bei diesem Verfahren werden die Werte dynamisch geladen wenn benötigt.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#3

AW: Stringgrid teilweise befüllen?!

  Alt 5. Jan 2016, 23:23
Geht mit dem StringGrid auch, wenn man das Zeichnen des Zellwerts selber übernimmt.

Dem Grid selber gibt man dabei gar keine Daten, sondern fragt diese entsprechend ab. Es werden nur die Zellen gezeichnet, die eben aktuell sichtbar sind.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
st.w

Registriert seit: 5. Jan 2016
11 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#4

AW: Stringgrid teilweise befüllen?!

  Alt 6. Jan 2016, 07:37
Guten Morgen zusammen,

danke für die prompten Ideen

TreeViews erinnern mich an mein Maschinenbaustudium um 1994 herum, als ich die mal selbst programmieren durfte.... Eine Umsetzung für meine Anwendung kann ich aber leider gar nicht sehen....

Das OnCellDraw, dass Sir Rufo vorschlägt nutze ich schon, um die Texte auf farbigem Hintergrund oder ausgerichtet anzuzeigen.
Die Idee, die Werte dynamisch zu holen ist sehr gut...

Aber wieviel Speicher braucht eine Stringgrid, die eine Spaltenanzahl von 150000 hat. Kann ich das auch mit D4 schon abfragen?

Danke für die Idee! Ich werde es gleich ausprobieren.

Viele Grüße,
Stefan
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#5

AW: Stringgrid teilweise befüllen?!

  Alt 6. Jan 2016, 08:23
Die vorgeschlagene Komponente 'Virtual TreeView' ist eine eierlegende Wollmilchsau. Oder eine TreeViewGridListViewCheck oder so ähnlich. Mit dem Teil kannst Du auch ein Grid darstellen.

Wieso muss man denn überhaupt 150.000 Daten scrollbar anzeigen? Geht es nicht viel viel einfacher mit 'blättern', also dem seitenweise Anzeigen der Daten? Dazu benötigst Du nur 4 Buttons: '1.Seite', 'Seite zurück', 'Seite vor' und 'Letzte Seite'. Dann noch ein Suchfeld und das Sortieren erledigst du über die Clickhandler des Stringgridheaders.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#6

AW: Stringgrid teilweise befüllen?!

  Alt 6. Jan 2016, 08:23
Man sollte sich von dem Namen des Virtual Treeview nicht täuschen lassen, das Ding kann auch als Grid fungieren und gilt quasi als die eierlegende Wollmilchsau (und ist zudem OpenSource).

[edit][/edit]
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#7

AW: Stringgrid teilweise befüllen?!

  Alt 6. Jan 2016, 08:53
Aber wieviel Speicher braucht eine Stringgrid, die eine Spaltenanzahl von 150000 hat. Kann ich das auch mit D4 schon abfragen?
Meinst du wirklich 150.000 Spalten? Oder nicht doch eher Zeilen?

Mich würde – sollte es sich tatsächlich um Zeilen statt Spalten in dieser "Unzahl" handeln – vor allem interessieren, wie die Daten denn vorliegen. Werden die von einem Datenträger beim Programmstart eingelesen? Oder aus einer Datenbank geholt? Je nach Größe des Arbeitsspeichers und der Größe der jeweiligen Records passen schon ein paar Hunderttausend Datensätze in den Speicher. Am einfachsten wäre es dann wohl, sich einen entsprechenden Record zu basteln und ein dynamisches Array of MyRecord zu erzeugen, das die Daten beinhaltet. Noch besser allerdings wäre ein TObjectList (falls das mit deiner Delphi-Version bereits geht), denn damit sind dann auch Sortiermöglichkeiten gegeben. Die Sortierung fände dann in der Objektliste statt, das Stringgrid übernähme – so wie sich's gehört – lediglich die Darstellung.

Gehen wir davon aus, daß das StringGrid seine Größe mit der Formulargröße ändert, muß man natürlich die oben bereits angesprochene Seitengröße mit verändern. Das erfordert ein paar zusätzliche Algorithmen, ebenso wie die Darstellung nach einer Neusortierung.

Zu guter Letzt könnte man die Daten auch komplett in ein ClientDataset einlesen und über ein DBGrid anzeigen lassen.
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#8

AW: Stringgrid teilweise befüllen?!

  Alt 6. Jan 2016, 13:07
Die Idee, die Werte dynamisch zu holen ist sehr gut...

Aber wieviel Speicher braucht eine Stringgrid, die eine Spaltenanzahl von 150000 hat. Kann ich das auch mit D4 schon abfragen?
Das Stringgrid soll ja nicht alle Zeilen/Records anzeigen sondern nur die, die gerade auf dem Bildschirm/Formular Platz finden.
Also ungefähr so:
Delphi-Quellcode:
for i:=startrec to startrec+linestodisplay do
  mygrid.cells[1,i]:=myrecs[i].feld1;
Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#9

AW: Stringgrid teilweise befüllen?!

  Alt 6. Jan 2016, 13:11
Man sollte sich von dem Namen des Virtual Treeview nicht täuschen lassen, das Ding kann auch als Grid fungieren und gilt quasi als die eierlegende Wollmilchsau (und ist zudem OpenSource).

[edit][/edit]
Gibt es denn irgendwo ein Tutorial, daß auch geistig eingeschränkten Menschen es ermöglicht, den virtualtreeview als "Grid" zu nutzen?

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#10

AW: Stringgrid teilweise befüllen?!

  Alt 6. Jan 2016, 13:35
Ich kenne die aktuelle Version nicht, aber früher war da eine große Demo dabei, wo man gut spicken konnte, außerdem: http://www.delphipraxis.net/141465-v...eispielen.html
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      

 

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:24 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