声明一个指向panel的指针,用来存储当前的panel对象,然后实现panel间的切换(通过panel.visble)
建一个全局变量
curpanel:^TPanel; 主要程序如下procedure TActiveFormX.ActiveFormCreate(Sender: TObject);
begin
new(curpanel);
end;procedure TActiveFormX.ActiveFormDestroy(Sender: TObject);
begin
dispose(curpanel);
end;procedure TActiveFormX.showpanel(var panelx:TPanel);
var TempPanel:^TPanel;
begin
try
if CurPanel=nil then
begin
TempPanel:=@panelx;
CurPanel^ := TempPanel^;
curpanel^.Visible:=true;
end
else
begin
curpanel^.Visible:=false;
TempPanel:=@panelx;
CurPanel^:= TempPanel^;
curpanel^.Visible:=true;
end;
except
exit;
end;end;
问题:在ocx使用时经常会出现panel无法正常切换的问题,不知道是什么问题,大家帮我看看程序是不是有bug,或着说在ocx下面这样做是不是有什么局限性?
建一个全局变量
curpanel:^TPanel; 主要程序如下procedure TActiveFormX.ActiveFormCreate(Sender: TObject);
begin
new(curpanel);
end;procedure TActiveFormX.ActiveFormDestroy(Sender: TObject);
begin
dispose(curpanel);
end;procedure TActiveFormX.showpanel(var panelx:TPanel);
var TempPanel:^TPanel;
begin
try
if CurPanel=nil then
begin
TempPanel:=@panelx;
CurPanel^ := TempPanel^;
curpanel^.Visible:=true;
end
else
begin
curpanel^.Visible:=false;
TempPanel:=@panelx;
CurPanel^:= TempPanel^;
curpanel^.Visible:=true;
end;
except
exit;
end;end;
问题:在ocx使用时经常会出现panel无法正常切换的问题,不知道是什么问题,大家帮我看看程序是不是有bug,或着说在ocx下面这样做是不是有什么局限性?
解决方案 »
- 有人说像希特勒,有人说像雪村....
- 如何把整型转为String?
- C/S结构的多帐套系统,如何在客户端新建帐套数据库,而新建的帐套(数据库)文件是保存在服务器端的。
- 小弟我即将毕业,毕业设计做一套商品进销存系统,三层结构,请各位前辈指教
- http://www.17delphi.org
- 用idpop控件接受邮件,请问有没有唯一表示邮件的信息,属性
- 怎样获取打印机状态????
- 怎样解决分析汇总中遇到的问题??(
- 怎样在一个在页面定制多个框,并且可以在里面打印(答对,送50分,最好有原码)
- 这个问题很菜,关于动态创建的按钮:)
- 如何获取edit控件中字符串的第一个字母
- 菜鸟问题 大家帮忙看看 !!
var
curpanel:TPanel; //这样定义,curpanel已经相当于指针了。。 curpanel:^TPanel;//你这样定义是把curpanel定义成指针的指针....干嘛不好好学学PASCAL语法?
刚接触到指针,确实有点头痛,
上面这个程序是我先学现写的,
在普通的app下没有问题,
可是在ocx下,偶尔会出现无法实现效果的情况,
想知道这是不是ocx中的问题,
望能指点一二
谢谢
OCX同普通EXE是有些不同,但不会直接造成你那现象.
>> curpanel:TPanel; //这样定义,curpanel已经相当于指针了。。是啊,你在这里声明指针就在给自己找麻烦。不用指针,直接curpanel:TPanel;就可以了
>>声明一个指向panel的指针,用来存储当前的panel对象,然后实现panel间的切换(通过panel.visble)实现panel的切换不是判断指针是不是nil 而是判断panel的visible.
还有curpanel:TPanel;这个声明的curpanel就已经指向了堆上了内存.而你再生命指针等于栈上的元素指栈上的元素,呵呵,自己找麻烦.
那各位大大能不能说说delphi中什么时候需要用到真正的指针,因为有了隐性的指针了呀