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
Benutzerbild von Sir Rufo
Sir Rufo

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

AW: Stringgrid teilweise befüllen?!

  Alt 5. Jan 2016, 22: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
 
#2

AW: Stringgrid teilweise befüllen?!

  Alt 6. Jan 2016, 06: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
 
#3

AW: Stringgrid teilweise befüllen?!

  Alt 6. Jan 2016, 07: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.667 Beiträge
 
Delphi 12 Athens
 
#4

AW: Stringgrid teilweise befüllen?!

  Alt 6. Jan 2016, 07: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
Benutzerbild von p80286
p80286

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

AW: Stringgrid teilweise befüllen?!

  Alt 6. Jan 2016, 12: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.667 Beiträge
 
Delphi 12 Athens
 
#6

AW: Stringgrid teilweise befüllen?!

  Alt 6. Jan 2016, 12: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
Benutzerbild von p80286
p80286

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

AW: Stringgrid teilweise befüllen?!

  Alt 6. Jan 2016, 14:31
Danke, muß ich mir mal anschauen.

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

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

AW: Stringgrid teilweise befüllen?!

  Alt 21. Jan 2016, 07:57
Hallo,

für alle Anfänger wie mich, der noch eine Tücke herausfinden mußte:

Also ich habe die Zeilen auf die 150000 gesetzt und in OnCellDraw für jede Spalte den Wert in die Canvas gezeichnet. Hat super funktioniert.

Jedoch wichtig für mich noch klarzukriegen:
Wenn sich die Zeilenanzahl ändert, also die externen Daten dahinter, dann brauchte es ein Stringgrid.Repaint, damit auch die Anzeige sich aktualisiert.

Nur so zur Ergänzung...

Danke für Eure Tipps,
Stefan
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#9

AW: Stringgrid teilweise befüllen?!

  Alt 6. Jan 2016, 07: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
 
#10

AW: Stringgrid teilweise befüllen?!

  Alt 6. Jan 2016, 12: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
Antwort Antwort

 

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