ponizszy kod moze sie wam przydac wiec pozwole sobie na krotki komentarz.
dzialanie polega na inkrementacji/dekrementacji o 0,01 pola Edit3 po nacisnieciu na strzalki komponentu TUpDown
w tej postaci jest dobry dla ciagu znakow "0,00" do "5,00" wpisanych w polu Edit3. ciagi znakow zamieniane sa na odpowiednie wartosci int (zmienna i)
dzieki temu mamy mozliwosc latwego wykonywania operacji arytmetyczno-logicznych i porownan. dla przykladu np. ciag "1,23" na wartosc 123.
po malej modyfikacji kodu mozna zmienic zakres od "0,00" do "9,99"
napisalem prosta funkcje IntToString() chociaz istnieje standardowa funkcja IntToStr() poniewaz ta druga obcina nieznaczace zera (np. dla 15 standardowa daje "15", a moja "015").
po prostej modyfikacji mozna zwiekszyc zakres np. do "9,999". takze b. latwo mozna manipulowac polozeniem przecinka.
- Kod: Zaznacz cały
unsigned int i;
void __fastcall TForm1::UpDown1Click(TObject *Sender, TUDBtnType Button)
{
AnsiString str;
str = Edit3->Text; // zapisanie lancucha np."2,00" z pola Edit1 do str
str.Delete(2,1); // usuniecie przecinka
i = str.ToInt();
if (Button == btNext) {
if (i < 500) // maksymalna wartosc dla tego przykladu nie moze byc wieksza od 999
++i;
}
else {
if (i > 0) // minimalna wartosc nie moze byc mniejsza od 0 (zawsze)
--i;
}
str = IntToString(i);
Edit3->Text = str.Insert(",",2); // wstawienie przecinka i wpisanie do pola Edit3
}
AnsiString __fastcall TForm1::IntToString(unsigned int i)
{
AnsiString str = "000"; // maksymalna wartosc dla tej funkcji to 999
str[1] = i / 100 + 0x30;
i %= 100;
str[2] = i / 10 + 0x30;
i %= 10;
str[3] = i + 0x30;
return str;
}
zycze owocnego programowania
pozdrawiam