2017-08-01 25 views
1

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; 
+0

ですから、* "IPアドレス(SERVER)" **コンボボックス**と* **編集**ボックスを交換したい、正しいということでしょうか? –

+0

@ Martin Prikryl、はい –

+0

OK、それは1つの質問です。 MS SQLデータベースのリストを取得することも別の質問です。別にそれを求めてください。そして、それはInno Setupの質問よりもMS SQLの質問の方が多いので、あなたもタグを付けてください[tag:sql-server]。 –

答えて

1

コンボボックスを備えた既製のカスタムページはありません。

編集ボックス(TPasswordEdit)をコンボボックス(TNewComboBox)に置き換える必要があります。以下のよう

同様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を使用してください。


enter image description here

+0

ありがとうございました。私はそれを求めた。 –

+0

ようこそ。あなたが15の評判を得たので、役に立つ記事をupvoteすることもできます:) –

+0

質問がある場合は、別の投稿で質問してください。コメントを悪用しないでください! –