![]() |
Re: Objecte / Datensatz(record)
Zitat:
Das geht aber stark auf Kosten des Hauptspeichers!! 10000 Bitmaps brauchen halt doch einige MBs. Besser wäre wohl EMF (Enhanced Meta File) zu benützen. Ein (Windows) Meta File ist sozusagen ein Playback aller Zeichenbefehle, die auf einen Canvas angewendet wurden. Es muss dabei nicht unbedingt in einer Datei gespeichert werden. Ich würde mich an deiner Stelle auf bessere Filtermöglichkeiten konzentrieren anstatt das DBGrid neu zu erfinden! Es ist doch viel sinnvoller die Datenmenge vor der Anzeige stark einzuschränken, als Tausende Datensätze anzuzeigen und das Scrollverhalten zu optimieren. Letztendlich müssen die Tausende Datensätze ja doch mindestens ein Mal eingelesen werden. Ändern sich die Daten im Hintergrund, wird der Cache wertlos und muss erneut aufgebaut werden. |
Re: Objecte / Datensatz(record)
Davon abgesehen macht es überhaupt keinen Sinn, einem Benutzer zisch tausend Datensätze in egal welcher Form vor die Nase zu knallen. Bau ein kluge Suchfunktion/Filterfunktion ein. Deine Anwender werden es dir danken.
|
Re: Objecte / Datensatz(record)
Zitat:
Es werden immer höchstens 2000 Datensätze sein. (von 10000 habe ich nie gesprochen) Zitat:
Hast Du eventuell einen Link zu mehr Infos dazu? Zitat:
Die maximal 2tausend Datensätze die ich anzeigen möchte sind leider nicht mehr zu Filtern. Gern würde ich auch auf das DBGrid zurückgreifen aber leider kann ich die Daten damit nicht vertical anzeigen. Das StringGrid habe ich auch schon getestet aber Leider ist das zu langsam. Beim scrollen von einem Datensatz werden allen Zellen neu gezeichnet das dauert halt. Zitat:
Es gibt schon Anwendungen wo es durchaus Sinn macht dem User schnellst möglich 2tausend Datensätze zu präsentieren. Vielen Dank für die Vielen Beiträge Gruß EarlyBird |
Re: Objecte / Datensatz(record)
Zitat:
Wenn du sie programmiertechnisch nicht filtern kannst, wie willst du dem Anwender zumuten, sich durch 2000 Datensaätze zu wühlen. Würd mich mal interessieren was für eine Anwendung du da programmierst. |
Re: Objecte / Datensatz(record)
"sind nicht mehr zu Filtern" ist vielleicht ein bisschen missverständlich.
Natürlich lassen sich Daten einer Tabelle Filtern, aber die max. 2tausend die ich geschrieben habe sind die, die schnell im Zugriff sein müssen. (der normal Fall werden auch eher zwischen 400 und 800 sein aber man sollte ja vom Maximum ausgehen) Die Daten werden farblich gekennzeichnet, nach verschiedenen Kriterien. So das die Datensätze sehr wohl schnell "zu durchwühlen" sind. (Ein roter Datensatz in 5 blauen fällt auch ohne lesen des Inhalts sehr schnell auf). Das ganze dient nicht hauptsächlich der Daten Eingabe sonder eher der Datensortierung. Die Sortierung geschieht aber "manuell" der User legt die Reihenfolge fest. Und in einer vertikalen Darstellung kann ich auf 3 Bildschirmen schon eine ganze Menge Daten nebeneinander anzeigen und behalte durch die Farben immer noch eine gewisse Übersicht. Ob das ganze jetzt die beste Lösung ist weiss ich auch noch nicht aber mit einem StringGrid geht das ganze halt zu langsam (das war mein erster Lösungsansatzt der auch erst ganz vielversprechend aussah). Zitat:
Außerdem drifte ich im Augenblick ganz vom eigentlichen Thema ab. Mir ist immer noch nicht klar wie ich einen Record an ein Objekt binde und umgekehrt? das muss doch irgendwie möglich sein. Gruß EarlyBird |
Re: Objecte / Datensatz(record)
Hallo,
wie schon 100 mal ;) gesagt, das einfachste ist der Primär-Schluessel des Records. Der ist bei dir ja wohl ein Integer, also
Delphi-Quellcode:
type
TMyClass = class iDBId: Integer; end; Heiko |
Re: Objecte / Datensatz(record)
Sorry wenn ich immer wieder Frage :wall:
Aber irgend wie macht es einfach nicht klick. Zitat:
Wie kann ich dann direkt das Objekt verwenden??
Delphi-Quellcode:
Das kann doch nicht die beste Lösung sein!?!?
for i := 0 to objects.count - 1 do
begin if MyClass.iDBId = 101 then .... ..... break; end; Dann brauche ich ja immer noch eine schleife :gruebel: |
Re: Objecte / Datensatz(record)
Hallo,
sortiere diese Liste nach der iDBId und buntze BinSearch zum Suchen. Ab D6 (?) gibt es auch TBucketList (Hash-Liste), die sowas ähnliches macht. Du könntest auch eine eigene Klasse von TBitmap ableiten und dort das iDBId eintragen. Heiko |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:48 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 by Thomas Breitkreuz