我有一個應用程序將使用測量,特別是下至1/16英寸。我真的很想爲最終用戶輸入一個值,包括小數部分,例如3 7/16。我意識到我可以要求用戶輸入十進制值(即3.1875),但我真的很喜歡更好的方式。有誰知道一個下拉或旋轉控制,這使得這個很容易進入? (理想的是DB版本控制的。)如何在Delphi中輸入分數?
回答
你可以做簡單的
function FractionToFloat(const S: string): real;
var
BarPos: integer;
numStr, denomStr: string;
num, denom: real;
begin
BarPos := Pos('/', S);
if BarPos = 0 then
Exit(StrToFloat(S));
numStr := Trim(Copy(S, 1, BarPos - 1));
denomStr := Trim(Copy(S, BarPos + 1, Length(S)));
num := StrToFloat(numStr);
denom := StrToFloat(denomStr);
result := num/denom;
end;
這將接受3/7
和-4/91.5
examplified形式的輸入。
爲了允許一個整數部分,添加
function FullFractionToFloat(S: string): real;
var
SpPos: integer;
intStr: string;
frStr: string;
int: real;
fr: real;
begin
S := Trim(S);
SpPos := Pos(' ', S);
if SpPos = 0 then
Exit(FractionToFloat(S));
intStr := Trim(Copy(S, 1, SpPos - 1));
frStr := Trim(Copy(S, SpPos + 1, Length(S)));
int := StrToFloat(intStr);
fr := FractionToFloat(frStr);
result := int + fr;
end;
這將在另外接受1 1/2
examplified形式的輸入。
並擴展此選項以在前面輸入整數(您可以通過存在空格字符) - 只需在一個TEdit中輸入完整的數字是用戶*和*允許他們在同一個控件中使用小數的最簡單方法,如果他們寧願輸入3.5而不是3 1/2 –
我想我可能會傾向於在這裏使用JCL表達式求值器,按照1月所建議的調整 –
使用真正的表達式求值器的想法是好的,然後你可以輸入'4.5 +(10.2 + 3.83)* 3.67'等東西 –
我恰好在很多年前寫了一個控件,目前我正在完成一個包含度量轉換的更新。它允許用戶和開發人員在右鍵單擊或在設計時設置模式之間在英尺,英寸,英尺,毫米,釐米,米之間切換。它還處理四捨五入到最接近的第十六,第三十二或你需要的公制。查看大多數delphi組件網站,例如torry.net或我的舊網站http://www.enhancedtechsolutions.com/delphi/ 我希望在一天或2天內完成新版本併發布。
忘了提及最重要的部分:它叫TMaskFtInch
這是否也有DB啓用版本? – user1009073
@ user1009073您可以自己做那部分? –
不是,但正如大衛所說,它不會太困難你可以通過代碼來管理I/O,而不僅僅是一個控制鏈接。下載包括一個演示exe文件,以便您可以檢查出當前的功能,而無需安裝任何東西。 –
- 1. 如何在delphi中讀取遊戲方向盤輸入?
- 2. 如何在C中分析輸入?
- 3. 如何在delphi中拆分字符串
- 4. 在Delphi 7中,如何在Format函數中轉義百分號(%)?
- 5. 如何使用「輸入」在C中分隔輸入令牌?
- 6. 如何分配數組與輸入的文本文件在ipad中輸入
- 7. 分數元中的分數輸入
- 8. 如何在MyQuery中插入數據到MySQL表中(Delphi)
- 9. 如何在Delphi中將整數值插入到SQLite表中
- 10. 如何分配數據輸入?
- 11. 如何調整delphi中的麥克風輸入電平?
- 12. 如何從鍵盤獲得輸入,但沒有集中Delphi
- 13. 如何僅使用JavaScript在輸入字段中分割數據?
- 14. 如何在Python中輸入輸入
- 15. 在Java中分割輸入數字
- 16. 在數據庫中輸入評分
- 17. 如何拆分cin輸入
- 18. 用於MIDI輸入/輸出的Delphi庫?
- 19. 如何在Delphi中將二進制數據寫入stdout?
- 20. Delphi OfficePartner插入分節符
- 21. 如何在int輸入之前在java中輸入char輸入?
- 22. 如何在c中輸入小數
- 23. 如何在String中輸入參數?
- 24. 如何在GNUoctave中輸入函數?
- 25. 如何在命令行中分離輸出和輸入?
- 26. 如何分配在單輸入提示
- 27. 如何在輸入字段中只輸入10個數字?
- 28. 如何在javascript數組中輸入HTML輸入?
- 29. 如何在Outlook VBA輸入框中只允許輸入數字
- 30. 如何在R中輸入兩個數字輸入
獲取用戶輸入文本,然後解析它。 GUI控件將是可怕的使用。 –
或...如果您允許的唯一分數可以表示爲1/16的倍數,那麼您只需要提示用戶分子。一個下拉列表或旋轉控制就可以。您可以使用分子的一個控件和分母的一個控件來允許更大範圍的預設分數,可以並排顯示一個「/」,或者一個在另一個上面,並在畫布之間繪製一條線他們(也許是一個高度爲1或2像素的矩形TShape)。 – Sam
你想用這些分數做什麼?我認爲你應該考慮允許用戶輸入自由格式的表達式,例如'3/4「',然後可以使用你設計的類來保存這些值,這些類可以存儲用戶的輸入,然後處理這些值。我將其稱爲'TDimension',它將原始字符串輸入值和它的十進制值作爲字段輸入到內部 –