|
Wpisał doctor
|
|
Poniedziałek, 12. Marzec 2007 20:38 |
|
Komponent CSpinEdit
Komponent TCspinEdit jest przydatny, gdy chcemy zwolnić użytkownika programu od wpisywania parametrów lub gdy chcemy narzucić "na sztywno" zakres określonego parametru.
Komponent TCspinEdit znajduje się w palecie Samlpes. Po kolei omówię wszystkie najważniejsze właściwości tego komponentu.
CSpinEdit1->Value - typ long, a więc można wpisywać tylko liczby. CSpinEdit1->ReadOnly - wartość boolowska. Jeśli = true to do komponentu nie można nic wpisywać z klawiatury ani zmienić wartości klikając na strzałki - blokada komponentu. CSpinEdit1->MaxValue - liczba określająca górny zakres. CSpinEdit1->MinValue - liczba określająca dolny zakres. CSpinEdit1->Increment - liczba określająca krok zwiększania/zmniejszania. CSpinEdit1->AutoSelect - wartość logiczna określająca czy tekst w okienku ma być automatycznie zaznaczony. Jeśli jest zaznaczony można go od razu kopiować Ctrl+C. CSpinEdit1->EditorEnabled - czy można wprowadzać znaki z klawiatury.
Najcześciej obsługiwanymi zdarzeniami dla tego komponentu są: OnClick - kliknięcie na strzałkę OnChange - zmiana wartości Value
Często przydatną rzeczą staje się zabezpieczenie przed wpisywaniem liter do pola CSpinEdit. Można to osiągnąć sprawdzając wprowadzoną liczbę w zdarzeniu OnChange i próbie jej konwersji do postaci liczbowej. Jeśli to nie liczba to konwersja się nie powiedzie. Poniżej działający kod:
void __fastcall TForm1::CSpinEdit1Change(TObject *Sender) { String wartosc = CSpinEdit1->Text; float liczba = atof(wartosc.c_str()); Label2->Caption = FloatToStr(liczba);
if(liczba)// != 0 { Label1->Caption = "Wpisany znak jest liczbą"; //stara_wartosc = CSpinEdit1->Text; } else { Label1->Caption = "Wpisany znak jest literą"; //CSpinEdit1->Value = poprzednia_liczba; } }
|
Do swoich celów można zmodyfokować powyższy kod wprowadzając dwie zmienne globalne String stara_wartosc; long poprzednia_liczba; Gdy wpisany znak jest literą, to wartość w CSpinEdit zmieni się na ostatnią wpisaną liczbę.
Skorzystaliśmy tutaj z funkcji float atof(char *łańcuch_znaków) zwracającą liczbę zmiennoprzecinkową typu float w przypadku gdy konwersja się powiedzie oraz zero w przypadku gdy konwersja się nie powiedzie.
|
|
Ostatnia aktualizacja: Piątek, 10. Lipiec 2009 13:58 |