2010-12-14 2 views
3

Привет Я работаю с wix для создания установки. Мне нужен пользовательский диалог, чтобы пользователь мог определить порт. В диалоговом окне есть элемент управления типа MaskedEdit, где он должен написать порт. Свойство, связанное с элементом управления, имеет заданное по умолчанию значение. Проблема в том, что когда пользователь нажимает следующую кнопку, я хотел бы убедиться, что поле порта имеет значение или показать ему предупреждение. Код для управления выглядит следующим образом:Проверьте, содержит ли элемент управления MaskedEdit текст

<Property Id="DataStoragePort">4323</Property> 

    <Dialog Id="DataStoragePortConfig" Width="370" Height="270" Title="CellaVision DM1 Setup"> 
    <Control Id="Next" Type="PushButton" X="236" Y="243" Width="56" Height="17" Default="yes" Text="Next"> 
    </Control> 
    <Control Id="Back" Type="PushButton" X="180" Y="243" Width="56" Height="17" Text="Back"> 
    </Control> 
    <Control Id="Cancel" Type="PushButton" X="304" Y="243" Width="56" Height="17" Cancel="yes" Text="Cancel"> 
     <Publish Event="SpawnDialog" Value="CancelDlg">1</Publish> 
    </Control> 

    <Control Id="Title" Type="Text" X="15" Y="6" Width="200" Height="15" Transparent="yes" NoPrefix="yes" Text="{\WixUI_Font_Title}Data Storage Configuration" /> 
    <Control Id="BannerBitmap" Type="Bitmap" X="0" Y="0" Width="370" Height="44" TabSkip="no" Text="!(loc.InstallDirDlgBannerBitmap)" /> 
    <Control Id="BannerLine" Type="Line" X="0" Y="44" Width="370" Height="0" /> 
    <Control Id="BottomLine" Type="Line" X="0" Y="234" Width="370" Height="0" /> 
    <Control Id="DSDescription" Type="Text" X="20" Y="60" Width="250" Height="13" NoPrefix="yes" Text="Enter the port that the Data Storage Service should run on" /> 
    <Control Id="DSPort" Type="Text" X="20" Y="80" Width="20" Height="13" NoPrefix="yes" Text="Port:" /> 
    <Control Id="DSText" Type="MaskedEdit" Text="#####" X="45" Y="78" Width="70" Height="14" Property="DataStoragePort" /> 
    </Dialog> 

и обработка нажмите на следующую кнопку выглядеть следующим образом:

 <Publish Dialog="DataStoragePortConfig" Control="Back" Event="NewDialog" Value="CustomizeDlg">1</Publish> 
    <Publish Dialog="DataStoragePortConfig" Control="Next" Event="NewDialog" Value="VerifyReadyDlg">1</Publish> 

но на следующий клик Я хотел бы, чтобы убедиться, что Свойство DataStoragePort не является пустой строкой. Какие-либо предложения? С уважением Daniel

ответ

2

Пустой маскированный элемент управления редактирования устанавливает его свойство в строку шаблона с пробелами вместо «#» и «?». Например, если для «Текст» установлено значение «#####», пустое значение равно

"  "
. Если «Текст» установлен на «### - ###», то пустым значением является
" - "

В вашем случае вы можете использовать это условие:

DataStoragePort <> "  "
+0

спасибо. Это хорошо работает. Есть ли способ удалить пустые пространства из свойства? Порт, который пользователь устанавливает, может быть длиной всего 3-4 цифры. –

+0

Вы можете попробовать использовать настраиваемое действие (C++ DLL или VBScript). В DLL вы можете использовать функции MsiGetProperty() и MsiSetProperty(). В VBScript вы можете использовать Session.Property («PROPERTY_NAME»). –