e_snare
一般會員
發表:26 回覆:35 積分:12 註冊:2004-03-14
發送簡訊給我
|
TupDown目前使用上發現它的範圍在-32768~32767
但我的程式裡需要突破這個限制
所以程式裡的相關變數己宣告成__int32
不知TupDown有沒有辦法突破這個限制
例如可以讓使用者選-50000~50000或更大範圍
該如何設定??? 謝謝大家
|
海星
高階會員
發表:41 回覆:217 積分:106 註冊:2003-01-09
發送簡訊給我
|
看來 TupDown 的範圍數值為 __int16 而已,山不轉路轉,
那你就改用 TScrollBar 元件來取代 TupDown 就好了,
他就能符合你的需求到 50000了。
|
Zard
尊榮會員
發表:24 回覆:396 積分:539 註冊:2003-11-26
發送簡訊給我
|
引言:
TupDown目前使用上發現它的範圍在-32768~32767
但我的程式裡需要突破這個限制
所以程式裡的相關變數己宣告成__int32
不知TupDown有沒有辦法突破這個限制
例如可以讓使用者選-50000~50000或更大範圍
該如何設定??? 謝謝大家
因為TUpDown的的Max, Min, Position均宣告為short, 所以值的範圍只能在-32768~32767之間, 若想要超過此範圍除了自己在寫一個元件外(繼承自TUpDown), 還有另一種方法, 就是自行處理TUpDown的Min, Max, Position, 純粹把TUpDown看做是只能點選上下鍵功能的元件. 怎麼做呢? 下面給你一個範例感受一下...
< class="code">
//--------------------------------------------------------------------------- #include
#pragma hdrstop #include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1; // 使用int範圍可從 -2147483648 ~ 2147483647
int iCurPos = 0; //目前TUpDown的位置
int iMin = -50000; // TUpDown的最小值
int iMax = 50000; // TUpDown的最大值 //---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
// 顯示目前的TUpDown的值
ShowMessage(IntToStr(iCurPos));
}
//---------------------------------------------------------------------------
// 實作TUpDown的 OnChangingEx
// 目的只是要知道使用者是按上還是按下.
void __fastcall TForm1::UpDown1ChangingEx(TObject *Sender,
bool &AllowChange, short NewValue, TUpDownDirection Direction)
{
// 若按上為遞增, 否則為遞減
if (Direction == updUp)
{
iCurPos ;
// 檢查是否超過最大值
if (iCurPos > iMax) iCurPos = iMax;
}
else
{
iCurPos--;
// 檢查是否小於最小值
if (iCurPos < iMin) iCurPos = iMin;
}
}
//---------------------------------------------------------------------------
|
e_snare
一般會員
發表:26 回覆:35 積分:12 註冊:2004-03-14
發送簡訊給我
|
引言:
看來 TupDown 的範圍數值為 __int16 而已,山不轉路轉,
那你就改用 TScrollBar 元件來取代 TupDown 就好了,
他就能符合你的需求到 50000了。
^^..其實後來我選擇使用海星的方法,TScrollBar喔!!
|
ldd
一般會員
發表:12 回覆:62 積分:19 註冊:2004-07-06
發送簡訊給我
|
引言:
引言:
TupDown目前使用上發現它的範圍在-32768~32767
但我的程式裡需要突破這個限制
所以程式裡的相關變數己宣告成__int32
不知TupDown有沒有辦法突破這個限制
例如可以讓使用者選-50000~50000或更大範圍
該如何設定??? 謝謝大家
因為TUpDown的的Max, Min, Position均宣告為short, 所以值的範圍只能在-32768~32767之間, 若想要超過此範圍除了自己在寫一個元件外(繼承自TUpDown), 還有另一種方法, 就是自行處理TUpDown的Min, Max, Position, 純粹把TUpDown看做是只能點選上下鍵功能的元件. 怎麼做呢? 下面給你一個範例感受一下...
< class="code">
//--------------------------------------------------------------------------- #include
#pragma hdrstop #include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1; // 使用int範圍可從 -2147483648 ~ 2147483647
int iCurPos = 0; //目前TUpDown的位置
int iMin = -50000; // TUpDown的最小值
int iMax = 50000; // TUpDown的最大值 //---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
// 顯示目前的TUpDown的值
ShowMessage(IntToStr(iCurPos));
}
//---------------------------------------------------------------------------
// 實作TUpDown的 OnChangingEx
// 目的只是要知道使用者是按上還是按下.
void __fastcall TForm1::UpDown1ChangingEx(TObject *Sender,
bool &AllowChange, short NewValue, TUpDownDirection Direction)
{
// 若按上為遞增, 否則為遞減
if (Direction == updUp)
{
iCurPos ;
// 檢查是否超過最大值
if (iCurPos > iMax) iCurPos = iMax;
}
else
{
iCurPos--;
// 檢查是否小於最小值
if (iCurPos < iMin) iCurPos = iMin;
}
}
//---------------------------------------------------------------------------
Zard 您好 你的Sample Code 依然受限於Max Min 我把Max 設成10做測試
當你position等於10時 Direction 會變成None本來按上反而變成了減
......是否有其他方法可以達到 當作上下的按鈕鍵功能?? Ldd
|
ldd
一般會員
發表:12 回覆:62 積分:19 註冊:2004-07-06
發送簡訊給我
|
引言:
引言:
引言:
TupDown目前使用上發現它的範圍在-32768~32767
但我的程式裡需要突破這個限制
所以程式裡的相關變數己宣告成__int32
不知TupDown有沒有辦法突破這個限制
例如可以讓使用者選-50000~50000或更大範圍
該如何設定??? 謝謝大家
因為TUpDown的的Max, Min, Position均宣告為short, 所以值的範圍只能在-32768~32767之間, 若想要超過此範圍除了自己在寫一個元件外(繼承自TUpDown), 還有另一種方法, 就是自行處理TUpDown的Min, Max, Position, 純粹把TUpDown看做是只能點選上下鍵功能的元件. 怎麼做呢? 下面給你一個範例感受一下...
< class="code">
//--------------------------------------------------------------------------- #include
#pragma hdrstop #include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1; // 使用int範圍可從 -2147483648 ~ 2147483647
int iCurPos = 0; //目前TUpDown的位置
int iMin = -50000; // TUpDown的最小值
int iMax = 50000; // TUpDown的最大值 //---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
// 顯示目前的TUpDown的值
ShowMessage(IntToStr(iCurPos));
}
//---------------------------------------------------------------------------
// 實作TUpDown的 OnChangingEx
// 目的只是要知道使用者是按上還是按下.
void __fastcall TForm1::UpDown1ChangingEx(TObject *Sender,
bool &AllowChange, short NewValue, TUpDownDirection Direction)
{
// 若按上為遞增, 否則為遞減
if (Direction == updUp)
{
iCurPos ;
// 檢查是否超過最大值
if (iCurPos > iMax) iCurPos = iMax;
}
else
{
iCurPos--;
// 檢查是否小於最小值
if (iCurPos < iMin) iCurPos = iMin;
}
}
//---------------------------------------------------------------------------
Zard 您好 你的Sample Code 依然受限於Max Min 我把Max 設成10做測試
當你position等於10時 Direction 會變成None本來按上反而變成了減
......是否有其他方法可以達到 當作上下的按鈕鍵功能?? Ldd
Sorry
已經找到解法了
http://delphi.ktop.com.tw/topic.php?TOPIC_ID=20942&ARCHIVE=
|