ProgressBar auch im Minus?



  • Hallo,
    ich möchte eine ProgressBar (PB) nutzen, um einen Wert grafisch darzustellen. Dieser Wert kann sowohl positiv als auch negativ sein. Dabei sollte der Wert 0 in der PB mittig liegen. Geht der Wert ins positive, sollte der Balken von der Mitte aus nach rechts wander und bei einem negativen Wert dementsprechend von der Mitte aus nach Links wandern.
    Hat jemand so etwas schon mal realisiert bzw. gibt es da eine Komponente für? Vorzugsweise möchte ich das mit dem Standard des C++Builder 2010 realisieren.

    SG
    Torsten



  • Naja... Angenommen, deine Werte liegen zwischen -100 und 100, sie Normale Progressbar zeigt werte zwischen 0 und 100 an.

    Dann setze einfach den Wert p der Progressbar auf

    p = x/2 + 50
    

    , wobei x dein darzustellender Wert ist.

    Welches Widget/Steuerelement du dann am Ende als Basis nimmst, ist egal.



  • Hi,

    die ProgressBar ist für sowas wirklich nicht geeignet, die soll ja um ein zeitliches Ereignis anzeigen. Du kannst zwar in der Mitte positionieren aber hast dennoch keinen Nullpunkt.
    Bau Dir lieber was mit TChart oder schau Dir mal VrJogMeter von TMS an, das kostet halt was.

    Gruß myerscola



  • Hi,
    ich habe es nun wie folgt gelöst. Ziel dieser Übung soll sein, einen Wert zwischen -100/+100 so darzustellen, dass der positive Wert grün dargestellt werden soll und der negative Wert halt rot. Dazu verwende ich folgende Komponenten:

    - PRot (ProgressBar)
    - PGruen (ProgressBar)
    - TrackBar

    Einstellungen:

    - TrackBar->Min=-100; Max=100
    - PRot->Color=clRed
    - PRot->BarColor=clBtnFace
    - PGruen->Color=clGreen
    - PGruen->BarColor=clBtnFace

    Im Ereignis OnChange des TrackBar nun folgenden Code:

    if (TB1->Position >0)
        {
            PGruen->Position = TB1->Position;
        }
        else
        {
            PRot->Position = 100 + TB1->Position;
        }
    

    Und so wird der Wert wie gewünscht dargestellt.

    Gruß Torsten


Anmelden zum Antworten