在InnoSetup中,我想顯示已完成頁面上的組合框,它顯示已安裝的組件。 您可以選擇「無」或任何已安裝的組件,並在點擊完成時啓動相關程序。InnoSetup動態組合框,檢查選擇哪個項目並執行程序
這是我到目前爲止的代碼:
procedure CurPageChanged(CurPageID: Integer);
var
NewComboBox1: TNewComboBox;
begin
if (CurPageID = wpFinished) then begin
NewComboBox1 := TNewComboBox.Create(WizardForm);
with NewComboBox1 do begin
Parent := WizardForm.FinishedPage;
Left := ScaleX(256);
Top := ScaleY(208);
Width := ScaleX(145);
Height := ScaleY(21);
ItemIndex := 0;
Style := csDropDownList;
Items.Add('None');
if IsComponentSelected('1') then
Items.Add('Component 1');
if IsComponentSelected('2') then
Items.Add('Component 2');
if IsComponentSelected('3') then
Items.Add('Component 3');
end;
end;
end;
首先,我想設置爲「無」自動選擇。當頁面顯示時。我查了很多Pascal論壇,但沒有任何解決方案,像NewComboBox1.ItemSelected = 0(或類似的,不記得沒錯......)。那麼我如何實現這一目標呢?
然後我不知道如何使程序啓動時點擊完成。我以爲
function NextButtonClick
可能會幫助,但沒有下一步按鈕在設置工作。
也許還有一個問題,因爲根據選擇了哪些組件創建了列表,所以如果沒有選擇組件1但未選擇組件2,則項目1不是組件1。
我以爲人們可以通過使物品不可見而不是根本不創造它來解決這個問題。
我查看了IS幫助文件中的支持類參考,但沒有找到任何有助於我的內容。
我期待您的回答!
您正在設置'ItemIndex'太早。您需要提供組合框,然後設置項目索引。因爲沒有索引爲0的項目,因此在當前代碼中默認設置ItemIndex失敗。 – TLama
好吧,我在最後設置ItemIndex,現在None會自動顯示!感謝你!現在我只需要知道如何獲得所選項目的值... – user1662035
您不打算獲得*值*,您想要打開在組合框中選擇的組件後面的文件* don你呢? – TLama