Prpgressbar bei Bilderladen!



  • Keine Ideen? 😕



  • Wie wär's, wenn du dir nochmal den oben verlinkten Thread durchliest?



  • Jansen schrieb:

    Wie wär's, wenn du dir nochmal den oben verlinkten Thread durchliest?

    So jetzt habe ich mir das alles durchgelesen, Hilfe gelesen im Inet gesucht und ich bekomme das nicht hin! Was soll ich den mit fgetc und so....?
    Ich möchte doch per Stream die Datei laden und dann mit der Progressbar verbinden!
    Ich weiß wirklich nicht mehr wie ich das realisieren soll... HILFE!!! 😞



  • Du willst den Fortschritt des BILD- Ladens (eines einzelnen Bildes) darstellen?

    Dann schau Dir mal in der Hilfe zu TPicture an, was zu

    OnProgress

    steht! 😉



  • Hi Leute!!

    Ich finde es ja überhaupt nicht lustig, wenn hier Anfänger verar****t werden 😃

    Erst heißt es "Streams", dann mal wieder ne Variante mit "fgetc" und nun mit "TPicture OnProgress"! Also was den nun? Ich blicke ja jetzt gernicht mehr durch...

    Könnte man sich auf eine Variante einigen und mir eine Hilfe geben? 🙂



  • Dich will hier keiner verar******! 🙄

    Du drueckst Dich nur nicht ganz klar aus. Ich hab' Dir eine Frage gestellt, und fuer den Fall, dass ich richtig vermute, einen Tip gegeben.



  • DerAltenburger schrieb:

    Dich will hier keiner verar******! 🙄

    Du drueckst Dich nur nicht ganz klar aus. Ich hab' Dir eine Frage gestellt, und fuer den Fall, dass ich richtig vermute, einen Tip gegeben.

    Ja ich will den Fortschritt eine Bildes in der Progressbar anzeigen! Aber mit TPiture finde ich da keine Möglichkeit!!! Und nun?



  • TPicture hat ein Ereignis OnProgress!(als Property ansprechbar)

    Du musst eine Funktion dafuer implementieren.

    Der Property OnProgress des TImage->Picture muss diese Funktion zugewiesen werden.

    In der Funktion steuerst Du die Progressbar!

    PS: Ich such mal, ob ich mein Beispiel finde.



  • Die Funktion kann so aussehen:

    void __fastcall TForm1::ImageLoadProgress(TObject *Sender,
          TProgressStage Stage, BYTE PercentDone, bool RedrawNow,
          const TRect &R, const AnsiString Msg)
    {
      ProgressBar1->Position=10 + (90 * PercentDone) / 100;
      if (Stage==psEnding)
        ProgressBar1->Position=0;
    }
    

    Vergiss nicht in Headerdatei die Deklaration auch aufzunehmen. (private der Form)

    Bei OnActivate() der Form1 machst Du den:

    Image1->OnProgress=ImageLoadProgress;

    Dann sollte das gehen.

    PS: bei kleinen Bildern haste keine Anzeige - geht zu schnell, da wird OnProgress nicht gerufen!



  • Vielen Dank! Funzt!! :p



  • DerAltenburger schrieb:

    PS: bei kleinen Bildern haste keine Anzeige - geht zu schnell, da wird OnProgress nicht gerufen!

    Was ist bei dir "klein"? Hier feuert OnPrograss auch bei einem 130 MB Bitmap nicht. Jedenfalls nicht beim LoadFromFile, und das dauert etliche Sekunden.

    TPicture hat ein Ereignis OnProgress!(als Property ansprechbar)
    Du musst eine Funktion dafuer implementieren.

    Warum das, warum nicht einfach das OnProgress-Ereignis von TImage direkt verwenden?

    Bei mir funktionieren jedenfalls beide Varianten nicht.



  • Jansen schrieb:

    <fullquote gelöscht>

    Also bei mir funktioniert alles wunderbar!!! Den Ladebalken sieht man zwar bei kleineren Bildern bis ca. 600kB kaum, aber ab 1MB sieht man ihn schön aufbauen 😃

    Edit:
    Zitate bitte auf das Notwendigste beschränken. Danke!



  • Jansen schrieb:

    Was ist bei dir "klein"? Hier feuert OnPrograss auch bei einem 130 MB Bitmap nicht.

    Warum das, warum nicht einfach das OnProgress-Ereignis von TImage direkt verwenden?

    Bei mir klappt das 😉 😕

    Soweit ich gelesen hab', geht das aber nicht bei BMP- Dateien. Nur JPG und ev GIF.

    Das mit TImage->OnProgress hatte ich im Beispielcode schon korrigiert! 🕶



  • VCL-Referenz schrieb:

    beim Laden großer komprimierter Grafiken

    Ich tippe mal, es funktioniert nur bei komprimierten Grafikformaten. Zu denen das Standard-Windows-bmp meines Wissens nach nicht wirklich zählt.



  • Die Hilfe schreibt "z.B. beim Laden großer komprimierter Bilder", schliesst also unkomprimierte Bilder nicht ausdrücklich aus. Funktionieren tut es aber trotzdem nur bei komprimierten Bildern, was die Nützlichkeit der Funktion doch stark einschränkt.

    DerAltenburger schrieb:

    Das mit TImage->OnProgress hatte ich im Beispielcode schon korrigiert!

    Ähm, ich sehe keine Änderungen an deinen Beiträgen!?



  • @Jansen:
    Mein Beitrag vom 14.4.04 14:14

    DerAltenburger schrieb:

    .
    .
    .
    Bei OnActivate() der Form1 machst Du den:

    Image1->OnProgress=ImageLoadProgress;

    Dann sollte das gehen.
    .
    .
    .

    PS: ist keine Aenderung, hab's gleich anders formuliert im Folgebeitrag! 😃



  • DerAltenburger schrieb:

    Bei OnActivate() der Form1 machst Du den:

    Image1->OnProgress=ImageLoadProgress;

    Hmm, das ist doch der springende Punkt: wozu eine extra Funktion und diese dann Image->OnProgress zuweisen, anstatt OnProgress selbst zu benutzen?



  • @Jansen

    OK! Da haste natuerlich recht! Ich hab' das Speibiel aus ner Komponente gezogen, wo das TImage dynamisch erzeugt wird - daher die Zuweisung! 🕶

    Das ist natuerlich hier nicht noetig.


Anmelden zum Antworten