http://community.borland.com/article/0,1410,28972,00.html有指引program ConvertIt;uses
  System.Drawing,
  Borland.Delphi.SysUtils, Borland.Delphi.Conversions, Borland.Vcl.Controls;type
  TForm1 = class(TForm)
  private
    DoitButton: TButton;
    CelsiusEdit: TSpinEdit;
    ResultList: TListBox;
    MainMenu: TMainMenu;
    FileItem: TMenuItem;
    ExitItem: TMenuItem;
    HelpItem: TMenuItem;
    AboutItem: TMenuItem;
    procedure DoitButtonClick(Sender: TObject; Args: TEventArgs);
    procedure ExitItemClick(Sender: TObject; Args: TEventArgs);
    procedure AboutItemClick(Sender: TObject; Args: TEventArgs);
  protected
    function DecimalToFloat(const AValue: Decimal): Double;
    function FloatToDecimal(const AValue: Double): Decimal;
    procedure ReadState;
  public
    constructor Create;    procedure Convert;
  end;var
  Form1: TForm1;function TForm1.DecimalToFloat(const AValue: Decimal): Double;
begin
  Result := System.Convert.ToDouble(AValue);
end;function TForm1.FloatToDecimal(const AValue: Double): Decimal;
begin
  Result := System.Convert.ToDecimal(AValue);
end;procedure TForm1.Convert;
var
  LCelsius: Double;  function NthDegree(const Scale: string; const Temperature: double): string;
  begin
    Result := Format('%s = %8.2f', [Scale, Temperature]);
  end;begin
  LCelsius := DecimalToFloat(CelsiusEdit.Value);
  with ResultList.Items do
  begin
    Clear;
    Add(NthDegree('Celsius', LCelsius));
    Add(NthDegree('Fahrenheit', CelsiusToFahrenheit(LCelsius)));
    Add(NthDegree('Kelvin', CelsiusToKelvin(LCelsius)));
    Add(NthDegree('Rankine', CelsiusToRankine(LCelsius)));
    Add(NthDegree('Reaumur', CelsiusToReaumur(LCelsius)));
  end;
end;procedure TForm1.DoitButtonClick(Sender: TObject; Args: TEventArgs);
begin
  Convert;
end;procedure TForm1.ExitItemClick(Sender: TObject; Args: TEventArgs);
begin
  Close;
end;procedure TForm1.AboutItemClick(Sender: TObject; Args: TEventArgs);
begin
  TMessageBox.Show(Text + ' whatever');
end;constructor TForm1.Create;
begin
  inherited Create;  ReadState;
end;procedure TForm1.ReadState;
begin
  MainMenu := TMainMenu.Create;
  FileItem := TMenuItem.Create;
  ExitItem := TMenuItem.Create;
  HelpItem := TMenuItem.Create;
  AboutItem := TMenuItem.Create;  MainMenu.MenuItems.Add(FileItem);
  MainMenu.MenuItems.Add(HelpItem);  FileItem.MenuItems.Add(ExitItem);
  FileItem.Text := 'File';  ExitItem.Text := 'Exit';
  ExitItem.add_Click(ExitItemClick);  HelpItem.MenuItems.Add(AboutItem);
  HelpItem.Text := 'Help';  AboutItem.Text := 'About...';
  AboutItem.add_Click(AboutItemClick);  DoitButton := TButton.Create;
  with DoitButton do
  begin
    Left := 8;
    Top := 8;
    Width := 33;
    Height := 25;
    Text := 'Go';
    add_Click(DoitButtonClick);
  end;  CelsiusEdit := TSpinEdit.Create;
  with CelsiusEdit do
  begin
    Left := 48;
    Top := 8;
    Width := 177;
    Value := FloatToDecimal(100);
    Maximum := FloatToDecimal(10000);
    Minimum := FloatToDecimal(-1000);
    add_ValueChanged(DoitButtonClick);
  end;  ResultList := TListBox.Create;
  with ResultList do
  begin
    Left := 8;
    Top := 40;
    Width := 217;
    Height := 217;
  end;  ClientSize := System.Drawing.Size.Create(240, 270);
  Menu := MainMenu;
  Controls.Add(DoitButton);
  Controls.Add(CelsiusEdit);
  Controls.Add(ResultList);
  Text := 'ConvertIt!';
  ControlBox := True;
  MinimizeBox := True;  Convert;
end;begin
  Form1 := TForm1.Create;
  TApplication.Run(Form1);
end.