Form上创建多个Frame,每个Frame初始画面都是一样。
通过配置文件来获得需要创建Frame的个数,Frame里有控件及控件的事件。
现在问题在于 怎么多线程创建Frame,以及把参数传递进Frame。
通过配置文件来获得需要创建Frame的个数,Frame里有控件及控件的事件。
现在问题在于 怎么多线程创建Frame,以及把参数传递进Frame。
解决方案 »
- Delphi 自动建立文件夹
- 2个按钮内容分开的时候可以用的...但是合并在一个按钮里就不能用了...为什么呢?
- 请教数据库备份显示进度条的问题
- 关于Delphi的时间比较
- 用ADO模糊查询VF中的DBF表时应用什么通配符?
- 怎样将一个文件夹下的内容全部复制给另一个文件夹??
- 没想到这么快就是高级用户了,高兴!感谢大家的支持,散分!!!!!!!!!
- 参数传址怎么写
- 谁能介绍些比较好的学习网站给我...
- how to save string to a text file ?/help thanks !
- 请教个问题,xml的写法好像很不统一,有比较标准的写法吗?XMLDocument1可以解析吗
- delphi5的bpl程序delphi7无法编译
基本思路:创建线程时先挂起,传入参数后,线程执行,创建frame和显示参数值,为了显示得更为清楚,我在主窗体上加入一个PageControl,每个Frame附在一个动态生成的页面上。
线程源码:unit Unit3;interfaceuses
Classes,Unit2,Unit1,ComCtrls;type
TCreatFrame = class(TThread)
private
pp:string;
frame:TFrame2;
procedure setEdtText;
{ Private declarations }
protected procedure Execute; override;
public
procedure setParam(ppp:string);
end;implementation
procedure TCreatFrame.Execute;
begin
{ Place thread code here }
FreeOnTerminate:=True;
Synchronize(setEdtText);
end;procedure TCreatFrame.setEdtText;
var ts:TTabSheet;
begin
with Form1 do
begin
ts:=TTabSheet.Create(pgc1);
ts.PageControl:=pgc1;
frame:=TFrame2.Create(ts);
frame.Parent:=ts;
frame.edt1.Text:=pp;
end;
end;procedure TCreatFrame.setParam(ppp: string);
begin
pp:=ppp;
end;end.
调用线程源码:var c:Tcreatframe;
begin
c:=tcreatframe.create(True);
c.setParam('Test');//传入参数
c.Resume;
end;
谢谢
测试通过。
这只做了其中一部分的工作。
那怎么创建多个Frame,我需要显示在Form上。
(我没法做到同时创建,目前只是通过轮询方式创建,速度太慢)
1.在调用代码里for i:=0 to 30 do
begin
//创建线程的代码,这种主要是解决不同的frame中不同的参数,一个线程中仅创建一个Frame
end;
2.如果不需要为不同的frame传递参数,就把创建过程放到线程里面。我不是很理解你的需求,你可以简单地把需求和设计描述一下,推敲优化一下?
就是想让所有的画面都同时显示出来。
另外使用cxGrid的CardView也可以达到这种效果。
选择依据:如果frame上面放的东西是图、表等等不规则的东西,建议使用Layout
如果仅仅是显示几行字符,类似于数据库中的几个字段,建议使用cxGrid,这种做法的选择较多,如果还附带检索的话,可能就需要用到内在表之类的(比如ClientDataSET)
如果说设定Form上只放4*4个Frame,那该如何来布局Frame。
谢谢
按照你的思路,多线程Frame创建应该没问题了。
但,我对多线程不太了解。每个Frame是作为监控,也就是说如果有线程需要断开,那怎么通知主线程。