SpinEdit inkrementuje tylko liczy całkowite. Możesz posłużyć się jednak komponentem
TCSpinButton z palety
Samples w połączeniu z komponentem
TEdit. Umieść na formularzu komponent
CSpinButton1 i
Edit1. We właściwości
FocusControl komponentu
CSpinButton1 wybierz
Edit1. Utwórz zdarzenia
OnDownClick i
OnUpClick dla komponentu
CSpinButton1. W zdarzeniach umieść taki kod:
void __fastcall TForm1::CSpinButton1DownClick(TObject *Sender)
{
double x = StrToFloatDef( reinterpret_cast<TEdit *>(CSpinButton1->FocusControl)->Text, 0.2);
x -= 0.2;
reinterpret_cast<TEdit *>(CSpinButton1->FocusControl)->Text = FloatToStrF(x, ffFixed, 7, 1);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::CSpinButton1UpClick(TObject *Sender)
{
double x = StrToFloatDef( reinterpret_cast<TEdit *>(CSpinButton1->FocusControl)->Text, 0.2);
x += 0.2;
reinterpret_cast<TEdit *>(CSpinButton1->FocusControl)->Text = FloatToStrF(x, ffFixed, 7, 1);
}
W przykładzie inkrementowana jest wartość 0.2, ale możesz oczywiście użyć dowolnej.
Nie wiem, czy w C++Builder 6 występuje funkcja StrToFLoatDef, więc masz tu jeszcze kod bez tej funkcji:
double MyStrToFloatDef(String sText, double x)
{
double Result;
try{ Result = sText.ToDouble(); } catch(...) { Result = x;}
return Result;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::CSpinButton1DownClick(TObject *Sender)
{
double x = MyStrToFloatDef( reinterpret_cast<TEdit *>(CSpinButton1->FocusControl)->Text, 0.2);
x -= 0.2;
reinterpret_cast<TEdit *>(CSpinButton1->FocusControl)->Text = FloatToStrF(x, ffFixed, 7, 1);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::CSpinButton1UpClick(TObject *Sender)
{
double x = MyStrToFloatDef( reinterpret_cast<TEdit *>(CSpinButton1->FocusControl)->Text, 0.2);
x += 0.2;
reinterpret_cast<TEdit *>(CSpinButton1->FocusControl)->Text = FloatToStrF(x, ffFixed, 7, 1);
}