NO1:一个projectGroup 项目中有两个exe程序,怎样在第一个exe启动后,主窗体程序运行前,判断某个条件。如果条件满足,则主窗体继续运行。如果不满足,则运行第二个程序?NO2:reference的含义。有这样一个过程:
procedure ShowFrm(FormClass:TFormClass;var reference);
begin
TForm(reference):=FormClass.create(application);
TForm(reference).showmodual;
TForm(reference).free;
TForm(reference):=nil;
end;这里的reference是什么意思,还有其他的含义和用法吗?而一般情况下,它还可以怎么用?NO3:关于SelectNext;本来这个方法是选择下一个控件,我为了让程序中每个窗体中的TEDIT能用回车键跳转,我在公共单元写了一个这样的过程:
procedure EditKey(Sender:TObject;var Key char);
begin
if key=#13 then
begin
selectNext(((sender) as Twincontrol),true,true);
key=#0;
end;
end;
编译时总是提示SELECTNEXT没有被声明,我在USES子句中加了FORMS,CONTROLS……等都不行,但同样的过程我放到TEDIT的KEYPRESS事件中,运行良好。我想把这个过程放到公共的单元,要怎样处理?
NO4:Creat(),括号中的参数?比如说窗体的创建,有时create可以不带参数,有时可以带Application,有时可以带self。怎样区分,尤其是SELF参数该怎么用?西西~~
我这一百分不太好拿哦?
先谢谢大家了!!
procedure ShowFrm(FormClass:TFormClass;var reference);
begin
TForm(reference):=FormClass.create(application);
TForm(reference).showmodual;
TForm(reference).free;
TForm(reference):=nil;
end;这里的reference是什么意思,还有其他的含义和用法吗?而一般情况下,它还可以怎么用?NO3:关于SelectNext;本来这个方法是选择下一个控件,我为了让程序中每个窗体中的TEDIT能用回车键跳转,我在公共单元写了一个这样的过程:
procedure EditKey(Sender:TObject;var Key char);
begin
if key=#13 then
begin
selectNext(((sender) as Twincontrol),true,true);
key=#0;
end;
end;
编译时总是提示SELECTNEXT没有被声明,我在USES子句中加了FORMS,CONTROLS……等都不行,但同样的过程我放到TEDIT的KEYPRESS事件中,运行良好。我想把这个过程放到公共的单元,要怎样处理?
NO4:Creat(),括号中的参数?比如说窗体的创建,有时create可以不带参数,有时可以带Application,有时可以带self。怎样区分,尤其是SELF参数该怎么用?西西~~
我这一百分不太好拿哦?
先谢谢大家了!!
解决方案 »
- 实现treeview结构,能够从XML文件中读取数据,有没有这样的控件??在线等
- 如何用程序单击程序外的座标, 怎么总是单击不成功
- ImageEnMview1.MIO.DoPrintPreviewDialog打印tif
- bintohex的问题???急啊!!!!!!!!
- 模糊查询的问题
- 哪里有Xpmenu的控件下载?
- forgot2000的散分帖:再过一个星期就生日了,但为什么我的心情还是这么郁闷呀?
- Canvas画一直线,怎样用鼠标选中,将其删除?
- 计算记录数50分
- 有几个问题想请教大家,请进来看看
- 深圳公明景烁皮具有限公司招聘
- help!!! fastreport2.5 的tprintgrid问题
修改project文件代码
下面代码中加入API调用,启动第二个程序。
参考吧
program Project1;uses
Forms,
Dialogs,
Controls,
Unit1 in 'Unit1.pas' {Form1};{$R *.res}
var PassWord: string; //password begin
if InputQuery('Password','Enter your password',PassWord) then
if PassWord='www' then
begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
end
else
MessageDlg('Incorrect PassWord!',mtError,[mbok],1);
end.NO2:以前不知道这种定义也能用。一般定义成TWincontrol型的。NO3:用PostMessage()吧。
要不就自定义一个selecttext方法。
NO4:Creat()
可以写成多种形式,是因为有不同的重载函数。
效果个人感觉是一样的。
self是类自身的指针。
如:
form1:=Tform1.create(form1)
form1:=Tform1.create(self)
是一样的。self实际上就是from1,是指向Tform类的实例form1的指针。
问题二:只是写法不一样而已,基本上没有什么区别的
问题三:换个方法。写个公用的过程
如:procedure tfrmluru.chagefocus(edt:tcxtextedit;Key: Char);
begin
if key=#13 then
edt.SetFocus;
end;
问题四:多种形式,重载的原因。
实现的结果基本一致
procedure EditKey(Sender:TWinControl; CurEdit: TWinControl;var Key char);
begin
if key=#13 then
begin
Sender.selectNext((CurEdit,true,true);
key=#0;
end;
end;
一并提问。我的问题虽然多,但是我给出的分数也不是很少哦?所以请大家帮帮忙~ ^-^ 对于第一个问题,是我做的一个系统。这个系统有个单独的初始化程序(是动态建立数据库和表)。在主系统运行时会先检测注册表中的一个标志位,如果没有,就在主系统的主窗体运行前运行初始化程序,当初本来想写成DLL形式。但因为初始化程序可是说是一个单独的系统,写成DLL,调用会比较麻烦(也可能是我DLL用的还不是很熟练),所以选择将初始化程序写成一个EXE文件。
如果哪位有更好的建议,我可以另外开贴给分。谢谢大家了。
可以在PROGRAM的INITIALIZATION判断.
NO2:REFERNECE为无类型变量参数,就是可以在函数体中更改初始值.
NO4,CREATE的参数是指定本身的所有者且所有者一定要为TWINCONTROL派生的控件.
都是说SELECTNEXT没有声明。
有兴趣的可以建一个UNIT试试。我在UNIT上USES了CONTROLS,不知道是不是少USES什么UNIT?
一个无类型的变量.
NO3.这个很简单,告诉你找引用文件的方法: 你先在TEdit的OnKeyPress中写下SelectNext
然后在SelectNext这个单词上点击鼠标右键,在弹出的菜单中选择Find Declaration
打开的文件就是你需要引用的单元NO4.不太清楚的你疑惑到底是什么.Create()中带不带参数以及带何种参数是根据不同的对象而不
同的,我可以定义一个新的对象可能需要中Create中传入3个,4个或者更多个参数.问这个问题
说明你对对象的概念还不太清晰,最好先补一补这方面的知识.
我懂你的意思了~谢谢各位~给分罗~