DELPHI制作登录问题求教。(200分)

  • 主题发起人 主题发起人 study_d
  • 开始时间 开始时间
S

study_d

Unregistered / Unconfirmed
GUEST, unregistred user!
象OICQ那样,在进入时先出现一个登录系统对话框,登录成功后出现一个主窗体。
登录成功后,在任务栏中点击OICQ的小图标可以隐藏或显示主窗体。
我的问题是:如何让程序运行中改变主窗体。
即:有两个窗体,打开时是FORM1为主窗体,进行一些操作后,FORM2.变为主窗体。
 
你只要不用MDIForm就可以了。
 
不用改变,可以这样解决:

FORM2为主窗体,在FORM2 的ONSHOW事件中写上FORM1.SHOWMODAL。。。。
完了,FORM1.CLOSE。。。
 
可以先showmodal一个窗体,操作完以后,进入主窗体,如果想要一个登录的窗体,完整
的例子在:http://wolfsoft.nugoo.com/srcdetail.asp?flag=2&id=2
 
飘摇客:你好,我下载你网站上的这个实例,看见有好多包文件,要不要安装那个包啊!
 
在工程文件中做就可以了。打开菜单 project -> View Source
如下:
var xform1: Tform1;
begin
Application.Initialize;
xform1 := Tform1.create(Application);
xform1.showmodel;
Application.CreateForm(TForm2, Form2);
Application.Run;
end.
 
mk1024:好像不啊,我试过了,能不能再具体的,快快帮助我了,
 
按照上面那位mk1024大侠讲的,它可以把那个登录的窗口显示出来,
这个时候,你可以在那个登录窗口中判断嘛!
比如
procedure tform1.button1.click(sender:Tobject);//你那个输入密码后按下的按钮
begin
if edit1.text=内定的口令 then
begin
close;
form2.show;
end else
begin
showmessage('口令错误'):
application.ternimce;//退出程序来,,,
end;
end;

至于把程序缩小成一个任务栏图标的,那是用了一个shell_icon什么的函数吧和一个
什么icontraydata的结构吧,(不好意思,记不住了),不过这类问题提问得很多了,
在大富翁里搜索一下“系统托盘”就有很多这样的例子了,
 
同意mk1024:
xform1 := Tform1.create(Application);
xform1.showmodel;
if {判断条件} then
Application.CreateForm(TForm2, Form2);
Application.Run;

 
这时有现成的例子,它定义了一个为MW_IcionMessage;的消息来响应那上托盘图标的事件
procedure TrayIcon(var Msg: TMessage); Message WM_IconMessage;
procedure TMainForm.MyShellNotifyIcon; //实现托盘
begin
with Nid do
begin
cbSize := SizeOf(Nid);
Wnd := Handle;
Uid := 1;
uFlags := Nif_Message or Nif_Icon or Nif_Tip;
// 以下函数获取“wm_IconMessage”消息
uCallbackMessage := WM_IconMessage;
HIcon := Application.Icon.Handle; //原来是HIcon := Icon.Handle;
szTip := '拨号精灵V1.0';
end;
Shell_NIcoV := Shell_NotifyIcon(Nim_Add, @Nid);
end;

procedure TMainForm.TrayIcon(var Msg: TMessage);
var PT: TPoint;
begin
if (Msg.LParam = WM_RBUTTONDOWN) then
begin
GetCursorPos(PT);
PopupEx(Self, PopupMenu1, PT.x, PT.y);
end
else
if (Msg.LParam = WM_LBUTTONDBLCLK) then
if not(Self.Visible) then
Self.Show;
end;


来自 :Bcbhua 时间 :2000-09-21 10:17:00
if (Msg.LParam = WM_RBUTTONDOWN) then begin
GetCursorPos(PT);
在这里加入:SetForegroundWindow(Handle);能解决你的第二个问题(我用的是C++)
PopupEx(Self, PopupMenu1, PT.x, PT.y); end else
if (Msg.LParam = WM_LBUTTONDBLCLK) then if not(Self.Visible) then
Self.Show;end;
 
多人接受答案了。
 
后退
顶部