public function __set($strName, $mixValue)
{
$this->blnModified = true;
switch ($strName) {
case "SelectedIndex":
try {
$mixValue = QType::Cast($mixValue, QType::Integer);
} catch (QInvalidCastException $objExc) {
$objExc->IncrementOffset();
throw $objExc;
}
// Special Case
if ($mixValue == -1) {
$mixValue = null;
}
if ($mixValue < 0 || $mixValue > count($this->objItemsArray) - 1) {
throw new QIndexOutOfRangeException($mixValue, "SelectedIndex");
}
for ($intIndex = 0; $intIndex < count($this->objItemsArray); $intIndex++) {
if ($mixValue == $intIndex) {
$this->objItemsArray[$intIndex]->Selected = true;
} else {
$this->objItemsArray[$intIndex]->Selected = false;
}
}
return $mixValue;
break;
case "SelectedName":
foreach ($this->objItemsArray as $objItem) {
if ($objItem->Name == $mixValue) {
$objItem->Selected = true;
} else {
$objItem->Selected = false;
}
}
return $mixValue;
break;
case "SelectedValue":
foreach ($this->objItemsArray as $objItem) {
if ($objItem->Value == $mixValue) {
$objItem->Selected = true;
} else {
$objItem->Selected = false;
}
}
return $mixValue;
break;
case "SelectedNames":
try {
$mixValue = QType::Cast($mixValue, QType::ArrayType);
} catch (QInvalidCastException $objExc) {
$objExc->IncrementOffset();
throw $objExc;
}
foreach ($this->objItemsArray as $objItem) {
$objItem->Selected = false;
foreach ($mixValue as $mixName) {
if ($objItem->Name == $mixName) {
$objItem->Selected = true;
break;
}
}
}
return $mixValue;
break;
case "SelectedValues":
try {
$mixValue = QType::Cast($mixValue, QType::ArrayType);
} catch (QInvalidCastException $objExc) {
$objExc->IncrementOffset();
throw $objExc;
}
foreach ($this->objItemsArray as $objItem) {
$objItem->Selected = false;
foreach ($mixValue as $mixName) {
if ($objItem->Value == $mixName) {
$objItem->Selected = true;
break;
}
}
}
return $mixValue;
break;
case "SelectedIndexes":
try {
$intIndexArray = QType::Cast($mixValue, QType::ArrayType);
} catch (QInvalidCastException $objExc) {
$objExc->IncrementOffset();
throw $objExc;
}
//First remove all indexes
$this->SelectedIndex = -1;
//Assign selected
foreach ($intIndexArray as $intIndex) {
if ($this->objItemsArray[$intIndex]) {
$this->objItemsArray[$intIndex]->Selected = true;
} else {
throw new QIndexOutOfRangeException($intIndex, "SelectedIndexes");
}
}
break;
default:
try {
parent::__set($strName, $mixValue);
break;
} catch (QCallerException $objExc) {
$objExc->IncrementOffset();
throw $objExc;
}
}
}