如何在Delphi中输入分数?

时间:2013-08-06 14:13:47

标签: delphi delphi-2010

我有一个应用程序将使用测量,特别是低至1/16英寸。我真的希望最终用户输入包含小数部分的值的便捷方式,例如3 7/16。我意识到我可以要求用户只输入十进制值(即3.1875),但我真的想要一个更好的方法。有没有人知道下拉或旋转控制使这容易进入? (理想情况下是控件的DB版本。)

2 个答案:

答案 0 :(得分:7)

你可以做到

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举例说明的表单的输入。

要允许整数部分,请添加

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例示的表单的输入。

答案 1 :(得分:0)

多年前我碰巧编写了一个控件,目前我正在完成对它的更新,其中包括指标转换。它允许用户和开发人员在右键单击或在设计时设置模式时在ft in,dec in,dec ft,mm,cm,m之间切换。它还可以处理四舍五入到最接近的第16位,第32位或者您需要的指标。在大多数delphi组件网站上查看,例如torry.net或我在http://www.enhancedtechsolutions.com/delphi/的旧网站 我希望在一天或两天内完成新版本并发布。

忘了提到最重要的部分:叫做TMaskFtInch