社区
Delphi
帖子详情
动态显示窗体
gulf1234
2007-01-22 11:28:55
在我的工程中,有很多的窗体,但是我都没有用“Atuo Create”,我希望在用户点击菜单后,动态加载并显示。由于我的菜单都是通过数据库中的记录来生成的,所以在用户点击菜单时,我只能获取到窗体的名称。
我在发贴前也,看了一些以前的帖子,但是都没有能解决。看看哪位大侠能帮帮我!!!
...全文
450
30
打赏
收藏
动态显示窗体
在我的工程中,有很多的窗体,但是我都没有用“Atuo Create”,我希望在用户点击菜单后,动态加载并显示。由于我的菜单都是通过数据库中的记录来生成的,所以在用户点击菜单时,我只能获取到窗体的名称。 我在发贴前也,看了一些以前的帖子,但是都没有能解决。看看哪位大侠能帮帮我!!!
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
30 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
gulf1234
2007-04-10
打赏
举报
回复
问题尚未解决,还没有按照netfly(支点) 说的去试试呢。
试后如果还不可以,另开贴请教,答谢各位,先把该贴结了,谢谢大家的帮助。
netfly
2007-03-27
打赏
举报
回复
在D中, 系统一般使用CLASSLIST(D7是RegGroups)这个全局变量来保存所有注册的类的类(class of class)
例如在D5中, RegisterClass这个函数,实际就是把你的类ADD到CLASSLIST这个变量(D5里是一个TThreadList). 然后FindClass从这个全局变量中找出你的那个类的类,然后再创建.你的那个问题应该是注册的和读取的应该不是同一个地方,可以调试跟踪一下.如果不想的话,也可以根据这个原理,我们可以自己做一个自己的LIST来自己控制,自己读取(无非就是抄一次VCL的代码),呵呵.
rcyboom
2007-03-26
打赏
举报
回复
把窗体放到dll中,每个dll都实现几个通用函数:
createandshow;
getformname;
getmenuiten;
主程序扫描指定文件夹的所有dll文件,遍历并动态生成菜单。
每个菜单都调用这几个通用函数即可
gulf1234
2007-03-26
打赏
举报
回复
TO netfly(支点) :我好像不是很理解啊?你能说详细点,或者给我一个简单的例子啊?谢谢。
wwwcampus
2007-03-22
打赏
举报
回复
在 Unit2 中加
initialization
RegisterClass(TForm2);
在 Unit1 中
procedure TForm1.Button1Click(Sender: TObject);
var
pc: TPersistentClass;
fc: TFormClass;
f: TForm;
begin
pc := FindClass('TForm2');
fc := TFormClass(pc);
f := fc.Create(Self);
f.Show;
end;
win2003 + d7 调试通过
gulf1234
2007-03-22
打赏
举报
回复
TO starsky2006(星空无限),
谢谢写的回帖,但是按照你的方法,那如果我有很多的窗体的话,是不是要一一列举呢?我现在就是不想一一列举,不想一有新的窗体,就要来更改这个过程。
starsky2006
2007-03-22
打赏
举报
回复
var
LForm: TLForm;
implementation
{$R *.dfm}
function TShowFormClass.CreateAClass(const AClassName: string): TForm;
begin
if AClassName='LForm' then
Result := LForm;
else
Result := nil;
end;
gulf1234
2007-03-22
打赏
举报
回复
自己顶一个
netfly
2007-03-22
打赏
举报
回复
如果你是用模板编程,很可能是你的系统前后有两个放CLASS的CLASSLIST(D5,D7,D6在这个地方都略有不同), 这样最好的方法是一自己定义一个全局的LIST然后自己往这个LIST里进行注册,并从这里来FIND就可以了.
gulf1234
2007-03-22
打赏
举报
回复
各位啊,我测试了一下,wwwcampus(稻草) 、netfly(支点)和hongqi162(失踪的月亮) 说的方法,如果我新建一个工程的话,都是可行的。
但是在我的程序中就是不行,老是报什么类不存在(我已经使用RegisterClass了)。
我用的是模板编程的,所以我想知道这啊会有什么影响啊?
netfly
2007-03-20
打赏
举报
回复
你的类名和你代入的字符串是一样的吗?
gulf1234
2007-03-20
打赏
举报
回复
不是在DLL中的。
TO zaza_bbface(我试着成熟一点~) ,
我在frmMain中已经引用了单元UnitSite(就是frmSite所对应的单元)了啊,不会这两个名字一定要一样的吧。
zaza_bbface
2007-03-20
打赏
举报
回复
但是每次运行的时候都报错,说“Class TfrmSite not found”.
即使我在frmSite模块的最后(.end前面)使用方法
initialization
RegisterClasses(TfrmSite);依然是这样的错误提示啊。
------------
用了RegisterClasses(TfrmSite);肯定可以找到类的,除非你的工程根本没use frmSite单元
netfly
2007-03-20
打赏
举报
回复
你的窗体单元是放在DLL里?
gulf1234
2007-03-20
打赏
举报
回复
同样的错误提示啊!救命啊!!!!!!!!!!!
netfly
2007-03-20
打赏
举报
回复
var
LFormClass : TFormClass;
LForm: TForm;
begin
//LFormClass := TFormClass(FindClass(AClassName)); <---------------已经进行了转换了
//LForm := LFormClass.Create(Application);
LForm := TFormClass(FindClass(AClassName)).Create(Self);
gulf1234
2007-03-20
打赏
举报
回复
谁能帮帮我啊,解决后,我另开贴酬谢啊。
我先设置了一个函数CreateAClass
function TfrmMain.CreateAClass(const AClassName: string): TForm;
var
LFormClass : TFormClass;
LForm: TForm;
begin
LFormClass := TFormClass(FindClass(AClassName));
LForm := LFormClass.Create(Application);
Result := LForm;
end;
然后在BUTTON的事件中调用,
procedure TfrmMain.Button1Click(Sender: TObject);
var
LForm: TForm;
begin
LForm := CreateAClass('TfrmSite');
try
LForm.ShowModal;
finally
LForm.Free;
end;
end;
但是每次运行的时候都报错,说“Class TfrmSite not found”.
即使我在frmSite模块的最后(.end前面)使用方法
initialization
RegisterClasses(TfrmSite);依然是这样的错误提示啊。
各位大哥,快来帮帮忙啊!!!!!!!!!!!!
gulf1234
2007-01-23
打赏
举报
回复
顶
zhu_jiang
2007-01-23
打赏
举报
回复
我看你要实现一个通用灵活的form才行,在配置里面保存好所有界面要素,根据界面名称动态创建才好
creativecn
2007-01-23
打赏
举报
回复
你应该把窗体建好 然后点击按钮利用语句让其显示 否则你建立一个空白的窗体干什么
加载更多回复(10)
tabcontrol动态生成选项卡,并添加
窗体
接着,将
窗体
的边框样式设为None,这样
窗体
就不会显示边框。最后,通过`DockStyle.Fill`使
窗体
充满整个TabPage。 在WindowsFormsApplication2项目中,你可能会看到一个主
窗体
(通常是Form1)和可能包含的其他
窗体
类...
WPF
窗体
跳转动画 及按钮特效
描述中提到的“使用Storyboard设置跳转动画”,就是指通过Storyboard来定义和控制
窗体
的显示和消失动画,使得窗口的切换更加流畅自然,提高用户体验。 接下来,我们关注按钮的特效。在WPF中,按钮的外观和交互可以...
一行代码搞定等待进度
窗体
这里提到的"JYLRunLib.dll"可能就是一个封装了等待和进度
窗体
逻辑的动态链接库,它提供了一个方便的方法,允许开发者只需一行代码就能创建并显示这样的
窗体
。 例如,这行代码可能是类似以下的形式: ```csharp ...
C#Winform界面布局设计(左侧菜单)右侧窗口操作
右侧窗口的操作,可能指的是在用户点击左侧菜单项时,动态加载和显示不同的内容。这通常通过控制Panel或TabControl的Visible属性,以及使用Controls集合的方法Add和Remove来实现。当用户选择不同的菜单项时,隐藏...
WPF控件,九宫格,自定义
窗体
九宫格布局可以进一步通过数据绑定和控件模板来动态填充内容,提高代码的可维护性和扩展性。 三、自定义
窗体
WPF允许开发者通过继承Window类来自定义
窗体
。自定义
窗体
不仅仅是改变外观,还可以包括自定义行为、...
Delphi
5,930
社区成员
262,936
社区内容
发帖
与我相关
我的任务
Delphi
Delphi 开发及应用
复制链接
扫一扫
分享
社区描述
Delphi 开发及应用
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章