Inno Setup的:在TInputQueryWizardPage
我使用Inno Setup的我的程序创建的setup.exe组合框。我想在MS SQL Server中获得现有数据库的下拉列表(组合框)。但我不知道,我需要使用哪个自定义向导页面。我创建了具有服务器授权的向导页面。Inno Setup的:在TInputQueryWizardPage
如何最有效地做到这一点?我的代码:
[Code]
var
ServerDetailsPage: TInputQueryWizardPage;
procedure InitializeWizard;
begin
ServerDetailsPage := CreateInputQueryPage(wpSelectDir,
'', '', 'Please enter following data (SERVER) and click Next.');
ServerDetailsPage.Add('IP Address (SERVER)', False);
ServerDetailsPage.Add('Port Number (SERVER', False);
ServerDetailsPage.Add('Domain Name\User Name (SERVER)', False);
ServerDetailsPage.Add('Password (SERVER)', True);
ServerDetailsPage.Values[0] := '';
ServerDetailsPage.Values[1] := '';
ServerDetailsPage.Values[2] := '';
ServerDetailsPage.Values[3] := '';
end;
没有带组合框的现成定制页面。
您必须用组合框(TNewComboBox
)替换编辑框(TPasswordEdit
)。
类似于Multi-line edit in Inno Setup on page created by CreateInputQueryPage,该代码将是这样的:
var
ServerDetailsPage: TInputQueryWizardPage;
ServerComboBox: TNewComboBox;
procedure InitializeWizard;
begin
ServerDetailsPage :=
CreateInputQueryPage(
wpSelectDir, '', '', 'Please enter following data (SERVER) and click Next.');
ServerDetailsPage.Add('IP Address (SERVER)', False);
ServerDetailsPage.Add('Port Number (SERVER', False);
ServerDetailsPage.Add('Domain Name\User Name (SERVER)', False);
ServerDetailsPage.Add('Password (SERVER)', True);
ServerDetailsPage.Values[0] := '';
ServerDetailsPage.Values[1] := '';
ServerDetailsPage.Values[2] := '';
ServerDetailsPage.Values[3] := '';
{ Create TNewComboBox on the same parent control and the same location as edit box }
ServerComboBox := TNewComboBox.Create(ServerDetailsPage);
ServerComboBox.Parent := ServerDetailsPage.Edits[0].Parent;
ServerComboBox.Left := ServerDetailsPage.Edits[0].Left;
ServerComboBox.Top := ServerDetailsPage.Edits[0].Top;
ServerComboBox.Width := ServerDetailsPage.Edits[0].Width;
ServerComboBox.Height := ServerDetailsPage.Edits[0].Height;
ServerComboBox.TabOrder := ServerDetailsPage.Edits[0].TabOrder;
ServerComboBox.Items.Add('server1');
ServerComboBox.Items.Add('server2');
{ Hide the original edit box }
ServerDetailsPage.PromptLabels[0].FocusControl := ServerComboBox;
{ Link the label to the combo box }
{ (has a practical effect only if there were a keyboard accelerator on the label) }
ServerDetailsPage.Edits[0].Visible := False;
end;
现在,是指组合框的值,你当然不能用ServerDetailsPage.Values[0]
了。改为使用ServerComboBox.Text
。
非常感谢你。我寻求它。 –
不客气。现在你有15的声望,你也可以upvote有用的帖子:) –
如果你有问题,请在单独的帖子。不要滥用评论! –
所以你要替换* “的IP地址(服务器)” * ** **编辑框用** **组合框,是正确的? –
@马丁Prikryl,是 –
OK,这是一个问题。获取MS SQL数据库列表是另一个问题。单独询问。而且它比Inno Setup问题更像MS SQL问题,所以请确保您也标记了它[tag:sql-server]。 –