添加一个单元文件,
设置全局变量,
在Form的ShowModal中设置值就可以了。
设置全局变量,
在Form的ShowModal中设置值就可以了。
解决方案 »
- 如何控制程序中语言(简体中文,英文,繁体中文)
- 怎样新建一个空的DBGrid?
- delphi界面大小控制
- delphi 2005如何安装第三方控件
- ADO批量更新主從表時只更新一筆記錄,為何(如果沒有建立主從關係就可以批量更新)請高手指點一下!!!!
- 怎样可以拦截声卡的输入,以便获得正在录制的声音的波形?
- 为什么还是出现'interface not support'的错误?'
- 触摸屏
- 司南 <[email protected]> 请来
- 我用Delphi连接有密码的Access数据库时为什么联不上?
- Error:::::::Project AmeChinese.exe raised exeception class EInvalidPointer with message 'Invalid pointer operation'.
- 我想做一菜单,可以像工具栏一样拖动,怎么实现?
在模式窗体里uses 一下调用窗体。
{
this->ShowModal(); ReturnValue=Edit1->Text;
}然后在主窗口中调用Execute就可以了:AnsiString Password;PassForm->Execute(Password);//....
你也可以不用全局变量。而使用以下的办法: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;
不过我认为在窗口类上添加属性才是比较正确的方法,把你的变量放在public中或者放在private中用published property发布,因为我们调用modal返回值时都是用form.modalresult,所以调用你的值时最好用form.svar1……
if form1.showmodal=mrok then
begin
ss:=form1.edit1.text;
end;