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

請教使用UpDown 可以修改Increment 的増減量為0.5嗎

尚未結案
jasper4877
一般會員


發表:17
回覆:4
積分:4
註冊:2004-08-13

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-12-01 18:23:36 IP:211.23.xxx.xxx 未訂閱
各位大大您好,, 有一個問題請教,小弟在使用UnDown 時會使用到0.5,1,1.5,2.0:等配合Edit 顯示,但 1,發現UnDown 是只...不能有小數的方式遞增? 2,如果只能能増減量為整數.有其他的事物能使用
Zard
尊榮會員


發表:24
回覆:396
積分:539
註冊:2003-11-26

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-12-01 20:21:29 IP:61.64.xxx.xxx 未訂閱
你可以自已實作 TUpDown 的 OnChangingEx 事件來達成, 給你一個範例. 先在Form上放一個TEdit元件, 一個TUpDown元件.    
//---------------------------------------------------------------------------    #include 
#pragma hdrstop    #include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
  : TForm(Owner)
{
  // 將值初始化為0
  Edit1->Text = "0";
  // 避免使用者輸入非數字字元
  Edit1->ReadOnly = TRUE;      // 不使用TUpDown自動更新Edit的方式, 因為這樣做只能增加/減少整數值
  UpDown1->Associate = NULL;
}
//---------------------------------------------------------------------------    void __fastcall TForm1::UpDown1ChangingEx(TObject *Sender,
      bool &AllowChange, short NewValue, TUpDownDirection Direction)
{
  float fValue;      if (Direction == updUp)
  {
    fValue = StrToFloat(Edit1->Text);
    fValue  = 0.5;
    Edit1->Text = FloatToStr(fValue);
  }
  else if (Direction == updDown)
  {
    fValue = StrToFloat(Edit1->Text);
    fValue -= 0.5;
    if (fValue < 0) fValue = 0;
    Edit1->Text = FloatToStr(fValue);
  }
}
//---------------------------------------------------------------------------    
jasper4877
一般會員


發表:17
回覆:4
積分:4
註冊:2004-08-13

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-12-02 09:59:49 IP:211.23.xxx.xxx 未訂閱
Hi Zard 你好 謝謝你詳細的範例解說,讓小弟我能了解UpDown的其他功能,執行時!正常穩定 我好奇的將增減量從0.5改成0.1郤發現會浮點全部的值域.請問有其它的方法 可以只顯示0,0.1,0.2,0.3,0.4,,,,10;     float fValue;   if (Direction == updUp)    {     fValue = StrToFloat(Edit1->Text);   // fValue += 0.5;     fValue +=0.1; //我好奇的改變為0.1     Edit1->Text = FloatToStr(fValue);     }    
Zard
尊榮會員


發表:24
回覆:396
積分:539
註冊:2003-11-26

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-12-02 12:25:01 IP:210.243.xxx.xxx 未訂閱
引言: Hi Zard 你好 謝謝你詳細的範例解說,讓小弟我能了解UpDown的其他功能,執行時!正常穩定 我好奇的將增減量從0.5改成0.1郤發現會浮點全部的值域.請問有其它的方法 可以只顯示0,0.1,0.2,0.3,0.4,,,,10; float fValue; if (Direction == updUp) { fValue = StrToFloat(Edit1->Text); // fValue += 0.5; fValue +=0.1; //我好奇的改變為0.1 Edit1->Text = FloatToStr(fValue); }
修改處我用紅字表示
void __fastcall TForm1::UpDown1ChangingEx(TObject *Sender,
      bool &AllowChange, short NewValue, TUpDownDirection Direction)
{
  float fValue;      if (Direction == updUp)
  {
    fValue = StrToFloat(Edit1->Text);
    fValue += 0.1;
    Edit1->Text = Format("%.1f", ARRAYOFCONST((fValue)));
  }
  else if (Direction == updDown)
  {
    fValue = StrToFloat(Edit1->Text);
    fValue -= 0.1;
    if (fValue < 0) fValue = 0;
    Edit1->Text = Format("%.1f", ARRAYOFCONST((fValue)));
  }
}
jasper4877
一般會員


發表:17
回覆:4
積分:4
註冊:2004-08-13

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-12-02 14:42:54 IP:211.23.xxx.xxx 未訂閱
Hi Zard 你好 感謝您在百忙之中,再次詳細的範例解說且多正常..讓小弟我知道格式化的用法 解決我的疑惑謝謝您.
系統時間:2024-04-29 11:49:27
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!