>

Inno Setup을 사용하여 프로그램에 setup.exe를 만듭니다. MS SQL Server에서 기존 데이터베이스의 드롭 다운 목록 (콤보 상자)을 얻고 싶습니다. 그러나 어떤 사용자 정의 마법사 페이지를 사용해야하는지 모르겠습니다. 서버 인증이있는 마법사 페이지를 만들었습니다.

어떻게하면 좋을까요? 내 코드 :

<프리 클래스 = "prettyprint 오버라이드 파스칼 LANG"> [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;

  • 답변 # 1

    콤보 상자가있는 기성품 맞춤 페이지가 없습니다.

    편집 상자를 교체해야합니다 ( TPasswordEdit ) 콤보 상자 ( TNewComboBox ) ).

    CreateInputQueryPage에 의해 생성 된 페이지의 Inno Setup에서 다중 라인 편집과 유사하게 코드는 다음과 같습니다.

    <프리 클래스 = "prettyprint 오버라이드 파스칼 LANG"> 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 사용  대신

    <시간>

  • 이전 전체 메모리를 차지한 후 SQL Server가 완전히 느려짐
  • 다음 encryption - 사용자 정의 인코딩 알고리즘으로 인증서 생성