Autor |
Beitrag |
Nally
Beiträge: 46
|
Verfasst: Fr 28.11.08 22:03
Hallo,
ich schreibe gerade an einem Programm, bei dem der Benutzer eine Datenbankdatei anlegen kann. Sachen drin abspeichern. Wenn der User das Programm wieder aufruft muss er explizit eine der bestehenden Datenbankdateien auswählen.
Die Frage ist nun: Würdet Ihr alle Daten die in verschiedenen DataGridViews in verschiedenen TabPages angezeigt werden in dem Form_Load event laden ?
|
|
Mitmischer 1703
Beiträge: 754
Erhaltene Danke: 19
Win 7, Debian
Delphi Prism, Delphi 7, RAD Studio 2009 Academic, C#, C++, Java, HTML, PHP
|
Verfasst: Fr 28.11.08 22:06
Wenn die Dateien klein sind, wieso nicht? Wenn sie aber groß sind, würde ich erst laden, wenn man es wirklich braucht. Wenn du es aber im Loadevent der Form machst, arbeite nicht mit Forms, die noch nicht initialisiert wurden!
_________________ Die Lösung ist nicht siebzehn.
|
|
jaenicke
Beiträge: 19276
Erhaltene Danke: 1741
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Fr 28.11.08 22:42
Alles was ich hier sage gilt nur bei längeren Ladezeiten, bei kurzen Ladezeiten kann man auch einfach alles beim Start laden. Was länger ist, ist Definitionssache. Wenn es etwas ist, was ich so oft brauche wie einen Editor, dann eher schon mehr als 1 Sekunde, ist es etwas größeres dann eher ab 5 Sekunden oder so. Das muss man dann abschätzen wie wichtig ein schneller Start für den Benutzer ist.
Wenn die Wartezeit (gefühlt für den Benutzer) zu lang wäre, würde ich das was der Benutzer sofort sieht sofort laden, und die anderen Tabs etc. in einem Thread.
Grundsätzlich hört sich das erstmal schwierig an, aber das ist es gar nicht. Man kann entweder dann den Benutzer immer auf das komplette Laden des Threads warten lassen und auf den anderen Tabs derweil Warteanzeigen schalten oder beim Wechseln eines Tabs dem Thread Bescheid geben, dass er den als nächstes laden soll.
Wenn man das gut macht, dann hat der Benutzer eine schnell startende, immer reagierende, aber trotzdem auch nach dem Start schnell laufende Anwendung (anders als wenn ich später immer lade, wenn ein Tab gewechselt wird, etc.).
|
|
Nally
Beiträge: 46
|
Verfasst: Fr 28.11.08 22:52
Mitmischer 1703 hat folgendes geschrieben : | Wenn die Dateien klein sind, wieso nicht? Wenn sie aber groß sind, würde ich erst laden, wenn man es wirklich braucht. Wenn du es aber im Loadevent der Form machst, arbeite nicht mit Forms, die noch nicht initialisiert wurden! |
naja die Datei ist ne sqlite Datenbank ohne Daten 25 KB mit Daten naja kommt auf die optimierten linq Abfragen an ^^ aber selbst wenns 3 sekunden dauert könnte man ja noch ne progressbar einbauen oder meint Ihr nicht? Also mich würde das net stören...
|
|
jaenicke
Beiträge: 19276
Erhaltene Danke: 1741
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Fr 28.11.08 23:03
Es kommt eben ganz auf das Programm an, wenn es eins wie ein Browser oder Editor ist, was ich einfach mal so und sehr oft am Tag starte, da stören mich schon 3 Sekunden. Deshalb benutze ich jetzt auch eher Chrome als andere Browser, die eben einfach ziemlich langsam sind im Vergleich, insbesondere IE oder FF.
Wenn es aber ein Programm wie eine große IDE wie Delphi oder ein Videoschnittprogramm ist, dann stört es mich auch nicht so sehr, wenn der Start mal 10 Sekunden dauert. Ganz einfach, weil ich die Programme, gerade Delphi oder Visual Studio zwar sehr lange nutze, aber nicht so oft am Tag neu starte.
|
|
JüTho
Beiträge: 2021
Erhaltene Danke: 6
Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
|
Verfasst: Sa 29.11.08 12:35
Nally hat folgendes geschrieben : | Würdet Ihr alle Daten die in verschiedenen DataGridViews in verschiedenen TabPages angezeigt werden in dem Form_Load event laden ? |
Nur der Vollständigkeit halber (ich weiß nicht, ob ich Dir das in anderem Zusammenhang schon gesagt habe): Das DataGridView ist nicht als Datenspeicher gedacht. Daten werden in aller Regel nicht direkt in ein DGV geladen, sondern in eine Datenmenge (meistens DataSet/DataTable, aber auch List<T> u.a.). Diese Datenmenge wird dann per DataSource oder über BindingSource an das DGV gebunden und zur Anzeige und/oder manuellen Bearbeitung zur Verfügung gestellt.
Im übrigen stimme ich Sebastian zu.
Jürgen
|
|
|