这种事怎么还扎堆啊,昨天刚有个帖子
http://topic.csdn.net/u/20111031/22/68306454-2046-4620-9234-b846779e56c4.html?80071
那个Lz貌似研究的比较多的说
http://topic.csdn.net/u/20111031/22/68306454-2046-4620-9234-b846779e56c4.html?80071
那个Lz貌似研究的比较多的说
解决方案 »
- delphi 用lable来显示内容 如何实现首先显示我查询出来的一条记录 然后在一定的时间后再显示下一条记录?
- delphi不能调试通过请求帮忙,马上给分
- delphi、ado和事务
- 用ado連接dbf顯示的中文為甚麼是亂碼?
- 请教一个简单的作业
- 在程序中怎么样调用另外一个事件的处理程序?
- 调用word需要放什么控件(非可视的),我看的一些例子怎么什么也没有
- csdn是怎么给分的?
- 报表打印问题
- VC 中的这个const struct sockaddr FAR * name,参数 delphi该如何改写
- 获取窗体外鼠标点击事件,为什么我用钩子也获取不到?
- 有哪位懂DBGridEH控件如何实现插入行和复制行记录?
我想让我的系统能支持多窗口操作,即SHOW的方式.要多窗口融合在一个窗口内方便在不同的窗口之前切换
begin
application.CreateForm(TComponent(TaFormClass),aForm);
aForm.MaualDock(aPage)); //融合至pageControl,
aForm.Visible:=true; //这个比用 show效果更好
aPage.ActivePageindex:=aPage.PageCount-1;
end;
注意:在调用之前,先检查一下aPage上是否已融合的当前要融合的表单,
如果已融合,则切换到对应的Tabsheet,否则调用。
融合之后,生成的Tabsheet.caption为表单的caption
因此通过
for i:=0 to aPage.PageCount-1 进行遍历查找即可。
......当然,这个检查过程也可以加在PageAddForm中去,加个参数就行了。仅供参考。
http://blog.csdn.net/sdudubing/article/details/6790374
用MaualDock会引起原来的很多事件响应时都出错。帮忙看看我这样哪里不对?能实现就是打开后里面的其它按扭事件不正常了。之前直接用showmodal打开窗体时其它所有都正常的。用以边的方式打开就其它很多事件都出问题了。
代码如下:
procedure Tmainform.dxBarButton8Click(Sender: TObject);
begin
with(Tflbm.Create(nil)) do
begin
Caption:=flbm.Caption;
ManualDock(RzPageControl1,nil,alClient);
RzPageControl1.ActivePageIndex:=RzPageControl1.PageCount-1;
show;
end;
end;
请问如何在打开新窗口的事件中调用你的过程?老是报错呀?可否举个调用实例?比如我想打开FORM2窗口是怎么调用的?
将这个过程定义在private中比如在button1的OnClick调用:PageAddForm(aPage,Form2,TForm2);//其中aPage就是你想融合的目标rzPageControl
你好,加了你写的过程后运行报错:
[错误] mainformpas.pas(709): Incompatible types: 'TComponentClass' and 'TComponent'
[错误] mainformpas.pas(710): Undeclared identifier: 'MaualDock'
[错误] mainformpas.pas(710): 'END' expected but ')' found
begin
......
end;
目前过程如下:
procedure Tmainform.PageAddForm(aPage:TRZpageControl;aForm:TForm;TaFormClass:TClass);
begin
application.CreateForm(TComponent(TaFormClass),aForm);
aForm.MaualDock(aPage)); //融合至pageControl,
aForm.Visible:=true; //这个比用 show效果更好
aPage.ActivePageindex:=aPage.PageCount-1;
end;
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, RzTabs;type
TForm1 = class(TForm)
page1: TRzPageControl;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
procedure PageAddForm(mform:TForm;TmFormClass:TClass);
public
{ Public declarations }
end;var
Form1: TForm1;implementationuses Unit2;{$R *.dfm}{ TForm1 }procedure TForm1.PageAddForm(mform: TForm; TmFormClass: TClass);
begin
application.CreateForm(TcomponentClass(TmFormClass),mForm);
// mForm.show;
mForm.ManualDock(page1);
mForm.Visible :=true; //这种方法的效果比用 show的效果要好一些
page1.ActivePageIndex :=page1.PageCount-1;
end;procedure TForm1.Button1Click(Sender: TObject);
begin
pageAddForm(Form2,TForm2);
end;end.
============================unit Unit2;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;type
TForm2 = class(TForm)
Label1: TLabel;
private
{ Private declarations }
public
{ Public declarations }
end;var
Form2: TForm2;implementation{$R *.dfm}end.
非常感谢你的热心解答,目前已能运行并且能调用。
不过有一点我搞不明白,为什么以这种方式打开窗口后凡是遇到FocusControl(***) ;都要出错呢?有没有办法可以解决?
你说得对,就是。不过除了改成****.setfocus;有没有别的办法?因为使用FocusControl(***)太多了。
另外除了FocusControl(***)会有问题外还有其它的问题哦?经单步调试发现走到这里:if flbm.ADOQuery1parent.IsNull then 也会出现上图这个提示。有没有人知道这是什么意思?该如何解决?