TEdit值变量

时间:2014-02-11 10:06:55

标签: inno-setup pascalscript

我认为这是一个简单的问题,只是无法理解它。

尝试使用单个页面编写脚本。

组合框和编辑框。

组合框工作正常,我可以根据所选内容获取内容。

我的编辑框但是,如果框中的文本被更改,我无法更新变量。

[Code]
var

server: string;

procedure InitializeWizard;
var
Edit: TNewEdit;

begin
  server := '127.0.0.1';

  Edit := TNewEdit.Create(CustomPage);
  Edit.Top := DescLabel2.Top + DescLabel2.Height + 6; 
  Edit.Width := CustomPage.SurfaceWidth div 2 - ScaleX(8);
  Edit.Text := server; 
  Edit.Parent := CustomPage.Surface;

无法弄清楚我做错了什么。

1 个答案:

答案 0 :(得分:0)

也许我的一段代码会有所帮助:

// The name of the virtual machine
Edit1 := TEdit.Create(WizardForm);
with Edit1 do
 begin
  Parent     := Panel3;
  Left       := ScaleX(Offset);
  Top        := ScaleY(0*LineHeight) + ScaleY(5);
  Width      := ScaleX(145);
  Height     := LineHeight;
  Text       := '';
  ShowHint   := True;
  Hint       := ExpandConstant('{cm:VBoxConfig1Hint}');
  TabOrder   := 0;
  OnExit     := @GetVM_Name;
  OnKeyPress := @CheckEditInput;
 end;

标记OnExit !!这篇文章你忘了编程。

Procedure GetVM_Name(Sender: TObject);
// Get the machineName
{}
begin
 VirtualMachineName := AddQuotes(Edit1.Text);
end;

为避免不必要的输入,请创建一个on checkinput例程。 示例如下:

Procedure CheckEditInput(Sender: TObject; var Key: char);
// This procedure checks if the character entered is a wanted one
{} 
begin
 if (Key = '{') or (Key = '}') or (Key = '<') or (Key = '>') then
  begin
   Beep;
   Key := #0;
  end;
 if (Key = '[') or (Key = ']') or (Key = '`') or (Key = '~') then
  begin
   Beep;
   Key := #0;
  end;
 if (Key = '(') or (Key = ')') or (Key = '#') or (Key = '%') or (Key = '*') then
  begin
   Beep;
   Key := #0;
  end;
 if (Key = ';') or (Key = ':') or (Key = ',') or (Key = '?') or (Key = '@') then
  begin
   Beep;
   Key := #0;
  end;
end;