起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 149|回复: 8

【结贴】如何禁用表单上的控件**

[复制链接]
发表于 2008-11-28 14:53:02 | 显示全部楼层 |阅读模式
现有一个docview,用代码设置他的“DocClassID”属性,动态的加载不同的表单,表单只读时禁用他上面的控件。除了强制类型转换还有其他什么方法没有,强制类型转换需要引用表单的信息,这样做太麻烦。
回复

使用道具 举报

发表于 2008-11-28 15:12:35 | 显示全部楼层
直接用TSheetDoc和TFormDoc进行强制转换。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-11-28 16:25:00 | 显示全部楼层
这样也可以?我要设置表单上的Radiobutton不可用,我是这样想的,就是遍历表单上的组件,如果是TRadiobutton类型,就设置Enable属性为false,但好像不起作用
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-11-28 16:26:06 | 显示全部楼层
直接用TSheetDoc和TFormDoc进行强制转换
========================================
给个例子,极端情况就把表单上所有控件不可用
回复 支持 反对

使用道具 举报

发表于 2008-11-28 16:39:52 | 显示全部楼层
如果是在功能层访问, 参考:http://bbs.justep.com/forum.php?mod=viewthread&tid=17782
遍历某类型控件,参考: http://bbs.justep.com/forum.php?mod=viewthread&tid=25058
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-11-28 17:01:53 | 显示全部楼层
这是我写的禁用表单上RadioButton的代码,没有实现想要的结果,帮忙分析下
//窗体显示事件
procedure TLLCT.BizFormShow(Sender: TObject);
begin
  if DocView5.Doc<>nil then
  DisEnableControl(TSheetDoc(DocView5.Doc));
end;
//禁用某个组件上的RadioButton
procedure TLLCT.DisEnableControl(AComponent:TComponent);
var
  i:integer;
begin
  for i:=0 to AComponent.ComponentCount-1 do
  begin
    if AComponent.Components is TRadioButton then
    begin
       TRadioButton(AComponent).Enabled:=False;
    end;
    //DisEnableControl(AComponent);
  end;
end;
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-11-28 17:04:47 | 显示全部楼层
不好意思
TRadioButton(AComponent).Enabled:=False;
这段代码错了,应该是TRadioButton(Components).
不过好像不能递归哦
回复 支持 反对

使用道具 举报

发表于 2008-11-28 17:09:40 | 显示全部楼层
for i:=0 to AComponent.ComponentCount-1 do
用downto,从大到小呢?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-11-28 17:15:15 | 显示全部楼层
问题解决了
谢谢
以后再用下“shangxy”的方法试试看,现在忙不过来了
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-28 00:00 , Processed in 0.041647 second(s), 16 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表