Еще один вопрос. Если я создаю всплывающее диалоговое окно с изображением, я нахожу, что оно работает только тогда, когда появляется изображение (верхнее в списке изображений). Если выбрано другое изображение, программа сообщит, что «изображение, использованное в выражении, не существует». Я не могу понять логику этой ошибки.
Ниже приведен модифицированный код, вставленный в ответ на предыдущий вопрос. Он может хорошо работать, если выбрано первое изображение, но появляется сообщение об ошибке, если выбрано второе изображение.
Я использую GSM 2.30.xxxx
Class CMyDLG : UIframe
{
TagGroup DLG,DLGItems,imgPop
object Init(object self)
{
DLG = DLGCreateDialog("Test",DLGItems)
imgPop = DLGCreateImagePopup()
DLGItems.DLGAddElement( imgPop )
return self.super.init(DLG)
}
image GetSelectedImage( object self )
{
string selectedImageLabel
imgPop.DLGGetValue(selectedImageLabel) //DLGGetValue can return the label of the image diretly
Result("\n" + selectedImageLabel)
// From the string, get the label
//string label = selectedImageLabel.left( selectedImageLabel.find(":") )
//Result("\n" + label)
// From label, return image
//return FindImageByLabel(label)
return FindImageByLabel(selectedImageLabel)
}
}
// main
{
object dlg = Alloc(CMyDLG).Init()
dlg.Pose()
image selected = dlg.GetSelectedImage()
if ( selected.ImageIsValid() )
{
selected.SetName( "Selected" + random())
selected.ShowImage()
}
else Throw( "Error, nothing selected." )
}