to ghz2000(浩中): 1.如果是实现问题,请告诉我如何实现。先谢谢了。 2.我知道ListView是IE4引入的通用控件。我也知道不用鼠标也可选择ListItem。但单纯从我单击一个ListItem这个动作来说,事件处理的执行一定存在先后关系。我想要做的是:在OnSelect时判断使用者是按左键还是按右键选中该ListItem的,所以要在OnMouseDown时先判断后设个标志。而OnMouseDown的执行发生在OnSelect这一点让我很困惑。说实话,其实这个问题我用直接写消息映射的方法已解决了,现在只是想学学其它较简单的解决方法。我以前是用VC的,刚开始用DELPHI,还望各位指教。
1.如果是实现问题,请告诉我如何实现。先谢谢了。
2.我知道ListView是IE4引入的通用控件。我也知道不用鼠标也可选择ListItem。但单纯从我单击一个ListItem这个动作来说,事件处理的执行一定存在先后关系。我想要做的是:在OnSelect时判断使用者是按左键还是按右键选中该ListItem的,所以要在OnMouseDown时先判断后设个标志。而OnMouseDown的执行发生在OnSelect这一点让我很困惑。说实话,其实这个问题我用直接写消息映射的方法已解决了,现在只是想学学其它较简单的解决方法。我以前是用VC的,刚开始用DELPHI,还望各位指教。
近日经一位网友的提醒,突然发现Delphi的一个问题:
用Delphi写的应用程序在最小化时是突然一下消失的,而不是象普通的应用程序那样逐渐缩小到任务栏,这样多少觉得有点不爽,不知有没有办法解决?
回复贴子:
回复人:CathyEagle() (2000-3-20 19:28:00) 得30分
这个问题我好早以前就已发现并且已经解决,只是一直没有发表。
用Delphi编的程序最小化时没有动态效果,可以用以下方法实现。
一、New Application。
二、New Form,生成Form2。
三、New Unit,在implementation后面加上:
initialization
islibrary :=true;
四、Save All,为工程取好名字,Unit建议取名为“RunFirst.pas”。
五、打开工程文件,把“RunFirst in 'RunFirst.pas';”放到“Forms,”这一行前面去,如下:
program Project1;
uses
RunFirst in 'RunFirst.pas',
Forms,
Unit1 in 'Unit1.pas' {Form1},
Unit2 in 'Unit2.pas' {Form2}; {$R *.RES} begin
Application.Initialize;
Application.ShowMainForm :=false;
islibrary :=true;
Application.CreateForm(TForm1, Form1);
Form2 :=TForm2.Create(Application) ;
Form2.Show ;
Form2.Update ;
Application.Run;
end.
六、在Form2的OnClose事件中写如下语句:
procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Application.Terminate
end;
即可。
回复人:Jean() (2000-3-21 15:18:00) 得0分
环境:
Win98SE+IE5
Delphi5+UP#1
回复人:CathyEagle() (2000-3-22 9:28:00) 得0分
Delphi5+UP#1自然没问题,Win98,IE5都无所谓。其实Delphi5已经解决了最小化动态效果的问题,但是由于Delphi程序有个Application对象,而系统菜单和主窗口系统菜单是不同的。造成不能和其他Windows标准窗口正常平铺。
用我的方法顺便也可以解决这个问题。
可用于Delphi3、4、5(Delphi2我没用过,所以也没试过)
回复人:ImFool(搞技术的都是傻瓜) (2001-5-24 17:51:00) 得0分
CathyEagle:
请介绍一下原理,IsLibrary 变量都影响了什么,这样做有什么副作用?
在你的代码中,不浪费 Form1 不行吗?我试了一下,就是最小化按钮不起作用,加个消息处理代码直接解决不行吗?