ConvForm.pas
上传用户:fh681027
上传日期:2022-07-23
资源大小:1959k
文件大小:3k
源码类别:

Delphi控件源码

开发平台:

Delphi

  1. unit ConvForm;
  2. interface
  3. uses
  4.   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  5.   Dialogs, Types, StdCtrls, ConvUtils, StdConvs, StrUtils;
  6. type
  7.   TForm1 = class(TForm)
  8.     ComboFamilies: TComboBox;
  9.     ListTypes: TListBox;
  10.     EditType: TEdit;
  11.     EditAmount: TEdit;
  12.     EditConverted: TEdit;
  13.     Label1: TLabel;
  14.     Label2: TLabel;
  15.     Label3: TLabel;
  16.     Label4: TLabel;
  17.     Label5: TLabel;
  18.     BtnSimple: TButton;
  19.     Label6: TLabel;
  20.     EditDestination: TEdit;
  21.     BtnConvert: TButton;
  22.     Label7: TLabel;
  23.     procedure FormCreate(Sender: TObject);
  24.     procedure ChangeFamily(Sender: TObject);
  25.     procedure BtnSimpleClick(Sender: TObject);
  26.     procedure DoConvert(Sender: TObject);
  27.     procedure EditTypeDragOver(Sender, Source: TObject; X, Y: Integer;
  28.       State: TDragState; var Accept: Boolean);
  29.     procedure EditTypeDragDrop(Sender, Source: TObject; X, Y: Integer);
  30.   private
  31.     aFamilies: TConvFamilyArray;
  32.     CurrFamily: TConvFamily;
  33.   end;
  34. var
  35.   Form1: TForm1;
  36. implementation
  37. {$R *.DFM}
  38. procedure TForm1.FormCreate(Sender: TObject);
  39. var
  40.   i: Integer;
  41. begin
  42.   GetConvFamilies (aFamilies);
  43.   for i := Low(aFamilies) to High(aFamilies) do
  44.     ComboFamilies.Items.Add (
  45.       ConvFamilyToDescription (aFamilies[i]));
  46.   // get the first and fire event
  47.   ComboFamilies.ItemIndex := 0;
  48.   ChangeFamily (self);
  49. end;
  50. procedure TForm1.ChangeFamily(Sender: TObject);
  51. var
  52.   aTypes: TConvTypeArray;
  53.   i: Integer;
  54. begin
  55.   ListTypes.Clear;
  56.   CurrFamily := aFamilies [ComboFamilies.ItemIndex];
  57.   GetConvTypes (CurrFamily, aTypes);
  58.   for i := Low(aTypes) to High(aTypes) do
  59.     ListTypes.Items.Add (
  60.       ConvTypeToDescription (aTypes[i]));
  61. end;
  62. procedure TForm1.BtnSimpleClick(Sender: TObject);
  63. begin
  64.   // samples
  65.   // convert temperatures: celsius to fahrenheit
  66.   ShowMessage ('31 Celsius -> ' + FloatToStr (
  67.     Convert (31, tuCelsius, tuFahrenheit)) + ' Fahrenheit');
  68.   // convert speed: miles per hour to meters per seconds
  69.   ShowMessage ('20 Miles/Hour -> ' + FloatToStr (
  70.     Convert(20, duMiles, tuHours, duMeters, tuSeconds)) +
  71.     ' Meters/Second');
  72. end;
  73. procedure TForm1.DoConvert(Sender: TObject);
  74. var
  75.   BaseType, DestType: TConvType;
  76. begin
  77.   // get and check base type
  78.   if not DescriptionToConvType(CurrFamily, EditType.Text, BaseType) then
  79.     EditType.Font.Color := clRed
  80.   else
  81.     EditType.Font.Color := clBlack;
  82.   // get and check destination type
  83.   if not DescriptionToConvType(CurrFamily, EditDestination.Text, DestType) then
  84.     EditDestination.Font.Color := clRed
  85.   else
  86.     EditDestination.Font.Color := clBlack;
  87.   if (DestType = 0) or (BaseType = 0) then
  88.     EditConverted.Text := 'Invalid type'
  89.   else
  90.     EditConverted.Text := FloatToStr (Convert (
  91.       StrToFloat (EditAmount.Text), BaseType, DestType));
  92. end;
  93. procedure TForm1.EditTypeDragOver(Sender, Source: TObject; X, Y: Integer;
  94.   State: TDragState; var Accept: Boolean);
  95. begin
  96.   Accept := True;
  97. end;
  98. procedure TForm1.EditTypeDragDrop(Sender, Source: TObject; X, Y: Integer);
  99. begin
  100.   (Sender as TEdit).Text := (Source as TListBox).Items
  101.     [(Source as TListBox).ItemIndex];
  102. end;
  103. end.