Delphi,添加digets

Delphi,添加digets,delphi,delphi-7,Delphi,Delphi 7,我的课本上说我需要制作一个有三个按钮的捐赠程序,每个按钮代表一定数量的钱。我按下按钮后,“捐赠金额”应该显示在标签上 例如,如果我按下$10按钮,它会说到目前为止筹集的总金额是$10。然后,如果我按$50按钮,标签应该是caption到目前为止筹集的总金额是$60。我需要3个按钮,分别是$10、$20和$50 我甚至不知道从哪里开始编码 以下是起始代码: unit AIDSAWARENESS_U; interface uses Windows, Messages, SysUtils, V

我的课本上说我需要制作一个有三个按钮的捐赠程序,每个按钮代表一定数量的钱。我按下按钮后,“捐赠金额”应该显示在标签上

例如,如果我按下
$10
按钮,它会说
到目前为止筹集的总金额是$10
。然后,如果我按
$50
按钮,标签应该是caption
到目前为止筹集的总金额是$60
。我需要3个按钮,分别是
$10、
$20和
$50

我甚至不知道从哪里开始编码

以下是起始代码:

unit AIDSAWARENESS_U;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls;

type
  TForm1 = class(TForm)
    Panel1: TPanel;
    btn10: TButton;
    btn50: TButton;
    btn20: TButton;
    lblOutput: TLabel;
  private
   {private declarations}
  public
   {public declarations}
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}


end.
如果你不介意帮助我,我将不胜感激

你需要

  • 添加一种计算总值的方法(提示字段)
  • 为按钮添加事件处理程序,它们需要更新值并显示总数

如果你不知道怎么做,检查一下你的课本。

你的申请必须

  • 包含3个具有不同值的按钮(分别命名为
    Value10_按钮
    Value20_按钮
    Value30_按钮

  • 包含带有当前金额的标签(将其命名为
    金额\u标签

  • RaiseAmount
    如果按下其中一个值按钮

  • UpdateAmount\u标签
    如果金额值已更改

接下来我们直接去了

type
  TForm1 = class( TForm )
    Value10_Button : TButton;
    Value20_Button : TButton;
    Value50_Button : TButton;
    Amount_Label : TLabel;
    procedure Value10_ButtonClick( Sender : TObject );
    procedure Value20_ButtonClick( Sender : TObject );
    procedure Value50_ButtonClick( Sender : TObject );
  private
    FAmount : Currency;
    procedure SetAmount( const Value : Currency );
    procedure UpdateAmount_Label;
    procedure RaiseAmount( const Value : Currency );
  public
    property Amount : Currency read FAmount write SetAmount;
  end;

procedure TForm1.RaiseAmount( const Value : Currency );
begin
  Amount := Amount + Value;
end;

procedure TForm1.SetAmount( const Value : Currency );
begin
  if FAmount <> Value then
  begin
    FAmount := Value;
    UpdateAmount_Label;
  end;
end;

procedure TForm1.UpdateAmount_Label;
begin
  Amount_Label.Caption := Format( 'The total amount raised so far is $%f', [Amount] );
end;

procedure TForm1.Value10_ButtonClick( Sender : TObject );
begin
  RaiseAmount( 10 );
end;

procedure TForm1.Value20_ButtonClick( Sender : TObject );
begin
  RaiseAmount( 20 );
end;

procedure TForm1.Value50_ButtonClick( Sender : TObject );
begin
  RaiseAmount( 50 );
end;
在一个实际的应用程序中,我会有一个查找表来从tag属性中获取值,从而消除这个幻数

procedure TForm1.Value_ButtonClick( Sender : TObject );
begin
  RaiseAmount( GetAmountFromIndex( ( Sender as TComponent ).Tag ) );
end;
试试这个:

unit AIDSAWARENESS_U;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls;

type
  TForm1 = class(TForm)
    Panel1: TPanel;
    btn10: TButton;
    btn50: TButton;
    btn20: TButton;
    lblOutput: TLabel;
    procedure btnClick(Sender: TObject);
  private
    {private declarations}
    Amount: Integer;
  public
    {public declarations}
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.btnClick(Sender: TObject);
begin
  Inc(Amount, TButton(Sender).Tag);
  lblOutput.Caption := Format('The total amount raised so far is $%d', [Amount]);
end;

end.

然后,您所要做的就是为所有三个按钮指定
btnClick()
作为
OnClick
事件处理程序,并将每个按钮的
Tag
属性设置为所需的数量。

我的教科书没有解释类似的内容。@link:您一直说教科书没有解释任何内容。你真的需要找一本更好的教科书。或者忘记课本,自己做实验,学习别人的代码。这就是我自学的方式。这是南非唯一的教科书之一(10年历史),因为南非是地球上最后一个在课堂上使用德尔菲的地方之一。我相信这是他们委托的。下载马可·坎图(Marco Cantu)的《免费帕斯卡指南》(free Pascal guide)会更好:找到他其他一些德尔福书籍的旧版本也可能很有用。@alcalde谢谢你的回答。顺便问一下,为什么我的问题被否决了这么多次??我知道我在编码方面很差劲,我真的没有编码的头脑,但是否决票确实让你感觉很糟糕:(@link,它被否决是因为它缺乏你自己的努力来解决问题。它看起来像是“解决我的家庭作业问题”。一个好的问题表明提问者的努力。(这正是我用指针回答问题的原因,没有真正的答案。最终,你从尝试中学到的东西比从复制中学到的东西要多。我会对所有三个按钮使用一个
OnClick
处理程序,并使用按钮的
标记
属性来保存传递给
RaiseAmount()
的金额。@SirRufo:没有。请看我的答案。
unit AIDSAWARENESS_U;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls;

type
  TForm1 = class(TForm)
    Panel1: TPanel;
    btn10: TButton;
    btn50: TButton;
    btn20: TButton;
    lblOutput: TLabel;
    procedure btnClick(Sender: TObject);
  private
    {private declarations}
    Amount: Integer;
  public
    {public declarations}
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.btnClick(Sender: TObject);
begin
  Inc(Amount, TButton(Sender).Tag);
  lblOutput.Caption := Format('The total amount raised so far is $%d', [Amount]);
end;

end.