全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:982
推到 Plurk!
推到 Facebook!

請問CSpinEdit元件能否使用浮點數??

尚未結案
Vincent2424
一般會員


發表:57
回覆:40
積分:19
註冊:2004-12-15

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-03-21 11:39:42 IP:163.25.xxx.xxx 未訂閱
請問各位大大,CSpinEdit元件能否使用浮點數呢?? 剛爬了一下文,發現好像只有UpDown之Increment可以用小數,但我想用CSpinEdit之增、減量為小數...請問能否辦到呢...謝謝..
m8815010
版主


發表:99
回覆:372
積分:289
註冊:2003-11-13

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-03-22 09:33:49 IP:61.63.xxx.xxx 未訂閱
引言: 請問各位大大,CSpinEdit元件能否使用浮點數呢?? 剛爬了一下文,發現好像只有UpDown之Increment可以用小數,但我想用CSpinEdit之增、減量為小數...請問能否辦到呢...謝謝..
Vincent2424你好: 簡單的做一做應該就可以用了: < class="code"> In .h ~~ class TForm1 : public TForm { __published: // IDE-managed Components TCSpinEdit *CSpinEdit1; void __fastcall FormCreate(TObject *Sender); private: // User declarations void __fastcall CSpinButton1UpClick(TObject *Sender); //add the line void __fastcall CSpinButton1DownClick(TObject *Sender); //add the line public: // User declarations __fastcall TForm1(TComponent* Owner); }; //--------------------------------------------------------------------------- extern PACKAGE TForm1 *Form1; ~~ In .cpp ~~ TForm1 *Form1; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void __fastcall TForm1::FormCreate(TObject *Sender) { CSpinEdit1->Text = "0"; CSpinEdit1->ReadOnly = true; TCSpinButton *CSpinButton1 = CSpinEdit1->Button; CSpinButton1->OnUpClick = CSpinButton1UpClick; CSpinButton1->OnDownClick = CSpinButton1DownClick; } //--------------------------------------------------------------------------- void __fastcall TForm1::CSpinButton1UpClick(TObject *Sender) { float Val; Val = StrToFloat(CSpinEdit1->Text); Val = 0.1; CSpinEdit1->Text = Format("%.1f", ARRAYOFCONST((Val))); } //--------------------------------------------------------------------------- void __fastcall TForm1::CSpinButton1DownClick(TObject *Sender) { float Val; Val = StrToFloat(CSpinEdit1->Text); Val -= 0.1; CSpinEdit1->Text = Format("%.1f", ARRAYOFCONST((Val))); } ~~ 參著!
Vincent2424
一般會員


發表:57
回覆:40
積分:19
註冊:2004-12-15

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-03-22 12:40:54 IP:163.25.xxx.xxx 未訂閱
感謝m8815010大大的回答,我照你的方式做了可以執行 但是如下, CSpinEdit1->Text = "8.5"; 當我使用預設的值計算時沒問題 但是若按下 up→8.6 down→8.4    再計算時就有有問題耶...如圖...該如何解決??感激..
Vincent2424
一般會員


發表:57
回覆:40
積分:19
註冊:2004-12-15

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-03-22 13:11:06 IP:163.25.xxx.xxx 未訂閱
還有我想直接在物件之value欄中,直接輸入8.5也會有問題,如圖 請問該如何解決呢...謝謝
m8815010
版主


發表:99
回覆:372
積分:289
註冊:2003-11-13

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-03-22 13:18:12 IP:61.63.xxx.xxx 未訂閱
引言: 感謝m8815010大大的回答,我照你的方式做了可以執行 但是如下, CSpinEdit1->Text = "8.5"; 當我使用預設的值計算時沒問題 但是若按下 up→8.6 down→8.4 再計算時就有有問題耶...如圖...該如何解決??感激..
Vincent2424你好: 不好意思,不太了解你的問題,是否可以更仔細的說明,或列出你的 >!
Vincent2424
一般會員


發表:57
回覆:40
積分:19
註冊:2004-12-15

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-03-22 14:11:15 IP:163.25.xxx.xxx 未訂閱
版主大大您好以下是我的code    //---------------------------------------------------------------------------    #include  #pragma hdrstop #include "Unit1.h" #include #include //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma link "CSPIN" #pragma resource "*.dfm" using namespace std; double A=0; double B=0; double C=0; double D=0; double E=0; TForm1 *Form1; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //------------------------------------------------------------------- //計算的按鈕 void __fastcall TForm1::Button1Click(TObject *Sender) { A=StrToFloat(CSpinEdit1->Text); B=StrToFloat(Edit2->Text); C=StrToFloat(Edit3->Text); D=(0.562)*A+0.3917*B; E=(4*D*pow(B,2))/(pow(C,3)); //定義輸出的Edit Edit4->Text=E; } //------------------------------------------------------------------- void __fastcall TForm1::FormCreate(TObject *Sender) { CSpinEdit1->Text = "8.5"; CSpinEdit1->ReadOnly = true; TCSpinButton *CSpinButton1 = CSpinEdit1->Button; CSpinButton1->OnUpClick = CSpinButton1UpClick; CSpinButton1->OnDownClick = CSpinButton1DownClick; } //------------------------------------------------------------------- //------------------------------------------------------------------- void __fastcall TForm1::CSpinButton1UpClick(TObject *Sender) { float Val; Val = StrToFloat(CSpinEdit1->Text); Val += 0.1; CSpinEdit1->Text = Format("%.1f", ARRAYOFCONST((Val))); } //------------------------------------------------------------------- void __fastcall TForm1::CSpinButton1DownClick(TObject *Sender) { float Val; Val = StrToFloat(CSpinEdit1->Text); Val -= 0.1; CSpinEdit1->Text = Format("%.1f", ARRAYOFCONST((Val))); } (1)當我第一次Run時,為正常沒錯 (2)但是當我第二次Run,改變CSpinEdit1時,就會有錯誤 (3)還有我想直接在CSpinEdit1物件之value欄中,直接輸入8.5也會有問題 感謝版主大大...
m8815010
版主


發表:99
回覆:372
積分:289
註冊:2003-11-13

發送簡訊給我
#7 引用回覆 回覆 發表時間:2005-03-22 18:01:00 IP:61.63.xxx.xxx 未訂閱
Vincent2424你好: 檢查了一下,發現是 >~ < class="code"> In .h ~~ class TForm1 : public TForm { __published: // IDE-managed Components TButton *Button1; TCSpinEdit *CSpinEdit1; TEdit *Edit2; TEdit *Edit3; TEdit *Edit4; void __fastcall FormCreate(TObject *Sender); void __fastcall Button1Click(TObject *Sender); private: // User declarations void __fastcall CSpinButton1UpClick(TObject *Sender); //add the line void __fastcall CSpinButton1DownClick(TObject *Sender); //add the line TWndMethod OldCSpinEditWndProc; void __fastcall CSpinEditWndProc(TMessage& Message); public: // User declarations __fastcall TForm1(TComponent* Owner); }; //--------------------------------------------------------------------------- extern PACKAGE TForm1 *Form1; ~~ In .cpp ~~ TForm1 *Form1; double A=0; double B=0; double C=0; double D=0; double E=0; AnsiString buf; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { OldCSpinEditWndProc = CSpinEdit1->WindowProc; CSpinEdit1->WindowProc = CSpinEditWndProc; } //--------------------------------------------------------------------------- void __fastcall TForm1::FormCreate(TObject *Sender) { CSpinEdit1->Text = "8.5"; CSpinEdit1->ReadOnly = true; TCSpinButton *CSpinButton1 = CSpinEdit1->Button; CSpinButton1->OnUpClick = CSpinButton1UpClick; CSpinButton1->OnDownClick = CSpinButton1DownClick; } //--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { A=StrToFloat(CSpinEdit1->Text); B=StrToFloat(Edit2->Text); C=StrToFloat(Edit3->Text); D=(0.562)*A 0.3917*B; E=(4*D*pow(B,2))/(pow(C,3)); //定義輸出的Edit Edit4->Text=E; } //--------------------------------------------------------------------------- void __fastcall TForm1::CSpinButton1UpClick(TObject *Sender) { float Val; Val = StrToFloat(CSpinEdit1->Text); Val = 0.1; CSpinEdit1->Text = Format("%.1f", ARRAYOFCONST((Val))); } //------------------------------------------------------------------- void __fastcall TForm1::CSpinButton1DownClick(TObject *Sender) { float Val; Val = StrToFloat(CSpinEdit1->Text); Val -= 0.1; CSpinEdit1->Text = Format("%.1f", ARRAYOFCONST((Val))); } //------------------------------------------------------------------- void __fastcall TForm1::CSpinEditWndProc(TMessage& Message) { if (Message.Msg==WM_KILLFOCUS) { buf=CSpinEdit1->Text; CSpinEdit1->Text=0; PostMessage(CSpinEdit1->Handle,WM_USER 1234,0,0); } OldCSpinEditWndProc(Message); if (Message.Msg==WM_USER 1234) CSpinEdit1->Text=buf; } ~~ 程式已測試過可行,請參著!
Vincent2424
一般會員


發表:57
回覆:40
積分:19
註冊:2004-12-15

發送簡訊給我
#8 引用回覆 回覆 發表時間:2005-03-22 18:49:36 IP:219.84.xxx.xxx 未訂閱
感謝版主大大解答~~!!
系統時間:2024-06-30 7:41:32
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!