3

特に 1/16 インチまでの測定値を使用するアプリケーションがあります。エンド ユーザーが小数部分を含む値を入力するための便利な方法 (たとえば、3 7/16) が本当に必要です。ユーザーに 10 進数値 (つまり 3.1875) を入力するように要求できることはわかっていますが、もっと良い方法が本当に欲しいです。これを簡単に入力できるドロップダウンまたはスピンコントロールを知っている人はいますか? (理想的には、コントロールの DB バージョンです。)

4

2 に答える 2

8

簡単にできます

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

于 2013-08-06T14:20:54.477 に答える
0

私はたまたま何年も前にコントロールを作成しており、現在、メトリック変換も含むコントロールの更新を仕上げています。ユーザーと開発者は、右クリックするか設計時にモードを設定するだけで、ft in、dec in、dec ft、mm、cm、m を切り替えることができます。また、最も近い 16 番目、32 番目、またはメトリックに必要なものへの丸めも処理します。torry.net のようなほとんどの Delphi コンポーネント サイトや、http: //www.enhancedtechsolutions.com/delphi/ にある私の古いサイトでチェックしてください。 新しいバージョンを 1 日か 2 日で完成させて公開したいと考えています。

最も重要な部分について言及するのを忘れていました: TMaskFtInch の呼び出しです。

于 2013-08-06T18:29:16.757 に答える