Autor Beitrag
oRAnGe
Hält's aus hier
Beiträge: 9



BeitragVerfasst: Mo 16.02.09 17:01 
Hallo.

Also folgendes Problem:
Ich habe ein WinForm, bei der nach dem Ausführen der Anwendung auf einen "Weiter"-Button geklickt wird.
Beim Klick werden mithilfe einer Methode PictureBoxen erzeugt - die Anzahl richtet sich nach Elementen in einer MSSQL-DB ...

was muss ich nun machen, damit solange die PictureBoxen erzeugt werden, bzw. die Bilder hineingeladen werden, eine Progressbar den Ladestatus anzeigt?


Vielen Dank für eure Hilfe,
oRAnGe
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19346
Erhaltene Danke: 1754

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mo 16.02.09 20:27 
user profile iconoRAnGe hat folgendes geschrieben Zum zitierten Posting springen:
Beim Klick werden mithilfe einer Methode PictureBoxen erzeugt - die Anzahl richtet sich nach Elementen in einer MSSQL-DB ...
Dann müsstest du in dieser Methode auch den Fortschritt aktualisieren.

Allerdings frage ich mich, ob das der richtige Weg ist, wenn du so viele PictureBoxen hast, dass eine Fortschrittsanzeige notwendig ist.
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Mo 16.02.09 20:36 
user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
Allerdings frage ich mich, ob das der richtige Weg ist, wenn du so viele PictureBoxen hast, dass eine Fortschrittsanzeige notwendig ist.
Der Flaschenhalseffekt[*] dürfte nicht das Erzeugen der PictureBoxen sein, sondern die Netzwerkverbindung. Vielleicht werden ja BMPs übertragen ;) .

Soll die Oberfläche währenddessen ansprechbar bleiben, musst du die Query in einen extra Thread auslagern. Nimm einen BackgroundWorker, rufe im OnDoWork die Bilder ab und rufe für jedes ReportProgress auf. Im OnProgressChanged aktualisierst du dann die ProgressBar und setzt das Bild in seine PictureBox.

[*]Argh... kann passieren, wenn man heute die letzte Bio-Klausur seines Lebens geschrieben hat.

_________________
>λ=
JüTho
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
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
BeitragVerfasst: Mo 16.02.09 21:15 
Hallo,

ich glaube aber nicht, dass eine ProgressBar dabei wirklich hilfreich ist, weil die einzelnen Schritte - Abholen der Daten von der Datenbank, Erzeugen der Controls, Laden der Bilder - nicht kontinuerlich ablaufen dürften, sondern eher ruckartig. Allenfalls könnte ProgressBarStyle.Marquee passen.

Gruß Jürgen

@Sebastian
Ich drück Dir die Daumen, dass sie gut gelaufen ist!
oRAnGe Threadstarter
Hält's aus hier
Beiträge: 9



BeitragVerfasst: Di 17.02.09 10:03 
so,
erst mal danke für die antworten - schon nach so kurzer zeit :D

Zitat:
Allerdings frage ich mich, ob das der richtige Weg ist, wenn du so viele PictureBoxen hast, dass eine Fortschrittsanzeige notwendig ist.

also ich glaube das wurde falsch verstanden, die Anzahl der PictBoxen ist momentan 4. Es können aber, durch spätere Eingaben, mehr werden, obwohl das glaube ich nicht über 10-12 werden (liegt dann nicht mehr an mir).

Zitat:
Soll die Oberfläche währenddessen ansprechbar bleiben...

Die Oberfläche muss nicht ansprechbar sein, eigentlich wärs mir sogar lieber wenn diese nicht ansprechbar ist.

Zitat:
ich glaube aber nicht, dass eine ProgressBar dabei wirklich hilfreich ist, weil die einzelnen Schritte - Abholen der Daten von der Datenbank, Erzeugen der Controls, Laden der Bilder - nicht kontinuerlich ablaufen dürften, sondern eher ruckartig.

Das ist wieder eher egal, ich möchte einfach nicht, dass der User nachher die weiße Oberfläche sieht und keine Ahnung davon hat, ob das Programm schon läuft, hängt oder sonst was :)

ich geb euch mal einen kurzen überblick, was in dieser Methode alles gemacht wird, vielleicht fällt euch ja etwas auf (außer das sehr viel in einer Methode ist :roll: )
1. Menu erzeugen (Methode wird aufgerufen)
2. Panel wird erzeugt (hab ich beim 1.Post vergessen, die PictureBoxen werden in ein Panel geladen)
3. DB-Verbindung
4. Die PictureBoxen werden aufgrund der Anzahl der DB-Einträge erzeugt und ausgerichtet.

Ich weiß nicht genau ob das was hilft, hab das bei einem Kollegen gesehen, der hat bei WPF vorm Laden des Formulars eine Art ProgressBar. Nur leider hab ich null Ahnung von WPF.

Vielen Dank, freundliche Grüße.