添加一个单元文件,
设置全局变量,
在Form的ShowModal中设置值就可以了。

解决方案 »

  1.   

    同意楼上,你在public里设一个变量。 然后在这个模式窗体里。改变这个值就行了。
    在模式窗体里uses 一下调用窗体。
      

  2.   

    我是这样做的:在那个Modal窗口中定义函数:void __fastcal Execute(AnsiString& ReturnValue);
    {
      this->ShowModal();  ReturnValue=Edit1->Text;
    }然后在主窗口中调用Execute就可以了:AnsiString Password;PassForm->Execute(Password);//....
      

  3.   

    to searoom:
       你也可以不用全局变量。而使用以下的办法:unit CommNameUnit;interfaceuses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
      StdCtrls, Buttons;type
      TCommPortForm = class(TForm)
        Label1: TLabel;
        ComboBox1: TComboBox;
        BitBtn1: TBitBtn;
        BitBtn2: TBitBtn;
        procedure FormShow(Sender: TObject);
        procedure BitBtn1Click(Sender: TObject);
        procedure FormCreate(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;
    function ShowComPort(const AStr: String): String;
    { 将此单元名添加到调用单元的uses中      }
    { 需要调用这个窗体的地方使用如下的语法:}
    { RelStr := ShowComPort(AString);       }implementationvar
      ComPort: String;
      {$R *.DFM}function ShowComPort(const AStr: String): String;
    var
      ComPortFrm: TCommPortForm;
    begin
      ComPortFrm := TCommPortForm.Create(Application);
      with ComPortFrm do
        try
          ComPort := AStr;
          Position := poScreenCenter;
          ShowModal;
        finally
          Result := ComPort;
          Free;
        end;
    end;procedure TCommPortForm.FormShow(Sender: TObject);
    var
      i:      Integer;
      COMx:   String;
      Handle: THandle;
    begin
      ComboBox1.Clear;
      for i := 1 to 128 do
        try
          COMx   := Format('COM%d', [i]);
          //test COMx port whether it can use
          Handle := CreateFile(PChar(COMx), GENERIC_READ or GENERIC_WRITE,
            0, NIL, OPEN_EXISTING, FILE_FLAG_OVERLAPPED, 0);
          if Handle = INVALID_HANDLE_VALUE then
            Continue
          else
            CloseHandle(Handle);
          ComboBox1.Items.Add(COMx);
        except
        end;
      ComboBox1.Text := ComPort;
    end;procedure TCommPortForm.BitBtn1Click(Sender: TObject);
    begin
      ComPort := ComboBox1.Text;
    end;
      

  4.   

    方法太多了,多的都不知道哪个才是正确的了
    不过我认为在窗口类上添加属性才是比较正确的方法,把你的变量放在public中或者放在private中用published property发布,因为我们调用modal返回值时都是用form.modalresult,所以调用你的值时最好用form.svar1……
      

  5.   

    uses unit1;
    if form1.showmodal=mrok then
      begin
         ss:=form1.edit1.text;
      end;