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.