一个怪问题,求教各位(30分)

  • 主题发起人 主题发起人 linhl
  • 开始时间 开始时间
L

linhl

Unregistered / Unconfirmed
GUEST, unregistred user!
我做了一个程序,有两个Form,在FORM1中有Mediaplar,用来播放MP3,
FORM2是在程序运行时动态建立,FORM2上有一按钮,它的Enable状态由
Mediaplar的状态决定,若正在播放歌曲,按钮Enable为true,否则为false,
我在FORM2的onCteate事件中通过判断一个标志变量的值来决定按钮的状态,
若变量等于1(正在播放),为true;变量为2(播放停止),为false.
但运行后,不管变量为何值,按钮Enable总为false(在控件属性面板中设置
的状态)。我用单步调试,发现在执行到onCteate时程序还正常,但一到FORM2.show
按钮的状态就变成属性面板设置的状态了。
请各位帮助我找找问题,谢了!
另外,标志变量是在Until1中定义的全局变量。
 
将form2.show改成form2.ShowModal试试
 
将onCreate事件中的代码放到onShow中试试.
 
lanbing1400的方法无效,多谢!
我建了一个新工程,用KeepObject的方法,有用。
但同样的方法用在我原来的程序上又无效,运行到设置按钮
的Enable状态的语句时,就出现错误提示:“Access Violation at address 041E8F1 in module
'PROJECT1.EXE'.Read of address FFFFFFFF."这是怎么回事?
 
请各位多多帮忙,我真的给弄糊涂了。给提前一下也好。
 
把代码贴出来吧
 
Form2Show的代码如下:
procedure TForm2.FormShow(Sender: TObject);
begin
if sound=1 then
form2.BitBtn4.Enabled:=true
else if sound=2 then
form2.BitBtn4.Enabled:=true;
end;
 
哦,可能是这样的:你按form1里的某个按钮让form2里的bitbtn4的enabled改变,那你就应该
在form1的按钮事件里写form2.bitbtn4.enabled:=....而不是在form2.create或form2.show
里写
 
我的form2是动态生成的,在生成form2时,根据变量sound当前的值来确定
form2上bibtn4的状态。
 
哦,知道了
procedure TForm2.FormShow(Sender: TObject);
begin
if sound=1 then
button1.Enabled:=true; //没有form2
if sound=2 then
button1.Enabled:=false;
end;

 
大哥,你真是我的救命恩人啦!
不过,我还是不明白为什么不能加form2?能讲讲吗
 
你的Form2是动态加载的。
你说呢。
一般程序中用/self代替
 
多人接受答案了。
 
后退
顶部