关于按了几次BUTTON 的问题。(29分)

  • 主题发起人 ilovedelphi3
  • 开始时间
I

ilovedelphi3

Unregistered / Unconfirmed
GUEST, unregistred user!
各位朋友,你们好!
在下有一问题,疑惑很久。问题如下:
有FORM1和FORM2,FORM1上有一BUTTON,该
BUTTON的ONCLICK是:FORM2.SHOWMODAL;
现在我如何能够知道这个FORM2究竟是SHOWMODAL
了几次了。也就是说这个BUTTON按了几次了。
我在FORM1的BUTTON事件中设了计数变量,但是
如何做均没有效果。还望各位朋友指教!

谢谢!
 
C

CJ

Unregistered / Unconfirmed
GUEST, unregistred user!
写到文件里去不成了?
不过如只是本次程序运行,好象用const就可以
 
J

Jams

Unregistered / Unconfirmed
GUEST, unregistred user!
设一个全局变量,如
Var
Cnt: Integer;

Procedure TForm1.Button1Click(Sender: TObject);
Begin
Inc(Cnt);
....
ShowMessage(IntToStr(Cnt));
End;
 
R

redforks

Unregistered / Unconfirmed
GUEST, unregistred user!
“我在FORM1的BUTTON事件中设了计数变量”,
事件中的变量都是局部变量,在事件结束时就释放掉了,所以不可能保存你的计数值
可以使用Jams的全局变量的方法,如果不想用全局变量,也可以用下面的类型常量
(具有C语言静态变量的作用)的方法:

Procedure TForm1.Button1Click(Sender: TObject);
const
Cnt: integer = 0

Begin
Inc(Cnt)
....
ShowMessage(IntToStr(Cnt));
End;
 

柳五公子

Unregistered / Unconfirmed
GUEST, unregistred user!
请问你取得Form2.showmodal的次数有什么用呢?
 
C

cHengyAng

Unregistered / Unconfirmed
GUEST, unregistred user!
你在Button事件中设置变量显然是局部变量,应该设置全局变量
随便提一句:Tag属性恰当使用可以减少许多程序复杂程度。
button1.Tag:=button1.Tag+1
.
.
最后你统计Tag就可以了
 
C

CJ

Unregistered / Unconfirmed
GUEST, unregistred user!
jams:错
redforks:对,不过我先说的,而且如果要长期保存,要存文件
cHengyAng:绝!不过如果TAG有其它用处时就不行//多数不用,而且CONST已经可以
解决了,何必让别人看不懂你的程序呢?
柳五公子:不知道,反正人家有用
 
A

Another_eYes

Unregistered / Unconfirmed
GUEST, unregistred user!
jams错? 错在哪? 最多是不严谨而已
var
cnt: Integer
应该定在初始化该cnt的过程之前(比如 Form1Create(Sender: TObject) ). 但方法绝对没错. 我常用这种方法, 局部(别的pas中不能访问)的全局(本pas文件中该定义之后的过程或函数都可调用)变量.
 
J

Jams

Unregistered / Unconfirmed
GUEST, unregistred user!
CJ kun对何为全局变量、何为局部变量的概念模糊不清,嘿!遗憾啊!
 
H

huizhang

Unregistered / Unconfirmed
GUEST, unregistred user!
cj, redforks: 能否求教用了一个过程中的局部Const在程序其他函数中该如何访问呢?
 
D

DNChen

Unregistered / Unconfirmed
GUEST, unregistred user!
呜呼,cHengyAng把我想到的方法用掉了,8-(

不过一般我会这么做

procedure form1.button1click(sender:tobject);
begin
inc(sender.tag);
end;

如果有多个按纽要统计的话这个方法就方便了,给每个按纽的onclick都付上这个东西
就搞定了
 
C

CJ

Unregistered / Unconfirmed
GUEST, unregistred user!
<BIG><BIG>CJ错</BIG></BIG>
不过我坚持认为:如果要写文件:),如果要像鼠标计程那样:))
 
C

CJ

Unregistered / Unconfirmed
GUEST, unregistred user!
在强词夺理一次:他又没说在哪里用,如果他要如此用:
Procedure TForm1.Button1Click(Sender: TObject);
const Cnt: integer = 0

Begin
Inc(Cnt)
....
ShowMessage('FORM显示了'+ IntToStr(Cnt) + '次');
End;
哈哈,搞笑
 

小天

Unregistered / Unconfirmed
GUEST, unregistred user!
JAMES错哪了?我试了怎么对的呀
 
J

Jams

Unregistered / Unconfirmed
GUEST, unregistred user!
不知道其中之奥秘吧!:-(
 
C

CJ

Unregistered / Unconfirmed
GUEST, unregistred user!
我都认错了,好了啦!
结束问题!!
CJ这次太没面子了:(
 
J

Jams

Unregistered / Unconfirmed
GUEST, unregistred user!
别无他意,交个Friend吗!:=)
 
C

CJ

Unregistered / Unconfirmed
GUEST, unregistred user!
我没说你如何呀,只是惭愧而已,CJ不当大虾了:)
Ok 交个Friend:*)
 

王寒松

Unregistered / Unconfirmed
GUEST, unregistred user!

procedure form1.Button1Click(sender : Tobject);
begin
Inc(Sender.Tag);
form2.showmodal;
end;

 
R

redforks

Unregistered / Unconfirmed
GUEST, unregistred user!
王寒松:
不好意思,你的程序中有两个错误:

1. Tag属性只有TComponent及其派生类才有,所有要写成:
(Sender as TComponent).Tag
2. Tag是属性,对属性不能用Inc过程,要写成:
With (Sender as TComponent) do
Tag := Tag + 1;
 

Similar threads

顶部