本文最初发于UESTC一网深情bbs delphi版
weck 2002-5-29 Midas的远程登陆窗口太简单了,不能让用户选择要连接的服务器的地址 不过好在 通过以下的方法你可以修改这个登陆窗口为你自己非常喜欢 的风格,当然也因此可以记录下别人的登陆密码哦 unit utLogIn; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, StdCtrls, dxCntner, dxEditor, dxExEdtr, dxEdLib,Registr y,SConnect,DB; const Software='/Software/Pivot/Wages/1.0'; type TRemoteLogin = class(TForm) Panel1: TPanel; Label1: TLabel; Label2: TLabel; Label3: TLabel; Panel2: TPanel; Bevel2: TBevel; Bevel1: TBevel; edtUserName: TdxEdit; edtPassword: TdxEdit; btnOk: TButton; btnCancel: TButton; cbxServerIP: TdxPickEdit; private { Private declarations } protected FConnection:TSocketConnection; procedure SaveOptions; procedure LoadOptions; public { Public declarations } end; var RemoteLogin: TRemoteLogin; function gxRemoteLoginDialog(var AUserName, APassword: string): Boolean; implementation uses utMain; {$R *.dfm} procedure TRemoteLogin.LoadOptions; var reg:TRegistry; begin //Load the Options reg:=TRegistry.Create; try Reg.RootKey := HKEY_LOCAL_MACHINE; if Reg.OpenKey(Software, True) then begin cbxServerIP.Items.CommaText:=Reg.ReadString('Server'); Reg.CloseKey; end; finally Reg.Free; inherited; end; end; procedure TRemoteLogin.SaveOptions; var reg:TRegistry; begin //Load the Saved Options if (cbxServerIP.Items.IndexOf(cbxServerIP.Text)=-1) then cbxServerIP.Items.Insert(0,cbxServerIP.Text); reg:=TRegistry.Create; try Reg.RootKey := HKEY_LOCAL_MACHINE; if Reg.OpenKey(Software, True) then begin Reg.WriteString('Server',cbxServerIP.Items.CommaText); Reg.CloseKey; end; finally Reg.Free; inherited; end; end; function gxRemoteLoginDialog(var AUserName, APassword: string): Boolean; begin with TRemoteLogin.Create(Application) do try Caption := '远程登录'; LoadOptions; edtUserName.Text := AUserName; Result := False; if AUserName = '' then ActiveControl := edtUserName; if ( cbxServerIP.Items.Count=0) then cbxServerIP.ItemIndex:=-1 else cbxServerIP.ItemIndex:=0; if ShowModal = mrOk then begin AUserName := edtUserName.Text; APassword := edtPassword.Text; frmMain.Connection.Host:=cbxServerIp.Text; Result := True; SaveOptions; end; finally Free; end;
end; end. 最关键的一句是: initialization RemoteLoginDialogProc := gxRemoteLoginDialog; --