ScrollBar Komponente - Zahlen verändern ?



  • Hallo,

    wie kann man mit einer ScrollBar-Komponente Zahlen verändern ? - Ich will, dass man mit der ScrollBar Zahlen verändern kann z.B. wenn man die ScrollBar Komponente "nach rechts schiebt" inkrementiert sich eine Zahl, die in einer Panel1 Komponente steht um "0.1" und wenn man die ScrollBar "nach links schiebt" soll sich die Zahl um "0.1" dekrementieren!

    MFG Sankt M.



  • Hallo

    Siehe den Event TScrollBar::OnScroll.

    bis bald
    akari



  • Hallo akari,

    da ich mich noch nicht so gut in c++ auskenne, benötige ich mehr "Informationen" bzw. ich habes bereits so versucht, kommen aber nur Fehler oder die Zahl inkrementiert sich nur einmal...

    void __fastcall TForm1::ScrollBar1Scroll(TObject *Sender,
          TScrollCode ScrollCode, int &ScrollPos)
    {
    float e;
    e = StrToFloatDef(Panel1->Caption + 0.1, 0);
    
    if(ScrollPos > 50)
    Panel1->Caption = e++;
    }
    

    usw.
    Ich hab ka wie ich weiter machen soll oder was ich umändern könnte...

    MFG
    Sankt M.



  • Hallo

    Wenn schon dann

    e = StrToFloatDef(Panel1->Caption, 0) + 0.1;
    

    bis bald
    akari



  • Hallo,

    danke, jedoch inkrementiert sich diese

    0.1
    

    nicht zur dieser Zahl sondern eigenständing ?!? (0.1,0.2,0.3 usw.)..

    MFG



  • Hallo

    😕
    Was verstehst du unter eigenständig? Die Zahl 0.1 ist fest im Quellcode und kann sich nicht inkrementieren. Du brauchst also eine Variable. Ich habe einfach die Zwischenbenutzung von Panel1->Caption von dir übernommen. Wenn du etwas anderes inkrementieren willst must du eben entsprechend umbauen.

    bis bald
    akari



  • Hallo,

    so ich habe es so probiert, der Fehler besteht aber weiterhin...

    void __fastcall TForm1::ScrollBar1Scroll(TObject *Sender,
          TScrollCode ScrollCode, int &ScrollPos)
    {
    float r = StrToFloatDef(Edit1->Text, 0); 
      String Ergebnis = FloatToStr(r + r);
    
    float e;
    e = StrToFloatDef(Ergebnis, 0) + 0.1;
    
    if(ScrollPos > 50)
    Panel1->Caption = e++;
    }
    

    .. ?!? - Was ist daran genau falsch und warum inkrementiert sich meine gegebene Zahl nicht immer um 0.1 .. ?

    MFG



  • Hallo

    Minimalbeispiel

    void __fastcall TForm1::ScrollBar1Change(TObject *Sender)
    {
      double e = StrToFloatDef(Edit1->Text, 0) + 0.1;
      Edit1->Text = e;
    }
    

    Hier wird der Wert im Edit sauber um 0.1 hochgezählt. Was dir daran nicht gefällt versteh ich nicht.

    bis bald
    akari



  • Hallo,

    danke für deine Hilfe! Ich habe es jetzt so gemacht:

    void __fastcall TForm1::ScrollBar1Scroll(TObject *Sender,
          TScrollCode ScrollCode, int &ScrollPos)
    {
    
    if((ScrollPos > 50) && (ScrollPos <= 100))
    {
    double p;
    p = StrToFloatDef(Panel1->Caption, 0) + 0.1;
    
    Panel1->Caption = p;
    }
    
    else if(ScrollPos < 50)
    {
    double m;
    m = StrToFloatDef(Panel1->Caption, 0) - 0.1;
    
    Panel1->Caption = m;
    }
    
    }
    

    .. und es klappt

    Merkwürdigerweise inkrementiert sich die Zahl um 0.1 weiter, wenn die ScrollBar schon bei ihrer "maximalen Position" ist (100).. Warum ??

    Gruß Sankt M.



  • Pack mal den von Dir geposteten Code in ScrollBar::OnChange und änder ScrollPos in ScrollBar::Position, dann sollte es funktionieren.

    Gruss



  • Hallo,

    jo danke funktioniert!


Anmelden zum Antworten