马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
这节课就轻松多了,上来就是一个编程实例,这也是初学者最爱做的,也是最有成就感的。
程序要求,输入一个四位数字,分别以个位十位百位千位显示。
下面先用鼠标画出整个布局。
要求鼠标点击Edit控件时自动清空其内容,可以调用Edit1的Click事件。
procedure TForm1.Edit1Click(Sender: TObject);
begin
edit1.Text := '';
end;
接着分别给4个Button控件编写Click事件的过程。
procedure TForm1.Button1Click(Sender: TObject);
Var
temp: Integer;
begin
temp := StrToInt(edit1.Text);
label1.Caption := IntToStr(temp Mod 10)
end;
procedure TForm1.Button2Click(Sender: TObject);
Var
temp: Integer;
begin
temp := StrToInt(edit1.Text);
temp := temp div 10;
label2.Caption := IntToStr(temp Mod 10);
end;
procedure TForm1.Button3Click(Sender: TObject);
Var
temp: Integer;
begin
temp := StrToInt(edit1.Text);
temp := temp div 100;
label3.Caption := IntToStr(temp Mod 10);
end;
procedure TForm1.Button4Click(Sender: TObject);
Var
temp: Integer;
begin
temp := StrToInt(edit1.Text);
temp := temp div 1000;
label4.Caption := IntToStr(temp);
end;
最后的结果就是这样的。 注:这里的程序都是片段,要是完整的程序包括好几个文件。如:.dpr是项目文件,.dfm是窗体的设计,.pas是代码文件。 我们看到计算部分分布在4个过程中,如何把这些集中起来,问题的关键是这段程序放在哪里,什么时候让它执行。通过观察Edit控件的事件发现Exit事件可以满足要求,它是在焦点离开Edit时执行的。第二个问题是计算一遍以后再输入时,没有自动清除原来的结果,这很好办,只要在edit的Click中加上相应的语句即可。
首先在implementation之后定义几个变量: var
temp, g, s, b, q : Integer;
其后的程序如下: procedure TForm1.Edit1Click(Sender: TObject);
begin
edit1.Text := '';
label1.Caption := '';
label2.Caption := '';
label3.Caption := '';
label4.Caption := '';
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
label1.Caption := IntToStr(g)
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
label2.Caption := IntToStr(s);
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
label3.Caption := IntToStr(b);
end;
procedure TForm1.Button4Click(Sender: TObject);
begin
label4.Caption := IntToStr(q);
end;
procedure TForm1.Edit1Exit(Sender: TObject);
begin
temp := StrToInt(edit1.Text);
g := temp Mod 10; //这段可以使用循环简化程序
temp := temp Div 10;
s := temp Mod 10;
temp := temp Div 10;
b := temp Mod 10;
q := temp Div 10;
end;
我们看到程序中需要反复在整数和字符串之间转换,能否直接利用字符串操作呢?学过python的很容易想到字符串的索引,这个在Delphi中也可以实现。 implementation
var
temp : string;
{$R *.dfm}
procedure TForm1.Edit1Click(Sender: TObject);
begin
edit1.Text := '';
label1.Caption := '';
label2.Caption := '';
label3.Caption := '';
label4.Caption := '';
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
label1.Caption := temp[1];
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
label2.Caption := temp[2];
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
label3.Caption := temp[3];
end;
procedure TForm1.Button4Click(Sender: TObject);
begin
label4.Caption := temp[4];
end;
procedure TForm1.Edit1Exit(Sender: TObject);
begin
temp := Edit1.Text
end;
这样程序是不是简单多了,需要注意的是:与python的最大区别是索引从1开始。 小技巧: 精细的调节控件可以Ctrl+方向键移动,shift+方向键缩放,或者说,Ctrl+方向键改变控件的左上角,shift+方向键改变控件的右下角。 相同类型的控件,可以在一个调整好属性后,复制粘贴,得到其他的。 小甲鱼在设置Label控件时,当Caption清空后,控件的尺寸变得很小,不好操作,可以将AutoSize属性改为False,就不会随着Caption内容改变大小了。 控件全部选中可以在对象观察器中同时调整属性。
好了,程序也编好了,我们再进入基本概念部分。 常量:直接常量、符号常量和类型常量。 具体的数值就是直接常量,如12, 3.14,‘a’,’abc’。 符号常量就是我们通常意义的常量,一般全用大写字符表示,通过const来起始,如: const PI= 3.14 LANG = ‘Delphi’ 常数的定义的用等号,其实这点上有些混乱,delphi将c和python的变量赋值和逻辑等于从’=’和’==’改为了’:=’和’=’,但常量又用’=’来定义,感觉有其他的符号为好,如空格,但就是这样规定的改不了了。 类型常量与符号常量的区别是多了一个类型名,如: const
PI : Real = 3.14
LANG : String = ‘Delphi’
感觉类型常量的意义不到,大概能省些内存吧,不知运算起来速度是不是更快。 变量: 变量在使用前必须先声明(定义),这就是静态语言的特点。与python有很大的区别,python的变量实际上是给内存中的一个值贴上标签,而delphi则是在内存中申请一个空间,用以存放数值,空间的大小是固定的,由其类型来决定。由于内存中这块地址可能已经存放了0或1,因此这个新申请的空间的值是不可预知的,最好先赋给一个初值,以免程序得到混乱的结果。 变量有不同的作用域: 在过程和函数中声明的变量,只在其内部有效。这个就是局部变量。 Implementation之后声明的是单元级变量,本单元内的过程和函数都可使用。又称为超级变量。 在interface之后声明的是真正的全局变量,其他引用该单元的单元也可以使用。 变量的声明是以var开头的,如: var
x, y, z : Integer
name : String
|