Invalid class typecast 错误

dzxccsu 2009-09-15 10:37:06

procedure TForm1.Button2Click(Sender: TObject);
begin
case (Sender as TToolButton).Index of //这行当我点击工具栏上的按钮时总是报Invalid class typecast 错误
2:begin
showMessage('客户管理');
end;
3:begin
showMessage('日程管理');
end;
4:begin
showMessage('图表分析');
end;
end;
end;


哪位大哥帮帮忙?
...全文
577 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
dzxccsu 2009-09-15
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 starluck 的回复:]
Delphi(Pascal) codeprocedure TForm1.Button2Click(Sender: TObject);beginif Sender is TButtonthenbegincase (Sender as TButton).tagof//这行当我点击工具栏上的按钮时总是报Invalid class typecast 错误2:begin
showMessage('客户管理');end;3:begin
showMessage('日程管理');end;4:begin
showMessage('图表分析');end;end;end;end;


用BUTTON的tag
[/Quote]谢谢华仔及上面几位大哥,让小弟又学到了不少。
starluck 2009-09-15
  • 打赏
  • 举报
回复


procedure TForm1.Button2Click(Sender: TObject);
begin
if Sender is TButton then begin
case (Sender as TButton).tag of //这行当我点击工具栏上的按钮时总是报Invalid class typecast 错误
2:begin
showMessage('客户管理');
end;
3:begin
showMessage('日程管理');
end;
4:begin
showMessage('图表分析');
end;
end;
end;
end;






用BUTTON的tag
dzxccsu 2009-09-15
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 bdmh 的回复:]
引用 3 楼 dzxccsu 的回复:
引用 1 楼 bdmh 的回复:
此Sender是TButton,不是TToolButton
不对哦,改为TButton会报错,编译不通过,我用的工具栏是ToolBar控件

你改成TButton当然不通过了,因为TButton根本没有Index 属性
[/Quote]那应该如何改呢?
dzxccsu 2009-09-15
  • 打赏
  • 举报
回复

procedure TForm1.Button2Click(Sender: TObject);
begin
showMessage(Sender.ClassName);//弹出TButton
case (Sender as TToolButton).Index of //这里如果改为Sender as TButton编译报错。不通过
2:begin
showMessage('客户管理');
end;
3:begin
showMessage('日程管理');
end;
4:begin
showMessage('图表分析');
end;
end;
end;



bdmh 2009-09-15
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 dzxccsu 的回复:]
引用 1 楼 bdmh 的回复:
此Sender是TButton,不是TToolButton
不对哦,改为TButton会报错,编译不通过,我用的工具栏是ToolBar控件
[/Quote]
你改成TButton当然不通过了,因为TButton根本没有Index 属性
starluck 2009-09-15
  • 打赏
  • 举报
回复


procedure TForm1.Button2Click(Sender: TObject);
begin
if Sender is TToolButton then begin
case (Sender as TToolButton).Index of //这行当我点击工具栏上的按钮时总是报Invalid class typecast 错误
2:begin
showMessage('客户管理');
end;
3:begin
showMessage('日程管理');
end;
4:begin
showMessage('图表分析');
end;
end;
end;
end;


不过最好先用火龙的方法看下你的类吧.



dzxccsu 2009-09-15
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 smallhand 的回复:]
showmessage(Sender.ClassName);
你就知道为什么了!
Delphi已经为你准备好了Action了,你为什么不用呢?
[/Quote]大哥,不好意思,我最近才学delphi
dzxccsu 2009-09-15
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 bdmh 的回复:]
此Sender是TButton,不是TToolButton
[/Quote]不对哦,改为TButton会报错,编译不通过,我用的工具栏是ToolBar控件
火龙岛主 2009-09-15
  • 打赏
  • 举报
回复
showmessage(Sender.ClassName);
你就知道为什么了!
Delphi已经为你准备好了Action了,你为什么不用呢?
bdmh 2009-09-15
  • 打赏
  • 举报
回复
此Sender是TButton,不是TToolButton

5,392

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧