怎样从登陆的Form传递信息给另一个form里面的webbrowser控件?急在线等待!!!FormLogin.pas
unit FrmLogin;interfaceuses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;type
  TFormLogin = class(TForm)
    GroupBox1: TGroupBox;
    Button1: TButton;
    Button2: TButton;
    Label1: TLabel;
    Label2: TLabel;
    EditName: TEdit;
    EditPass: TEdit;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;var
  FormLogin: TFormLogin;implementation{$R *.dfm}procedure TFormLogin.Button1Click(Sender: TObject);
begin
  if (EditName.Text = 'yzx') and (EditPass.Text = '123') then
  begin
    self.ModalResult := mrOk;  //返回mrOk,说明登陆成功
  end
  else
  begin
    ShowMessage('帐号错误!');
  end;
end;end.
//******************************************
FormMain.pas
unit FrmMain;interfaceuses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ImgList, IdBaseComponent, IdComponent, IdTCPConnection,
  IdTCPClient, IdHTTP, OleCtrls, SHDocVw, StdCtrls, ExtCtrls, ComCtrls,
  ToolWin;type
  TForm1 = class(TForm)
  CoolBar1: TCoolBar;
    ToolBar1: TToolBar;
    ToolButton1: TToolButton;
    ToolButton2: TToolButton;
    ToolButton3: TToolButton;
    ToolButton4: TToolButton;
    ToolButton5: TToolButton;
    ImageList1: TImageList;
    Panel1: TPanel;
    Edit1: TEdit;
    Label1: TLabel;
    Button1: TButton;
    Label2: TLabel;
    Label3: TLabel;
    StatusBar1: TStatusBar;
    WebBrowser1: TWebBrowser;
    IdHTTP1: TIdHTTP;
    procedure WebBrowser1DownloadBegin(Sender: TObject);
    procedure WebBrowser1DownloadComplete(Sender: TObject);
    procedure ToolButton2Click(Sender: TObject);
    procedure ToolButton3Click(Sender: TObject);
    procedure ToolButton4Click(Sender: TObject);
    procedure ToolButton5Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure ToolBar1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;var
  Form1: TForm1;implementation
uses FrmLogin;{$R *.dfm}procedure TForm1.FormActivate(Sender: TObject);
begin
  if FormLogin.ShowModal <> mrOk then  //如果返回不成功
  begin
    Application.Terminate;//退出!
  end;
end;procedure TForm1.FormCreate(Sender: TObject);
begin
StatusBar1.Panels[0].Text:='正在连接:'+Edit1.text;
end;procedure TForm1.WebBrowser1DownloadComplete(Sender: TObject);
begin
StatusBar1.Panels[0].Text:='完成'+WebBrowser1.LocationURL ;
end;procedure TForm1.ToolButton2Click(Sender: TObject);
begin
WebBrowser1.GoBack;
end;procedure TForm1.ToolButton3Click(Sender: TObject);
begin
WebBrowser1.Stop;
end;procedure TForm1.ToolButton4Click(Sender: TObject);
begin
WebBrowser1.Refresh;
end;procedure TForm1.ToolButton5Click(Sender: TObject);
begin
WebBrowser1.GoHome;
end;procedure TForm1.Button1Click(Sender: TObject);
var
  p:integer;
  s:string;
beginend;
procedure TForm1.Button1Click(Sender: TObject);
begin
WebBrowser1.Navigate(Edit1.Text);
 s := idHTTP1.Get('http://data.alexa.com/data?cli=10&dat=snba&url=' + Edit1.Text) ;
//先得到网页代码
  p:=pos('" TEXT="',s) + Length('" TEXT="');
  s:=copy(s,P,30);
  p:=pos('"/>',s);
  Label3.Caption:=Copy(s,1,P -1);
  if Edit1.Text='' then
  ShowMessage('地址不能为空');
end;procedure TForm1.ToolBar1Click(Sender: TObject);
beginend;end.
请高手们指点怎样把FromLogin.pas的登录信息传递直接传递给FromMain.pas里面的webbrowser控件,急!!

解决方案 »

  1.   

    利用一个公共单元,把消息变量存在这里.
    然后写出    
    procedure ddd(var Msg: TMessage); Message WM_USER;这样的类似函数
    begin
      WebBrowser1.Refresh;
    end;再利用PostMessage(Handle, WM__USER, 0, 0);这样的把消息传给formmain窗体中
    大体过程就这样吧,看看别人有没有好的办法
      

  2.   

    form2:private
        procedure SetAA(const Value: string);
    public
        property AA:string write SetAA;
    end;procedure TForm2.SetAA(const Value: string);
    begin
      //设置你的WebBrowser1
    end;
    form1:
    form2.AA:='fdsafdsa';
      

  3.   

    在form2的构造函数里面加一个变量
    你form1调用form2的时候就可以把这个判断的变量值传递过去
      

  4.   

    在一个公共单元中设置公用变量,然后直接在各个form中引用就可以了
      

  5.   

    建议先将需传送的数据落地,在FormMain运行时调用落地信息://1:
    procedure TFormLogin.Button1Click(Sender: TObject); 
    var
      f: TextFile;
    begin 
      if (EditName.Text = 'yzx') and (EditPass.Text = '123') then 
      begin 
        AssignFile(f,'C:\tmp.txt');
        rewrite(f);
        WriteLn(f,EditName.Text);
        WriteLn(f,EditPass.Text);
        CloseFile(f);
        self.ModalResult := mrOk;  //返回mrOk,说明登陆成功 
      end 
      else 
      begin 
        ShowMessage('帐号错误!'); 
      end; 
    end; //2:
    procedure TForm1.ToolBar1Click(Sender: TObject); 
    var
      l: TStrings;
      s1,s2: string;
    begin 
      l:= LoadFromFile('C:\tmp.txt');
      s1:= l[0];
      s2:= l[1];
    end; 
      

  6.   

    急了:procedure TForm1.ToolBar1Click(Sender: TObject); 
    var
      l: TStrings;
      s1,s2: string;
    begin 
      l:= TStringList.Create;
      l.LoadFromFile('C:\tmp.txt');
      s1:= l[0];
      s2:= l[1];
    end; 
      

  7.   

    谢谢dl110
    但是怎么把C:\tmp.txt'里面EditName.Text和EditPass.Text直接传递到WebBrowser1,前辈帮忙详细写一下,
    procedure TForm1.WebBrowser1DownloadBegin(Sender: TObject);
    begin
    StatusBar1.Panels[0].Text:='正在连接:'+Edit1.text;
    end;procedure TForm1.WebBrowser1DownloadComplete(Sender: TObject);beginStatusBar1.Panels[0].Text:='完成'+WebBrowser1.LocationURL ;
    end;
      

  8.   

    我想,你是要将用户名和密码通过http发送到web服务器吧?
    通常,通过网页传递参数是:http://www.csdn.com?UID=UserName&PWD=Password
    不知理解的是否正确.
      

  9.   

    具体实现:procedure TForm1.Button1Click(Sender: TObject);
    begin
      WebBrowser1.Navigate(Edit1.Text+'?UID='+s1+'&PWD='+s2);
      //Edit1.Text 常规网址.如:http://www.csdn.com
    end;
      

  10.   

    这个我知道,就是从form2的WebBrowser1控件默认打开页不知道怎么写
    比如直接传递http://www.csdn.com?UID=UserName&PWD=Password
    UserName和Password怎么传递 
      

  11.   

    刚才,又看了一下你的代码,FormLogin中的数据不必落地,可以直接传到FormMain中.
    procedure TForm1.FormShow(Sender: TObject);
    begin
      WebBrowser1.Navigate(Edit1.Text+'?UID='+LoginForm.EditName.Text+'&PWD='+LoginForm.EditPass.Text);
      //Edit1.Text 常规网址.如:http://www.csdn.com
    end;
      

  12.   

    我不经过formmain的Button1Click来传递,想进入formmain自动传递给WebBrowser1控件
      

  13.   

    //FrmLogin
    unit FrmLogin;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, DB, ADODB;type
      TFormLogin = class(TForm)
        GroupBox1: TGroupBox;
        Button1: TButton;
        Button2: TButton;
        Label1: TLabel;
        Label2: TLabel;
        EditName: TEdit;
        EditPass: TEdit;
        ADOQuery1: TADOQuery;
        procedure Button1Click(Sender: TObject);
      private    { Private declarations }
      public
        { Public declarations }  end;
    var
      FormLogin: TFormLogin;implementationuses FrmMain;{$R *.dfm}procedure TFormLogin.Button1Click(Sender: TObject);
    var
      f: TextFile;begin
      AdoQuery1.Active := False;
      AdoQuery1.SQL.Clear;
      AdoQuery1.SQL.Add('SELECT id FROM UserInfo WHERE UserName=''' + EditName.Text +
        ''' and Password=''' + EditPass.Text + '''');
      AdoQuery1.Open;
      if AdoQuery1.IsEmpty then //没有此用户
      begin
        ShowMessage('帐号错误!');
      end
      else
      begin
        AssignFile(f,'C:\tmp.txt');
        rewrite(f);
        WriteLn(f,EditName.Text);
        WriteLn(f,EditPass.Text);
        CloseFile(f);
        self.ModalResult := mrOk;  //返回mrOk,说明登陆成功   Application.ShowMainForm:=false;
       Form1.show;
      end;
      AdoQuery1.Active := False;  begin
      //Application.ShowMainForm:=false;   //隐藏主窗体  end;end;end.//FrmMainunit FrmMain;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient,
      IdHTTP, OleCtrls, SHDocVw, ComCtrls, StdCtrls, ExtCtrls, ImgList, ToolWin;type
      TForm1 = class(TForm)
        StatusBar1: TStatusBar;
        CoolBar1: TCoolBar;
        ToolBar1: TToolBar;
        Panel1: TPanel;
        Label1: TLabel;
        Label3: TLabel;
        Edit1: TEdit;
        Button1: TButton;
        ImageList1: TImageList;
        WebBrowser1: TWebBrowser;
        ToolButton1: TToolButton;
        ToolButton2: TToolButton;
        procedure WebBrowser1DownloadBegin(Sender: TObject);
        procedure WebBrowser1DownloadComplete(Sender: TObject);
        //procedure ToolButton2Click(Sender: TObject);
        //procedure ToolButton3Click(Sender: TObject);
        //procedure ToolButton4Click(Sender: TObject);
        //procedure ToolButton5Click(Sender: TObject);
        procedure Button1Click(Sender: TObject);
        procedure FormActivate(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementationuses FrmLogin;
    {$R *.dfm}
    procedure TForm1.FormActivate(Sender: TObject);
    begin
      if FormLogin.ShowModal <> mrOk then  //如果返回不成功
      begin
        Application.Terminate;//退出!
      end;
      begin
        Application.ShowMainForm:=false;   //隐藏主窗体
        FormLogin:=TFormLogin.Create(self);  //调用登陆窗体
        FormLogin.Show;
        end;
    end;procedure TForm1.WebBrowser1DownloadBegin(Sender: TObject);
    var
      //p:integer;
      //s:string;
      l: TStrings;
      s1,s2: string;
    begin
      l:= TStringList.Create;
      l.LoadFromFile('C:\tmp.txt');
      s1:= l[0];
      s2:= l[1];
    StatusBar1.Panels[0].Text:='正在连接:' + s1+s2;
    end;procedure TForm1.WebBrowser1DownloadComplete(Sender: TObject);beginStatusBar1.Panels[0].Text:='完成'+WebBrowser1.LocationURL;
    end;
    procedure TForm1.Button1Click(Sender: TObject); 
    var
      p:integer;
      s:string;
      l: TStrings;
      s1,s2: string;
    begin  l:= TStringList.Create;
      l.LoadFromFile('C:\tmp.txt');
      s1:= l[0];
      s2:= l[1];
      WebBrowser1.Navigate(s1+s2);
      Label3.Caption:=Copy(s,1,p -1);
      if l.Text='' then
      ShowMessage('地址不能为空');
    end;end.
      

  14.   


    procedure TForm1.FormShow(Sender: TObject);
    begin
      WebBrowser1.Navigate(Edit1.Text+'?UID='+LoginForm.EditName.Text+'&PWD='+LoginForm.EditPass.Text);
      //Edit1.Text 常规网址.如:http://www.csdn.com
    end;procedure TForm1.WebBrowser1DownloadBegin(Sender: TObject); 
    begin 
      StatusBar1.Panels[0].Text:='正在连接:' + WebBrowser1.LocationURL; 
    end; 
      

  15.   

    窗体运行顺序:
    Form.Create->Form.Activate->Form.Show
      

  16.   

    WebBrowser的运行顺序:
    WebBrowser.Navigate->WebBrowser.DownloadBegin->WebBrowser.DocumentComplete
      

  17.   

    procedure TForm1.FormShow(Sender: TObject);
    这句有错误!dl110帮忙帮到底吧,谢谢了!!
      

  18.   

    窗体运行顺序: 
    Form.Create->Form.Activate->Form.Show
    Form.Create:   创建窗体时发生
    Form.Activate: 窗体被激活时发生
    Form.Show:     窗体被显示时发生WebBrowser的运行顺序: 
    WebBrowser.Navigate->WebBrowser.DownloadBegin->WebBrowser.DocumentComplete
    WebBrowser.Navigate:         向服务器发送http请求
    WebBrowser.DownloadBegin:    开始从服务器接收回发信息
    WebBrowser.DocumentComplete: 接收完毕时发生
      

  19.   

    怎么没有Show我打点提示里面没有所以procedure TForm1.Show(Sender: TObject); 不知道怎么会错误
      

  20.   

    在FormMain属性窗口中有事件,双击OnShow,在里边写代码.
      

  21.   

    哈哈ok了太感谢 dl110了我马上给你们分,万分之感谢各位前辈!!